developers
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 8 participants
- 6811 discussions
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2744)
by Michael Widenius 13 Oct '09
by Michael Widenius 13 Oct '09
13 Oct '09
#At lp:maria based on revid:knielsen@knielsen-hq.org-20091006183755-y08lid6fg8mnr8sk
2744 Michael Widenius 2009-10-13
Force restart before maria_showlog_error to get rid of status from previous connections
This fixes a race condition in the test system
added:
mysql-test/suite/maria/t/maria_showlog_error-master.opt
modified:
mysql-test/include/maria_empty_logs.inc
mysql-test/include/wait_for_status_var.inc
mysql-test/mysql-test-run.pl
per-file messages:
mysql-test/include/maria_empty_logs.inc
Added comment
mysql-test/include/wait_for_status_var.inc
Fixed type in variable name. Add ' around variables for better error message
mysql-test/mysql-test-run.pl
Remove -skip-falcon (not to be used), add skip-pbxt to bootstrap
mysql-test/suite/maria/t/maria_showlog_error-master.opt
Force restart before maria_showlog_error to get rid of status from previous connection
=== modified file 'mysql-test/include/maria_empty_logs.inc'
--- a/mysql-test/include/maria_empty_logs.inc 2009-02-19 09:01:25 +0000
+++ b/mysql-test/include/maria_empty_logs.inc 2009-10-13 12:47:17 +0000
@@ -1,6 +1,10 @@
# Maria help script.
# Cleans up all logs to give recovery a fresh start.
-
+#
+# Note that this script relies on the number of threads connect at start of
+# this script, so one should run this script with a freshly started server
+# for it to work.
+#
# API: set mel_keep_control_file=1 if want to keep control file;
# uses vardir, port and socket.
=== modified file 'mysql-test/include/wait_for_status_var.inc'
--- a/mysql-test/include/wait_for_status_var.inc 2009-04-03 21:33:13 +0000
+++ b/mysql-test/include/wait_for_status_var.inc 2009-10-13 12:47:17 +0000
@@ -51,11 +51,12 @@ if (`SELECT '$_status_var_comparsion' =
}
let $_show_status_value= query_get_value("SHOW $status_type STATUS LIKE '$status_var'", Value, 1);
+
while (`SELECT NOT('$_show_status_value' $_status_var_comparsion '$status_var_value')`)
{
if (!$_status_timeout_counter)
{
- --echo **** ERROR: failed while waiting for $status_type $status_var $_status_var_comparison $status_var_value ****
+ --echo **** ERROR: failed while waiting for '$status_type' '$status_var' $_status_var_comparsion '$status_var_value' ****
--echo Note: the following output may have changed since the failure was detected
--echo **** Showing STATUS, PROCESSLIST ****
eval SHOW $status_type STATUS LIKE '$status_var';
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-10-06 18:37:55 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-13 12:47:17 +0000
@@ -2826,7 +2826,7 @@ sub mysql_install_db {
mtr_add_arg($args, "--basedir=%s", $install_basedir);
mtr_add_arg($args, "--datadir=%s", $install_datadir);
mtr_add_arg($args, "--loose-skip-innodb");
- mtr_add_arg($args, "--loose-skip-falcon");
+ mtr_add_arg($args, "--loose-skip-pbxt");
mtr_add_arg($args, "--loose-skip-ndbcluster");
mtr_add_arg($args, "--loose-skip-maria");
mtr_add_arg($args, "--disable-sync-frm");
=== added file 'mysql-test/suite/maria/t/maria_showlog_error-master.opt'
--- a/mysql-test/suite/maria/t/maria_showlog_error-master.opt 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/maria/t/maria_showlog_error-master.opt 2009-10-13 12:47:17 +0000
@@ -0,0 +1 @@
+--force-restart
1
0
With WL36 and WL40 we have:
mysqlbinlog options:
--database=db
--rewrite-db=db_from->db_to
--do-table=db.tbl
--ignore-table=db.tbl
--wild-do-table=pattern.pattern
--wild-ignore-table=pattern.pattern
replication options:
--replicate-rewrite-db=db_from->db_to
--replicate-do-db=db
--replicate-ignore-db=db
--replicate-do-table=tbl
--replicate-ignore-table=tbl
--replicate-wild-do-table=db.tbl
--replicate-wild-ignore-table=db.tbl
1. In mysqlbinlog we do not have --do_db and --ignore_db options.
Does it mean that instead it is supposed to use:
--replicate-wild-do-table=db.%
--replicate-wild-ignore-table=db.%
respectively?
Compared with other options, --database option looks like
a "foreign body" :
- contrary to other options, it allows to specify only one
database (with multiple --database's only the last one is
used);
- having with --database an analog of do_db, we have no
similar analog of ignore_db.
2. In replication two functions are used for filtering databases:
- db_ok(const char* db) which matches db only with do-db and
ignore-db rules;
- db_ok_with_wild_table(const char* db) which matches db only
with wild-do-table=db.% and wild-ignore-table=db.% rules.
This function is applied only to CREATE DB, DROP DB, and
ALTER DATABASE statements.
In mysqlbinlog, should we follow the same scheme, namely:
- db_ok() for matching db with --database option only;
- db_ok_with_wild_table() for statements listed above?
3. According to replication filtering rules, --replicate-rewrite_db
is always done _before_ other --replicate-* rules are tested;
see explanation for --replicate-rewrite-db in RefMan (16.1.3.3.
Replication Slave Options and Variables), or the following piece
of code in og_event.cc:
int Table_map_log_event::do_apply_event(Relay_log_info const* rli)
{
RPL_TABLE_LIST* table_list;
...
strmov(table_list->db, rpl_filter->get_rewrite_db(m_dbnam, &dummy_len));
...
if (...!rpl_filter->db_ok(table_list->db) ...)
...
}
And what about --database + rewrite-db for mysqlbinlog? If we mean to
output only database xxx with renaming it to yyy, should we use
(1) mysqlbinlog --database=xxx --rewrite-db=xxx->yyy
or
(2) mysqlbinlog --database=yyy --rewrite-db=xxx->yyy
In current WL36 design it is supposed that (1) should be used
(surely, this can easily be redesigned). But this becomes confused
with using of --wild-do-table + replication filtering rules,
for which we should use:
(3) --wild-do-table=yyy.% --rewrite-db=xxx->yyy
4
5
[Maria-developers] Rev 2787: Cosmetic fixes to win/make_mariadb_win_dist in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 12 Oct '09
by Sergey Petrunya 12 Oct '09
12 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2787
revision-id: psergey(a)askmonty.org-20091012165020-wy00cdvjz603quz5
parent: psergey(a)askmonty.org-20091012131431-24eoadm2kfeorp6q
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Mon 2009-10-12 20:50:20 +0400
message:
Cosmetic fixes to win/make_mariadb_win_dist
=== modified file 'win/make_mariadb_win_dist'
--- a/win/make_mariadb_win_dist 2009-10-12 13:14:31 +0000
+++ b/win/make_mariadb_win_dist 2009-10-12 16:50:20 +0000
@@ -4,6 +4,7 @@
# This is a script that one needs to run in the source tarball to build
# a MariaDB release for Windows
#
+
set -e
if [ ! -d win/data ] ; then
@@ -67,6 +68,6 @@
if [ $RES ] ; then
echo "Archive contents differ from the standard file list, check the diff output above"
else
- echo "Archive contents match the standard list"
+ echo "Archive contents match the standard list, OK"
fi
1
0
[Maria-developers] Rev 2786: Fix typo bug in make_mariadb_win_dist in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 12 Oct '09
by Sergey Petrunya 12 Oct '09
12 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2786
revision-id: psergey(a)askmonty.org-20091012131431-24eoadm2kfeorp6q
parent: psergey(a)askmonty.org-20091012112648-m5ios3dfizjipeir
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Mon 2009-10-12 17:14:31 +0400
message:
Fix typo bug in make_mariadb_win_dist
=== modified file 'win/make_mariadb_win_dist'
--- a/win/make_mariadb_win_dist 2009-10-12 11:26:48 +0000
+++ b/win/make_mariadb_win_dist 2009-10-12 13:14:31 +0000
@@ -53,7 +53,7 @@
http://askmonty.org/wiki/images/5/57/Mariadb-5.1-pre-beta-file-list-r2.txt.…
gunzip base.list.gz
unzip ../$ZIPFILE
-(cd $ZIPNAME; /bin/find . | sort ) > new.list
+(cd $ZIPCONTENT; /bin/find . | sort ) > new.list
diff -u base.list new.list || true
RES=$?
1
0
[Maria-developers] Rev 2785: Fix win32 binary zipfile name and contents to match the usual expectations in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 12 Oct '09
by Sergey Petrunya 12 Oct '09
12 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2785
revision-id: psergey(a)askmonty.org-20091012112648-m5ios3dfizjipeir
parent: psergey(a)askmonty.org-20091012090353-zb2ctgd7u421btxq
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Mon 2009-10-12 15:26:48 +0400
message:
Fix win32 binary zipfile name and contents to match the usual expectations
=== modified file 'win/make_mariadb_win_dist'
--- a/win/make_mariadb_win_dist 2009-10-12 09:03:53 +0000
+++ b/win/make_mariadb_win_dist 2009-10-12 11:26:48 +0000
@@ -28,23 +28,36 @@
echo Version string: $VER.
-ZIPNAME=mariadb-$VER-win32-noinstall
-ZIPFILE="$ZIPNAME.zip"
-sh -x scripts/make_win_bin_dist $ZIPNAME
+# Remove '-maria-' from version number
+VER_NO_MARIA=${VER/maria-/}
+
+# We want the final zip to be named like this:
+# mariadb-noinstall-5.1.38-win32.zip
+ZIPNAME=mariadb-noinstall-$VER_NO_MARIA-win32
+ZIPFILE=$ZIPNAME.zip
+
+# The top directory inside the zip should be called like this:
+# mariadb-5.1-38-win32
+ZIPCONTENT=mariadb-$VER_NO_MARIA-win32
+
+# This will make $ZIPCONTENT.zip
+sh -x scripts/make_win_bin_dist $ZIPCONTENT
+
+mv $ZIPCONTENT.zip $ZIPFILE
rm -rf unpack
mkdir unpack
cd unpack
wget -O base.list.gz \
-http://askmonty.org/wiki/images/6/6c/Mariadb-5.1-pre-beta-file-list.txt.gz
+http://askmonty.org/wiki/images/5/57/Mariadb-5.1-pre-beta-file-list-r2.txt.gz
gunzip base.list.gz
unzip ../$ZIPFILE
(cd $ZIPNAME; /bin/find . | sort ) > new.list
-set +x
+
diff -u base.list new.list || true
RES=$?
-set -x
+
cd ..
rm -rf unpack
1
0
[Maria-developers] Rev 2784: Fix typo bug, s/$ZIPFILE/$ZIPNAME/ in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 12 Oct '09
by Sergey Petrunya 12 Oct '09
12 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2784
revision-id: psergey(a)askmonty.org-20091012090353-zb2ctgd7u421btxq
parent: psergey(a)askmonty.org-20091012071523-cbvawl22ygnuajpy
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Mon 2009-10-12 13:03:53 +0400
message:
Fix typo bug, s/$ZIPFILE/$ZIPNAME/
=== modified file 'win/make_mariadb_win_dist'
--- a/win/make_mariadb_win_dist 2009-10-12 07:15:23 +0000
+++ b/win/make_mariadb_win_dist 2009-10-12 09:03:53 +0000
@@ -30,7 +30,7 @@
ZIPNAME=mariadb-$VER-win32-noinstall
ZIPFILE="$ZIPNAME.zip"
-sh -x scripts/make_win_bin_dist $ZIPFILE
+sh -x scripts/make_win_bin_dist $ZIPNAME
rm -rf unpack
mkdir unpack
@@ -48,6 +48,7 @@
cd ..
rm -rf unpack
+ls -lah $ZIPFILE
echo "$ZIPFILE is the Windows noinstall binary zip"
if [ $RES ] ; then
1
0
[Maria-developers] Rev 2783: Remove leftover "echo" in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 12 Oct '09
by Sergey Petrunya 12 Oct '09
12 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2783
revision-id: psergey(a)askmonty.org-20091012071523-cbvawl22ygnuajpy
parent: psergey(a)askmonty.org-20091011202508-f2e0zh96a4kuhin2
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Mon 2009-10-12 11:15:23 +0400
message:
Remove leftover "echo"
=== modified file 'win/make_mariadb_win_dist'
--- a/win/make_mariadb_win_dist 2009-10-11 20:25:08 +0000
+++ b/win/make_mariadb_win_dist 2009-10-12 07:15:23 +0000
@@ -30,7 +30,7 @@
ZIPNAME=mariadb-$VER-win32-noinstall
ZIPFILE="$ZIPNAME.zip"
-echo sh -x scripts/make_win_bin_dist $ZIPFILE
+sh -x scripts/make_win_bin_dist $ZIPFILE
rm -rf unpack
mkdir unpack
1
0
[Maria-developers] Rev 2779: Add win/make_mariadb_win_dist which is to be used to make windows in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 12 Oct '09
by Sergey Petrunya 12 Oct '09
12 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2779
revision-id: psergey(a)askmonty.org-20091011101606-glp2z5pybvgm6ggf
parent: knielsen(a)knielsen-hq.org-20091011093610-q411mulr5zdckdam
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Sun 2009-10-11 14:16:06 +0400
message:
Add win/make_mariadb_win_dist which is to be used to make windows
binary distribution zips.
=== added file 'win/make_mariadb_win_dist'
--- a/win/make_mariadb_win_dist 1970-01-01 00:00:00 +0000
+++ b/win/make_mariadb_win_dist 2009-10-11 10:16:06 +0000
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+#
+# This is a script that one needs to run in the source tarball to build
+# a MariaDB release for Windows
+#
+set -e
+
+if [ ! -d win/data ] ; then
+ echo This doesnt seem to be source tarball.
+ echo This script should be run from the top directory of the source tarball
+ echo that was produced by 'make dist'
+ exit 1;
+fi
+
+set -x
+
+win/configure-mariadb.sh
+
+cmake -G "Visual Studio 9 2008"
+
+devenv MySQL.sln /build RelWithDebInfo
+devenv MySQL.sln /build Debug
+
+# TODO extract version number
+VER=`cat configure.in |
+ perl -e 'while (<>) { if (/^AM_INIT_AUTOMAKE\([a-z ]*, *([0-9a-z\.-]+)/) { print "$1\n"; exit(0)} } ; exit 1'`
+
+echo Version string: $VER.
+
+ZIPNAME=mariadb-$VER-win32-noinstall
+ZIPFILE="$ZIPNAME.zip"
+echo sh -x scripts/make_win_bin_dist $ZIPFILE
+
+rm -rf unpack
+mkdir unpack
+
+cd unpack
+wget -O base.list.gz \
+http://askmonty.org/wiki/images/6/6c/Mariadb-5.1-pre-beta-file-list.txt.gz
+gunzip base.list.gz
+unzip ../$ZIPFILE
+(cd $ZIPNAME; /bin/find . | sort ) > new.list
+set +x
+diff -u base.list new.list || true
+RES=$?
+set -x
+cd ..
+
+rm -rf unpack
+echo "$ZIPFILE is the Windows noinstall binary zip"
+
+if [ $RES ] ; then
+ echo "Archive contents differ from the standard file list, check the diff output above"
+else
+ echo "Archive contents match the standard list"
+fi
+
2
1
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2744) WL#24
by Igor Babaev 12 Oct '09
by Igor Babaev 12 Oct '09
12 Oct '09
#At lp:maria based on revid:knielsen@knielsen-hq.org-20091006183755-y08lid6fg8mnr8sk
2744 Igor Babaev 2009-10-11
The main patch for WL#24:
"index_merge: fair choice between index_merge union and range access"
added:
mysql-test/include/world.inc
mysql-test/include/world_schema.inc
mysql-test/r/range_vs_index_merge.result
mysql-test/r/range_vs_index_merge_innodb.result
mysql-test/t/range_vs_index_merge.test
mysql-test/t/range_vs_index_merge_innodb.test
modified:
mysql-test/r/index_merge_myisam.result
sql/opt_range.cc
sql/sql_list.h
per-file messages:
mysql-test/include/world.inc
A new include file to upload the world database.
mysql-test/include/world_schema.inc
A new include file to create tables of the world database.
mysql-test/r/index_merge_myisam.result
The results for test cases testing the optimizations added in WL#24 for MyISAM.
mysql-test/r/range_vs_index_merge.result
The results for test cases testing the optimizations added in WL#24 for InnoDB.
mysql-test/t/range_vs_index_merge.test
Test cases to test the optimizations added in WL#24 for MyISAM.
mysql-test/t/range_vs_index_merge_innodb.test
Test cases to test the optimizations added in WL#24 for InnoDB.
sql/sql_list.h
Fixed a bug that did not allow adding a non-empty list to an empty list.
=== added file 'mysql-test/include/world.inc'
--- a/mysql-test/include/world.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/world.inc 2009-10-12 04:59:34 +0000
@@ -0,0 +1,5343 @@
+#
+# Populate the world database
+#
+
+# Table Country
+
+INSERT INTO Country VALUES
+('AFG','Afghanistan',652090.00,22720000,1),
+('NLD','Netherlands',41526.00,15864000,5),
+('ANT','Netherlands Antilles',800.00,217000,33),
+('ALB','Albania',28748.00,3401200,34),
+('DZA','Algeria',2381741.00,31471000,35),
+('ASM','American Samoa',199.00,68000,54),
+('AND','Andorra',468.00,78000,55),
+('AGO','Angola',1246700.00,12878000,56),
+('AIA','Anguilla',96.00,8000,62),
+('ATG','Antigua and Barbuda',442.00,68000,63),
+('ARE','United Arab Emirates',83600.00,2441000,65),
+('ARG','Argentina',2780400.00,37032000,69),
+('ARM','Armenia',29800.00,3520000,126),
+('ABW','Aruba',193.00,103000,129),
+('AUS','Australia',7741220.00,18886000,135),
+('AZE','Azerbaijan',86600.00,7734000,144),
+('BHS','Bahamas',13878.00,307000,148),
+('BHR','Bahrain',694.00,617000,149),
+('BGD','Bangladesh',143998.00,129155000,150),
+('BRB','Barbados',430.00,270000,174),
+('BEL','Belgium',30518.00,10239000,179),
+('BLZ','Belize',22696.00,241000,185),
+('BEN','Benin',112622.00,6097000,187),
+('BMU','Bermuda',53.00,65000,191),
+('BTN','Bhutan',47000.00,2124000,192),
+('BOL','Bolivia',1098581.00,8329000,194),
+('BIH','Bosnia and Herzegovina',51197.00,3972000,201),
+('BWA','Botswana',581730.00,1622000,204),
+('BRA','Brazil',8547403.00,170115000,211),
+('GBR','United Kingdom',242900.00,59623400,456),
+('VGB','Virgin Islands, British',151.00,21000,537),
+('BRN','Brunei',5765.00,328000,538),
+('BGR','Bulgaria',110994.00,8190900,539),
+('BFA','Burkina Faso',274000.00,11937000,549),
+('BDI','Burundi',27834.00,6695000,552),
+('CYM','Cayman Islands',264.00,38000,553),
+('CHL','Chile',756626.00,15211000,554),
+('COK','Cook Islands',236.00,20000,583),
+('CRI','Costa Rica',51100.00,4023000,584),
+('DJI','Djibouti',23200.00,638000,585),
+('DMA','Dominica',751.00,71000,586),
+('DOM','Dominican Republic',48511.00,8495000,587),
+('ECU','Ecuador',283561.00,12646000,594),
+('EGY','Egypt',1001449.00,68470000,608),
+('SLV','El Salvador',21041.00,6276000,645),
+('ERI','Eritrea',117600.00,3850000,652),
+('ESP','Spain',505992.00,39441700,653),
+('ZAF','South Africa',1221037.00,40377000,716),
+('ETH','Ethiopia',1104300.00,62565000,756),
+('FLK','Falkland Islands',12173.00,2000,763),
+('FJI','Fiji Islands',18274.00,817000,764),
+('PHL','Philippines',300000.00,75967000,766),
+('FRO','Faroe Islands',1399.00,43000,901),
+('GAB','Gabon',267668.00,1226000,902),
+('GMB','Gambia',11295.00,1305000,904),
+('GEO','Georgia',69700.00,4968000,905),
+('GHA','Ghana',238533.00,20212000,910),
+('GIB','Gibraltar',6.00,25000,915),
+('GRD','Grenada',344.00,94000,916),
+('GRL','Greenland',2166090.00,56000,917),
+('GLP','Guadeloupe',1705.00,456000,919),
+('GUM','Guam',549.00,168000,921),
+('GTM','Guatemala',108889.00,11385000,922),
+('GIN','Guinea',245857.00,7430000,926),
+('GNB','Guinea-Bissau',36125.00,1213000,927),
+('GUY','Guyana',214969.00,861000,928),
+('HTI','Haiti',27750.00,8222000,929),
+('HND','Honduras',112088.00,6485000,933),
+('HKG','Hong Kong',1075.00,6782000,937),
+('SJM','Svalbard and Jan Mayen',62422.00,3200,938),
+('IDN','Indonesia',1904569.00,212107000,939),
+('IND','India',3287263.00,1013662000,1109),
+('IRQ','Iraq',438317.00,23115000,1365),
+('IRN','Iran',1648195.00,67702000,1380),
+('IRL','Ireland',70273.00,3775100,1447),
+('ISL','Iceland',103000.00,279000,1449),
+('ISR','Israel',21056.00,6217000,1450),
+('ITA','Italy',301316.00,57680000,1464),
+('TMP','East Timor',14874.00,885000,1522),
+('AUT','Austria',83859.00,8091800,1523),
+('JAM','Jamaica',10990.00,2583000,1530),
+('JPN','Japan',377829.00,126714000,1532),
+('YEM','Yemen',527968.00,18112000,1780),
+('JOR','Jordan',88946.00,5083000,1786),
+('CXR','Christmas Island',135.00,2500,1791),
+('YUG','Yugoslavia',102173.00,10640000,1792),
+('KHM','Cambodia',181035.00,11168000,1800),
+('CMR','Cameroon',475442.00,15085000,1804),
+('CAN','Canada',9970610.00,31147000,1822),
+('CPV','Cape Verde',4033.00,428000,1859),
+('KAZ','Kazakstan',2724900.00,16223000,1864),
+('KEN','Kenya',580367.00,30080000,1881),
+('CAF','Central African Republic',622984.00,3615000,1889),
+('CHN','China',9572900.00,1277558000,1891),
+('KGZ','Kyrgyzstan',199900.00,4699000,2253),
+('KIR','Kiribati',726.00,83000,2256),
+('COL','Colombia',1138914.00,42321000,2257),
+('COM','Comoros',1862.00,578000,2295),
+('COG','Congo',342000.00,2943000,2296),
+('COD','Congo, The Democratic Republic of the',2344858.00,51654000,2298),
+('CCK','Cocos (Keeling) Islands',14.00,600,2317),
+('PRK','North Korea',120538.00,24039000,2318),
+('KOR','South Korea',99434.00,46844000,2331),
+('GRC','Greece',131626.00,10545700,2401),
+('HRV','Croatia',56538.00,4473000,2409),
+('CUB','Cuba',110861.00,11201000,2413),
+('KWT','Kuwait',17818.00,1972000,2429),
+('CYP','Cyprus',9251.00,754700,2430),
+('LAO','Laos',236800.00,5433000,2432),
+('LVA','Latvia',64589.00,2424200,2434),
+('LSO','Lesotho',30355.00,2153000,2437),
+('LBN','Lebanon',10400.00,3282000,2438),
+('LBR','Liberia',111369.00,3154000,2440),
+('LBY','Libyan Arab Jamahiriya',1759540.00,5605000,2441),
+('LIE','Liechtenstein',160.00,32300,2446),
+('LTU','Lithuania',65301.00,3698500,2447),
+('LUX','Luxembourg',2586.00,435700,2452),
+('ESH','Western Sahara',266000.00,293000,2453),
+('MAC','Macao',18.00,473000,2454),
+('MDG','Madagascar',587041.00,15942000,2455),
+('MKD','Macedonia',25713.00,2024000,2460),
+('MWI','Malawi',118484.00,10925000,2462),
+('MDV','Maldives',298.00,286000,2463),
+('MYS','Malaysia',329758.00,22244000,2464),
+('MLI','Mali',1240192.00,11234000,2482),
+('MLT','Malta',316.00,380200,2484),
+('MAR','Morocco',446550.00,28351000,2486),
+('MHL','Marshall Islands',181.00,64000,2507),
+('MTQ','Martinique',1102.00,395000,2508),
+('MRT','Mauritania',1025520.00,2670000,2509),
+('MUS','Mauritius',2040.00,1158000,2511),
+('MYT','Mayotte',373.00,149000,2514),
+('MEX','Mexico',1958201.00,98881000,2515),
+('FSM','Micronesia, Federated States of',702.00,119000,2689),
+('MDA','Moldova',33851.00,4380000,2690),
+('MCO','Monaco',1.50,34000,2695),
+('MNG','Mongolia',1566500.00,2662000,2696),
+('MSR','Montserrat',102.00,11000,2697),
+('MOZ','Mozambique',801590.00,19680000,2698),
+('MMR','Myanmar',676578.00,45611000,2710),
+('NAM','Namibia',824292.00,1726000,2726),
+('NRU','Nauru',21.00,12000,2728),
+('NPL','Nepal',147181.00,23930000,2729),
+('NIC','Nicaragua',130000.00,5074000,2734),
+('NER','Niger',1267000.00,10730000,2738),
+('NGA','Nigeria',923768.00,111506000,2754),
+('NIU','Niue',260.00,2000,2805),
+('NFK','Norfolk Island',36.00,2000,2806),
+('NOR','Norway',323877.00,4478500,2807),
+('CIV','Côte dIvoire',322463.00,14786000,2814),
+('OMN','Oman',309500.00,2542000,2821),
+('PAK','Pakistan',796095.00,156483000,2831),
+('PLW','Palau',459.00,19000,2881),
+('PAN','Panama',75517.00,2856000,2882),
+('PNG','Papua New Guinea',462840.00,4807000,2884),
+('PRY','Paraguay',406752.00,5496000,2885),
+('PER','Peru',1285216.00,25662000,2890),
+('PCN','Pitcairn',49.00,50,2912),
+('MNP','Northern Mariana Islands',464.00,78000,2913),
+('PRT','Portugal',91982.00,9997600,2914),
+('PRI','Puerto Rico',8875.00,3869000,2919),
+('POL','Poland',323250.00,38653600,2928),
+('GNQ','Equatorial Guinea',28051.00,453000,2972),
+('QAT','Qatar',11000.00,599000,2973),
+('FRA','France',551500.00,59225700,2974),
+('GUF','French Guiana',90000.00,181000,3014),
+('PYF','French Polynesia',4000.00,235000,3016),
+('REU','Réunion',2510.00,699000,3017),
+('ROM','Romania',238391.00,22455500,3018),
+('RWA','Rwanda',26338.00,7733000,3047),
+('SWE','Sweden',449964.00,8861400,3048),
+('SHN','Saint Helena',314.00,6000,3063),
+('KNA','Saint Kitts and Nevis',261.00,38000,3064),
+('LCA','Saint Lucia',622.00,154000,3065),
+('VCT','Saint Vincent and the Grenadines',388.00,114000,3066),
+('SPM','Saint Pierre and Miquelon',242.00,7000,3067),
+('DEU','Germany',357022.00,82164700,3068),
+('SLB','Solomon Islands',28896.00,444000,3161),
+('ZMB','Zambia',752618.00,9169000,3162),
+('WSM','Samoa',2831.00,180000,3169),
+('SMR','San Marino',61.00,27000,3171),
+('STP','Sao Tome and Principe',964.00,147000,3172),
+('SAU','Saudi Arabia',2149690.00,21607000,3173),
+('SEN','Senegal',196722.00,9481000,3198),
+('SYC','Seychelles',455.00,77000,3206),
+('SLE','Sierra Leone',71740.00,4854000,3207),
+('SGP','Singapore',618.00,3567000,3208),
+('SVK','Slovakia',49012.00,5398700,3209),
+('SVN','Slovenia',20256.00,1987800,3212),
+('SOM','Somalia',637657.00,10097000,3214),
+('LKA','Sri Lanka',65610.00,18827000,3217),
+('SDN','Sudan',2505813.00,29490000,3225),
+('FIN','Finland',338145.00,5171300,3236),
+('SUR','Suriname',163265.00,417000,3243),
+('SWZ','Swaziland',17364.00,1008000,3244),
+('CHE','Switzerland',41284.00,7160400,3248),
+('SYR','Syria',185180.00,16125000,3250),
+('TJK','Tajikistan',143100.00,6188000,3261),
+('TWN','Taiwan',36188.00,22256000,3263),
+('TZA','Tanzania',883749.00,33517000,3306),
+('DNK','Denmark',43094.00,5330000,3315),
+('THA','Thailand',513115.00,61399000,3320),
+('TGO','Togo',56785.00,4629000,3332),
+('TKL','Tokelau',12.00,2000,3333),
+('TON','Tonga',650.00,99000,3334),
+('TTO','Trinidad and Tobago',5130.00,1295000,3336),
+('TCD','Chad',1284000.00,7651000,3337),
+('CZE','Czech Republic',78866.00,10278100,3339),
+('TUN','Tunisia',163610.00,9586000,3349),
+('TUR','Turkey',774815.00,66591000,3358),
+('TKM','Turkmenistan',488100.00,4459000,3419),
+('TCA','Turks and Caicos Islands',430.00,17000,3423),
+('TUV','Tuvalu',26.00,12000,3424),
+('UGA','Uganda',241038.00,21778000,3425),
+('UKR','Ukraine',603700.00,50456000,3426),
+('HUN','Hungary',93030.00,10043200,3483),
+('URY','Uruguay',175016.00,3337000,3492),
+('NCL','New Caledonia',18575.00,214000,3493),
+('NZL','New Zealand',270534.00,3862000,3499),
+('UZB','Uzbekistan',447400.00,24318000,3503),
+('BLR','Belarus',207600.00,10236000,3520),
+('WLF','Wallis and Futuna',200.00,15000,3536),
+('VUT','Vanuatu',12189.00,190000,3537),
+('VAT','Holy See (Vatican City State)',0.40,1000,3538),
+('VEN','Venezuela',912050.00,24170000,3539),
+('RUS','Russian Federation',17075400.00,146934000,3580),
+('VNM','Vietnam',331689.00,79832000,3770),
+('EST','Estonia',45227.00,1439200,3791),
+('USA','United States',9363520.00,278357000,3813),
+('VIR','Virgin Islands, U.S.',347.00,93000,4067),
+('ZWE','Zimbabwe',390757.00,11669000,4068),
+('PSE','Palestine',6257.00,3101000,4074),
+('ATA','Antarctica',13120000.00,0,NULL),
+('BVT','Bouvet Island',59.00,0,NULL),
+('IOT','British Indian Ocean Territory',78.00,0,NULL),
+('SGS','South Georgia and the South Sandwich Islands',3903.00,0,NULL),
+('HMD','Heard Island and McDonald Islands',359.00,0,NULL),
+('ATF','French Southern territories',7780.00,0,NULL),
+('UMI','United States Minor Outlying Islands',16.00,0,NULL);
+
+# Table City
+
+INSERT INTO City VALUES
+(1,'Kabul','AFG',1780000),
+(2,'Qandahar','AFG',237500),
+(3,'Herat','AFG',186800),
+(4,'Mazar-e-Sharif','AFG',127800),
+(5,'Amsterdam','NLD',731200),
+(6,'Rotterdam','NLD',593321),
+(7,'Haag','NLD',440900),
+(8,'Utrecht','NLD',234323),
+(9,'Eindhoven','NLD',201843),
+(10,'Tilburg','NLD',193238),
+(11,'Groningen','NLD',172701),
+(12,'Breda','NLD',160398),
+(13,'Apeldoorn','NLD',153491),
+(14,'Nijmegen','NLD',152463),
+(15,'Enschede','NLD',149544),
+(16,'Haarlem','NLD',148772),
+(17,'Almere','NLD',142465),
+(18,'Arnhem','NLD',138020),
+(19,'Zaanstad','NLD',135621),
+(20,'´s-Hertogenbosch','NLD',129170),
+(21,'Amersfoort','NLD',126270),
+(22,'Maastricht','NLD',122087),
+(23,'Dordrecht','NLD',119811),
+(24,'Leiden','NLD',117196),
+(25,'Haarlemmermeer','NLD',110722),
+(26,'Zoetermeer','NLD',110214),
+(27,'Emmen','NLD',105853),
+(28,'Zwolle','NLD',105819),
+(29,'Ede','NLD',101574),
+(30,'Delft','NLD',95268),
+(31,'Heerlen','NLD',95052),
+(32,'Alkmaar','NLD',92713),
+(33,'Willemstad','ANT',2345),
+(34,'Tirana','ALB',270000),
+(35,'Alger','DZA',2168000),
+(36,'Oran','DZA',609823),
+(37,'Constantine','DZA',443727),
+(38,'Annaba','DZA',222518),
+(39,'Batna','DZA',183377),
+(40,'Sétif','DZA',179055),
+(41,'Sidi Bel Abbès','DZA',153106),
+(42,'Skikda','DZA',128747),
+(43,'Biskra','DZA',128281),
+(44,'Blida (el-Boulaida)','DZA',127284),
+(45,'Béjaïa','DZA',117162),
+(46,'Mostaganem','DZA',115212),
+(47,'Tébessa','DZA',112007),
+(48,'Tlemcen (Tilimsen)','DZA',110242),
+(49,'Béchar','DZA',107311),
+(50,'Tiaret','DZA',100118),
+(51,'Ech-Chleff (el-Asnam)','DZA',96794),
+(52,'Ghardaïa','DZA',89415),
+(53,'Tafuna','ASM',5200),
+(54,'Fagatogo','ASM',2323),
+(55,'Andorra la Vella','AND',21189),
+(56,'Luanda','AGO',2022000),
+(57,'Huambo','AGO',163100),
+(58,'Lobito','AGO',130000),
+(59,'Benguela','AGO',128300),
+(60,'Namibe','AGO',118200),
+(61,'South Hill','AIA',961),
+(62,'The Valley','AIA',595),
+(63,'Saint John´s','ATG',24000),
+(64,'Dubai','ARE',669181),
+(65,'Abu Dhabi','ARE',398695),
+(66,'Sharja','ARE',320095),
+(67,'al-Ayn','ARE',225970),
+(68,'Ajman','ARE',114395),
+(69,'Buenos Aires','ARG',2982146),
+(70,'La Matanza','ARG',1266461),
+(71,'Córdoba','ARG',1157507),
+(72,'Rosario','ARG',907718),
+(73,'Lomas de Zamora','ARG',622013),
+(74,'Quilmes','ARG',559249),
+(75,'Almirante Brown','ARG',538918),
+(76,'La Plata','ARG',521936),
+(77,'Mar del Plata','ARG',512880),
+(78,'San Miguel de Tucumán','ARG',470809),
+(79,'Lanús','ARG',469735),
+(80,'Merlo','ARG',463846),
+(81,'General San Martín','ARG',422542),
+(82,'Salta','ARG',367550),
+(83,'Moreno','ARG',356993),
+(84,'Santa Fé','ARG',353063),
+(85,'Avellaneda','ARG',353046),
+(86,'Tres de Febrero','ARG',352311),
+(87,'Morón','ARG',349246),
+(88,'Florencio Varela','ARG',315432),
+(89,'San Isidro','ARG',306341),
+(90,'Tigre','ARG',296226),
+(91,'Malvinas Argentinas','ARG',290335),
+(92,'Vicente López','ARG',288341),
+(93,'Berazategui','ARG',276916),
+(94,'Corrientes','ARG',258103),
+(95,'San Miguel','ARG',248700),
+(96,'Bahía Blanca','ARG',239810),
+(97,'Esteban Echeverría','ARG',235760),
+(98,'Resistencia','ARG',229212),
+(99,'José C. Paz','ARG',221754),
+(100,'Paraná','ARG',207041),
+(101,'Godoy Cruz','ARG',206998),
+(102,'Posadas','ARG',201273),
+(103,'Guaymallén','ARG',200595),
+(104,'Santiago del Estero','ARG',189947),
+(105,'San Salvador de Jujuy','ARG',178748),
+(106,'Hurlingham','ARG',170028),
+(107,'Neuquén','ARG',167296),
+(108,'Ituzaingó','ARG',158197),
+(109,'San Fernando','ARG',153036),
+(110,'Formosa','ARG',147636),
+(111,'Las Heras','ARG',145823),
+(112,'La Rioja','ARG',138117),
+(113,'San Fernando del Valle de Cata','ARG',134935),
+(114,'Río Cuarto','ARG',134355),
+(115,'Comodoro Rivadavia','ARG',124104),
+(116,'Mendoza','ARG',123027),
+(117,'San Nicolás de los Arroyos','ARG',119302),
+(118,'San Juan','ARG',119152),
+(119,'Escobar','ARG',116675),
+(120,'Concordia','ARG',116485),
+(121,'Pilar','ARG',113428),
+(122,'San Luis','ARG',110136),
+(123,'Ezeiza','ARG',99578),
+(124,'San Rafael','ARG',94651),
+(125,'Tandil','ARG',91101),
+(126,'Yerevan','ARM',1248700),
+(127,'Gjumri','ARM',211700),
+(128,'Vanadzor','ARM',172700),
+(129,'Oranjestad','ABW',29034),
+(130,'Sydney','AUS',3276207),
+(131,'Melbourne','AUS',2865329),
+(132,'Brisbane','AUS',1291117),
+(133,'Perth','AUS',1096829),
+(134,'Adelaide','AUS',978100),
+(135,'Canberra','AUS',322723),
+(136,'Gold Coast','AUS',311932),
+(137,'Newcastle','AUS',270324),
+(138,'Central Coast','AUS',227657),
+(139,'Wollongong','AUS',219761),
+(140,'Hobart','AUS',126118),
+(141,'Geelong','AUS',125382),
+(142,'Townsville','AUS',109914),
+(143,'Cairns','AUS',92273),
+(144,'Baku','AZE',1787800),
+(145,'Gäncä','AZE',299300),
+(146,'Sumqayit','AZE',283000),
+(147,'Mingäçevir','AZE',93900),
+(148,'Nassau','BHS',172000),
+(149,'al-Manama','BHR',148000),
+(150,'Dhaka','BGD',3612850),
+(151,'Chittagong','BGD',1392860),
+(152,'Khulna','BGD',663340),
+(153,'Rajshahi','BGD',294056),
+(154,'Narayanganj','BGD',202134),
+(155,'Rangpur','BGD',191398),
+(156,'Mymensingh','BGD',188713),
+(157,'Barisal','BGD',170232),
+(158,'Tungi','BGD',168702),
+(159,'Jessore','BGD',139710),
+(160,'Comilla','BGD',135313),
+(161,'Nawabganj','BGD',130577),
+(162,'Dinajpur','BGD',127815),
+(163,'Bogra','BGD',120170),
+(164,'Sylhet','BGD',117396),
+(165,'Brahmanbaria','BGD',109032),
+(166,'Tangail','BGD',106004),
+(167,'Jamalpur','BGD',103556),
+(168,'Pabna','BGD',103277),
+(169,'Naogaon','BGD',101266),
+(170,'Sirajganj','BGD',99669),
+(171,'Narsinghdi','BGD',98342),
+(172,'Saidpur','BGD',96777),
+(173,'Gazipur','BGD',96717),
+(174,'Bridgetown','BRB',6070),
+(175,'Antwerpen','BEL',446525),
+(176,'Gent','BEL',224180),
+(177,'Charleroi','BEL',200827),
+(178,'Liège','BEL',185639),
+(179,'Bruxelles [Brussel]','BEL',133859),
+(180,'Brugge','BEL',116246),
+(181,'Schaerbeek','BEL',105692),
+(182,'Namur','BEL',105419),
+(183,'Mons','BEL',90935),
+(184,'Belize City','BLZ',55810),
+(185,'Belmopan','BLZ',7105),
+(186,'Cotonou','BEN',536827),
+(187,'Porto-Novo','BEN',194000),
+(188,'Djougou','BEN',134099),
+(189,'Parakou','BEN',103577),
+(190,'Saint George','BMU',1800),
+(191,'Hamilton','BMU',1200),
+(192,'Thimphu','BTN',22000),
+(193,'Santa Cruz de la Sierra','BOL',935361),
+(194,'La Paz','BOL',758141),
+(195,'El Alto','BOL',534466),
+(196,'Cochabamba','BOL',482800),
+(197,'Oruro','BOL',223553),
+(198,'Sucre','BOL',178426),
+(199,'Potosí','BOL',140642),
+(200,'Tarija','BOL',125255);
+INSERT INTO City VALUES
+(201,'Sarajevo','BIH',360000),
+(202,'Banja Luka','BIH',143079),
+(203,'Zenica','BIH',96027),
+(204,'Gaborone','BWA',213017),
+(205,'Francistown','BWA',101805),
+(206,'São Paulo','BRA',9968485),
+(207,'Rio de Janeiro','BRA',5598953),
+(208,'Salvador','BRA',2302832),
+(209,'Belo Horizonte','BRA',2139125),
+(210,'Fortaleza','BRA',2097757),
+(211,'Brasília','BRA',1969868),
+(212,'Curitiba','BRA',1584232),
+(213,'Recife','BRA',1378087),
+(214,'Porto Alegre','BRA',1314032),
+(215,'Manaus','BRA',1255049),
+(216,'Belém','BRA',1186926),
+(217,'Guarulhos','BRA',1095874),
+(218,'Goiânia','BRA',1056330),
+(219,'Campinas','BRA',950043),
+(220,'São Gonçalo','BRA',869254),
+(221,'Nova Iguaçu','BRA',862225),
+(222,'São Luís','BRA',837588),
+(223,'Maceió','BRA',786288),
+(224,'Duque de Caxias','BRA',746758),
+(225,'São Bernardo do Campo','BRA',723132),
+(226,'Teresina','BRA',691942),
+(227,'Natal','BRA',688955),
+(228,'Osasco','BRA',659604),
+(229,'Campo Grande','BRA',649593),
+(230,'Santo André','BRA',630073),
+(231,'João Pessoa','BRA',584029),
+(232,'Jaboatão dos Guararapes','BRA',558680),
+(233,'Contagem','BRA',520801),
+(234,'São José dos Campos','BRA',515553),
+(235,'Uberlândia','BRA',487222),
+(236,'Feira de Santana','BRA',479992),
+(237,'Ribeirão Preto','BRA',473276),
+(238,'Sorocaba','BRA',466823),
+(239,'Niterói','BRA',459884),
+(240,'Cuiabá','BRA',453813),
+(241,'Juiz de Fora','BRA',450288),
+(242,'Aracaju','BRA',445555),
+(243,'São João de Meriti','BRA',440052),
+(244,'Londrina','BRA',432257),
+(245,'Joinville','BRA',428011),
+(246,'Belford Roxo','BRA',425194),
+(247,'Santos','BRA',408748),
+(248,'Ananindeua','BRA',400940),
+(249,'Campos dos Goytacazes','BRA',398418),
+(250,'Mauá','BRA',375055),
+(251,'Carapicuíba','BRA',357552),
+(252,'Olinda','BRA',354732),
+(253,'Campina Grande','BRA',352497),
+(254,'São José do Rio Preto','BRA',351944),
+(255,'Caxias do Sul','BRA',349581),
+(256,'Moji das Cruzes','BRA',339194),
+(257,'Diadema','BRA',335078),
+(258,'Aparecida de Goiânia','BRA',324662),
+(259,'Piracicaba','BRA',319104),
+(260,'Cariacica','BRA',319033),
+(261,'Vila Velha','BRA',318758),
+(262,'Pelotas','BRA',315415),
+(263,'Bauru','BRA',313670),
+(264,'Porto Velho','BRA',309750),
+(265,'Serra','BRA',302666),
+(266,'Betim','BRA',302108),
+(267,'Jundíaí','BRA',296127),
+(268,'Canoas','BRA',294125),
+(269,'Franca','BRA',290139),
+(270,'São Vicente','BRA',286848),
+(271,'Maringá','BRA',286461),
+(272,'Montes Claros','BRA',286058),
+(273,'Anápolis','BRA',282197),
+(274,'Florianópolis','BRA',281928),
+(275,'Petrópolis','BRA',279183),
+(276,'Itaquaquecetuba','BRA',270874),
+(277,'Vitória','BRA',270626),
+(278,'Ponta Grossa','BRA',268013),
+(279,'Rio Branco','BRA',259537),
+(280,'Foz do Iguaçu','BRA',259425),
+(281,'Macapá','BRA',256033),
+(282,'Ilhéus','BRA',254970),
+(283,'Vitória da Conquista','BRA',253587),
+(284,'Uberaba','BRA',249225),
+(285,'Paulista','BRA',248473),
+(286,'Limeira','BRA',245497),
+(287,'Blumenau','BRA',244379),
+(288,'Caruaru','BRA',244247),
+(289,'Santarém','BRA',241771),
+(290,'Volta Redonda','BRA',240315),
+(291,'Novo Hamburgo','BRA',239940),
+(292,'Caucaia','BRA',238738),
+(293,'Santa Maria','BRA',238473),
+(294,'Cascavel','BRA',237510),
+(295,'Guarujá','BRA',237206),
+(296,'Ribeirão das Neves','BRA',232685),
+(297,'Governador Valadares','BRA',231724),
+(298,'Taubaté','BRA',229130),
+(299,'Imperatriz','BRA',224564),
+(300,'Gravataí','BRA',223011),
+(301,'Embu','BRA',222223),
+(302,'Mossoró','BRA',214901),
+(303,'Várzea Grande','BRA',214435),
+(304,'Petrolina','BRA',210540),
+(305,'Barueri','BRA',208426),
+(306,'Viamão','BRA',207557),
+(307,'Ipatinga','BRA',206338),
+(308,'Juazeiro','BRA',201073),
+(309,'Juazeiro do Norte','BRA',199636),
+(310,'Taboão da Serra','BRA',197550),
+(311,'São José dos Pinhais','BRA',196884),
+(312,'Magé','BRA',196147),
+(313,'Suzano','BRA',195434),
+(314,'São Leopoldo','BRA',189258),
+(315,'Marília','BRA',188691),
+(316,'São Carlos','BRA',187122),
+(317,'Sumaré','BRA',186205),
+(318,'Presidente Prudente','BRA',185340),
+(319,'Divinópolis','BRA',185047),
+(320,'Sete Lagoas','BRA',182984),
+(321,'Rio Grande','BRA',182222),
+(322,'Itabuna','BRA',182148),
+(323,'Jequié','BRA',179128),
+(324,'Arapiraca','BRA',178988),
+(325,'Colombo','BRA',177764),
+(326,'Americana','BRA',177409),
+(327,'Alvorada','BRA',175574),
+(328,'Araraquara','BRA',174381),
+(329,'Itaboraí','BRA',173977),
+(330,'Santa Bárbara d´Oeste','BRA',171657),
+(331,'Nova Friburgo','BRA',170697),
+(332,'Jacareí','BRA',170356),
+(333,'Araçatuba','BRA',169303),
+(334,'Barra Mansa','BRA',168953),
+(335,'Praia Grande','BRA',168434),
+(336,'Marabá','BRA',167795),
+(337,'Criciúma','BRA',167661),
+(338,'Boa Vista','BRA',167185),
+(339,'Passo Fundo','BRA',166343),
+(340,'Dourados','BRA',164716),
+(341,'Santa Luzia','BRA',164704),
+(342,'Rio Claro','BRA',163551),
+(343,'Maracanaú','BRA',162022),
+(344,'Guarapuava','BRA',160510),
+(345,'Rondonópolis','BRA',155115),
+(346,'São José','BRA',155105),
+(347,'Cachoeiro de Itapemirim','BRA',155024),
+(348,'Nilópolis','BRA',153383),
+(349,'Itapevi','BRA',150664),
+(350,'Cabo de Santo Agostinho','BRA',149964),
+(351,'Camaçari','BRA',149146),
+(352,'Sobral','BRA',146005),
+(353,'Itajaí','BRA',145197),
+(354,'Chapecó','BRA',144158),
+(355,'Cotia','BRA',140042),
+(356,'Lages','BRA',139570),
+(357,'Ferraz de Vasconcelos','BRA',139283),
+(358,'Indaiatuba','BRA',135968),
+(359,'Hortolândia','BRA',135755),
+(360,'Caxias','BRA',133980),
+(361,'São Caetano do Sul','BRA',133321),
+(362,'Itu','BRA',132736),
+(363,'Nossa Senhora do Socorro','BRA',131351),
+(364,'Parnaíba','BRA',129756),
+(365,'Poços de Caldas','BRA',129683),
+(366,'Teresópolis','BRA',128079),
+(367,'Barreiras','BRA',127801),
+(368,'Castanhal','BRA',127634),
+(369,'Alagoinhas','BRA',126820),
+(370,'Itapecerica da Serra','BRA',126672),
+(371,'Uruguaiana','BRA',126305),
+(372,'Paranaguá','BRA',126076),
+(373,'Ibirité','BRA',125982),
+(374,'Timon','BRA',125812),
+(375,'Luziânia','BRA',125597),
+(376,'Macaé','BRA',125597),
+(377,'Teófilo Otoni','BRA',124489),
+(378,'Moji-Guaçu','BRA',123782),
+(379,'Palmas','BRA',121919),
+(380,'Pindamonhangaba','BRA',121904),
+(381,'Francisco Morato','BRA',121197),
+(382,'Bagé','BRA',120793),
+(383,'Sapucaia do Sul','BRA',120217),
+(384,'Cabo Frio','BRA',119503),
+(385,'Itapetininga','BRA',119391),
+(386,'Patos de Minas','BRA',119262),
+(387,'Camaragibe','BRA',118968),
+(388,'Bragança Paulista','BRA',116929),
+(389,'Queimados','BRA',115020),
+(390,'Araguaína','BRA',114948),
+(391,'Garanhuns','BRA',114603),
+(392,'Vitória de Santo Antão','BRA',113595),
+(393,'Santa Rita','BRA',113135),
+(394,'Barbacena','BRA',113079),
+(395,'Abaetetuba','BRA',111258),
+(396,'Jaú','BRA',109965),
+(397,'Lauro de Freitas','BRA',109236),
+(398,'Franco da Rocha','BRA',108964),
+(399,'Teixeira de Freitas','BRA',108441),
+(400,'Varginha','BRA',108314);
+INSERT INTO City VALUES
+(401,'Ribeirão Pires','BRA',108121),
+(402,'Sabará','BRA',107781),
+(403,'Catanduva','BRA',107761),
+(404,'Rio Verde','BRA',107755),
+(405,'Botucatu','BRA',107663),
+(406,'Colatina','BRA',107354),
+(407,'Santa Cruz do Sul','BRA',106734),
+(408,'Linhares','BRA',106278),
+(409,'Apucarana','BRA',105114),
+(410,'Barretos','BRA',104156),
+(411,'Guaratinguetá','BRA',103433),
+(412,'Cachoeirinha','BRA',103240),
+(413,'Codó','BRA',103153),
+(414,'Jaraguá do Sul','BRA',102580),
+(415,'Cubatão','BRA',102372),
+(416,'Itabira','BRA',102217),
+(417,'Itaituba','BRA',101320),
+(418,'Araras','BRA',101046),
+(419,'Resende','BRA',100627),
+(420,'Atibaia','BRA',100356),
+(421,'Pouso Alegre','BRA',100028),
+(422,'Toledo','BRA',99387),
+(423,'Crato','BRA',98965),
+(424,'Passos','BRA',98570),
+(425,'Araguari','BRA',98399),
+(426,'São José de Ribamar','BRA',98318),
+(427,'Pinhais','BRA',98198),
+(428,'Sertãozinho','BRA',98140),
+(429,'Conselheiro Lafaiete','BRA',97507),
+(430,'Paulo Afonso','BRA',97291),
+(431,'Angra dos Reis','BRA',96864),
+(432,'Eunápolis','BRA',96610),
+(433,'Salto','BRA',96348),
+(434,'Ourinhos','BRA',96291),
+(435,'Parnamirim','BRA',96210),
+(436,'Jacobina','BRA',96131),
+(437,'Coronel Fabriciano','BRA',95933),
+(438,'Birigui','BRA',94685),
+(439,'Tatuí','BRA',93897),
+(440,'Ji-Paraná','BRA',93346),
+(441,'Bacabal','BRA',93121),
+(442,'Cametá','BRA',92779),
+(443,'Guaíba','BRA',92224),
+(444,'São Lourenço da Mata','BRA',91999),
+(445,'Santana do Livramento','BRA',91779),
+(446,'Votorantim','BRA',91777),
+(447,'Campo Largo','BRA',91203),
+(448,'Patos','BRA',90519),
+(449,'Ituiutaba','BRA',90507),
+(450,'Corumbá','BRA',90111),
+(451,'Palhoça','BRA',89465),
+(452,'Barra do Piraí','BRA',89388),
+(453,'Bento Gonçalves','BRA',89254),
+(454,'Poá','BRA',89236),
+(455,'Águas Lindas de Goiás','BRA',89200),
+(456,'London','GBR',7285000),
+(457,'Birmingham','GBR',1013000),
+(458,'Glasgow','GBR',619680),
+(459,'Liverpool','GBR',461000),
+(460,'Edinburgh','GBR',450180),
+(461,'Sheffield','GBR',431607),
+(462,'Manchester','GBR',430000),
+(463,'Leeds','GBR',424194),
+(464,'Bristol','GBR',402000),
+(465,'Cardiff','GBR',321000),
+(466,'Coventry','GBR',304000),
+(467,'Leicester','GBR',294000),
+(468,'Bradford','GBR',289376),
+(469,'Belfast','GBR',287500),
+(470,'Nottingham','GBR',287000),
+(471,'Kingston upon Hull','GBR',262000),
+(472,'Plymouth','GBR',253000),
+(473,'Stoke-on-Trent','GBR',252000),
+(474,'Wolverhampton','GBR',242000),
+(475,'Derby','GBR',236000),
+(476,'Swansea','GBR',230000),
+(477,'Southampton','GBR',216000),
+(478,'Aberdeen','GBR',213070),
+(479,'Northampton','GBR',196000),
+(480,'Dudley','GBR',192171),
+(481,'Portsmouth','GBR',190000),
+(482,'Newcastle upon Tyne','GBR',189150),
+(483,'Sunderland','GBR',183310),
+(484,'Luton','GBR',183000),
+(485,'Swindon','GBR',180000),
+(486,'Southend-on-Sea','GBR',176000),
+(487,'Walsall','GBR',174739),
+(488,'Bournemouth','GBR',162000),
+(489,'Peterborough','GBR',156000),
+(490,'Brighton','GBR',156124),
+(491,'Blackpool','GBR',151000),
+(492,'Dundee','GBR',146690),
+(493,'West Bromwich','GBR',146386),
+(494,'Reading','GBR',148000),
+(495,'Oldbury/Smethwick (Warley)','GBR',145542),
+(496,'Middlesbrough','GBR',145000),
+(497,'Huddersfield','GBR',143726),
+(498,'Oxford','GBR',144000),
+(499,'Poole','GBR',141000),
+(500,'Bolton','GBR',139020),
+(501,'Blackburn','GBR',140000),
+(502,'Newport','GBR',139000),
+(503,'Preston','GBR',135000),
+(504,'Stockport','GBR',132813),
+(505,'Norwich','GBR',124000),
+(506,'Rotherham','GBR',121380),
+(507,'Cambridge','GBR',121000),
+(508,'Watford','GBR',113080),
+(509,'Ipswich','GBR',114000),
+(510,'Slough','GBR',112000),
+(511,'Exeter','GBR',111000),
+(512,'Cheltenham','GBR',106000),
+(513,'Gloucester','GBR',107000),
+(514,'Saint Helens','GBR',106293),
+(515,'Sutton Coldfield','GBR',106001),
+(516,'York','GBR',104425),
+(517,'Oldham','GBR',103931),
+(518,'Basildon','GBR',100924),
+(519,'Worthing','GBR',100000),
+(520,'Chelmsford','GBR',97451),
+(521,'Colchester','GBR',96063),
+(522,'Crawley','GBR',97000),
+(523,'Gillingham','GBR',92000),
+(524,'Solihull','GBR',94531),
+(525,'Rochdale','GBR',94313),
+(526,'Birkenhead','GBR',93087),
+(527,'Worcester','GBR',95000),
+(528,'Hartlepool','GBR',92000),
+(529,'Halifax','GBR',91069),
+(530,'Woking/Byfleet','GBR',92000),
+(531,'Southport','GBR',90959),
+(532,'Maidstone','GBR',90878),
+(533,'Eastbourne','GBR',90000),
+(534,'Grimsby','GBR',89000),
+(535,'Saint Helier','GBR',27523),
+(536,'Douglas','GBR',23487),
+(537,'Road Town','VGB',8000),
+(538,'Bandar Seri Begawan','BRN',21484),
+(539,'Sofija','BGR',1122302),
+(540,'Plovdiv','BGR',342584),
+(541,'Varna','BGR',299801),
+(542,'Burgas','BGR',195255),
+(543,'Ruse','BGR',166467),
+(544,'Stara Zagora','BGR',147939),
+(545,'Pleven','BGR',121952),
+(546,'Sliven','BGR',105530),
+(547,'Dobric','BGR',100399),
+(548,'umen','BGR',94686),
+(549,'Ouagadougou','BFA',824000),
+(550,'Bobo-Dioulasso','BFA',300000),
+(551,'Koudougou','BFA',105000),
+(552,'Bujumbura','BDI',300000),
+(553,'George Town','CYM',19600),
+(554,'Santiago de Chile','CHL',4703954),
+(555,'Puente Alto','CHL',386236),
+(556,'Viña del Mar','CHL',312493),
+(557,'Valparaíso','CHL',293800),
+(558,'Talcahuano','CHL',277752),
+(559,'Antofagasta','CHL',251429),
+(560,'San Bernardo','CHL',241910),
+(561,'Temuco','CHL',233041),
+(562,'Concepción','CHL',217664),
+(563,'Rancagua','CHL',212977),
+(564,'Arica','CHL',189036),
+(565,'Talca','CHL',187557),
+(566,'Chillán','CHL',178182),
+(567,'Iquique','CHL',177892),
+(568,'Los Angeles','CHL',158215),
+(569,'Puerto Montt','CHL',152194),
+(570,'Coquimbo','CHL',143353),
+(571,'Osorno','CHL',141468),
+(572,'La Serena','CHL',137409),
+(573,'Calama','CHL',137265),
+(574,'Valdivia','CHL',133106),
+(575,'Punta Arenas','CHL',125631),
+(576,'Copiapó','CHL',120128),
+(577,'Quilpué','CHL',118857),
+(578,'Curicó','CHL',115766),
+(579,'Ovalle','CHL',94854),
+(580,'Coronel','CHL',93061),
+(581,'San Pedro de la Paz','CHL',91684),
+(582,'Melipilla','CHL',91056),
+(583,'Avarua','COK',11900),
+(584,'San José','CRI',339131),
+(585,'Djibouti','DJI',383000),
+(586,'Roseau','DMA',16243),
+(587,'Santo Domingo de Guzmán','DOM',1609966),
+(588,'Santiago de los Caballeros','DOM',365463),
+(589,'La Romana','DOM',140204),
+(590,'San Pedro de Macorís','DOM',124735),
+(591,'San Francisco de Macorís','DOM',108485),
+(592,'San Felipe de Puerto Plata','DOM',89423),
+(593,'Guayaquil','ECU',2070040),
+(594,'Quito','ECU',1573458),
+(595,'Cuenca','ECU',270353),
+(596,'Machala','ECU',210368),
+(597,'Santo Domingo de los Colorados','ECU',202111),
+(598,'Portoviejo','ECU',176413),
+(599,'Ambato','ECU',169612),
+(600,'Manta','ECU',164739);
+INSERT INTO City VALUES
+(601,'Duran [Eloy Alfaro]','ECU',152514),
+(602,'Ibarra','ECU',130643),
+(603,'Quevedo','ECU',129631),
+(604,'Milagro','ECU',124177),
+(605,'Loja','ECU',123875),
+(606,'Ríobamba','ECU',123163),
+(607,'Esmeraldas','ECU',123045),
+(608,'Cairo','EGY',6789479),
+(609,'Alexandria','EGY',3328196),
+(610,'Giza','EGY',2221868),
+(611,'Shubra al-Khayma','EGY',870716),
+(612,'Port Said','EGY',469533),
+(613,'Suez','EGY',417610),
+(614,'al-Mahallat al-Kubra','EGY',395402),
+(615,'Tanta','EGY',371010),
+(616,'al-Mansura','EGY',369621),
+(617,'Luxor','EGY',360503),
+(618,'Asyut','EGY',343498),
+(619,'Bahtim','EGY',275807),
+(620,'Zagazig','EGY',267351),
+(621,'al-Faiyum','EGY',260964),
+(622,'Ismailia','EGY',254477),
+(623,'Kafr al-Dawwar','EGY',231978),
+(624,'Assuan','EGY',219017),
+(625,'Damanhur','EGY',212203),
+(626,'al-Minya','EGY',201360),
+(627,'Bani Suwayf','EGY',172032),
+(628,'Qina','EGY',171275),
+(629,'Sawhaj','EGY',170125),
+(630,'Shibin al-Kawm','EGY',159909),
+(631,'Bulaq al-Dakrur','EGY',148787),
+(632,'Banha','EGY',145792),
+(633,'Warraq al-Arab','EGY',127108),
+(634,'Kafr al-Shaykh','EGY',124819),
+(635,'Mallawi','EGY',119283),
+(636,'Bilbays','EGY',113608),
+(637,'Mit Ghamr','EGY',101801),
+(638,'al-Arish','EGY',100447),
+(639,'Talkha','EGY',97700),
+(640,'Qalyub','EGY',97200),
+(641,'Jirja','EGY',95400),
+(642,'Idfu','EGY',94200),
+(643,'al-Hawamidiya','EGY',91700),
+(644,'Disuq','EGY',91300),
+(645,'San Salvador','SLV',415346),
+(646,'Santa Ana','SLV',139389),
+(647,'Mejicanos','SLV',138800),
+(648,'Soyapango','SLV',129800),
+(649,'San Miguel','SLV',127696),
+(650,'Nueva San Salvador','SLV',98400),
+(651,'Apopa','SLV',88800),
+(652,'Asmara','ERI',431000),
+(653,'Madrid','ESP',2879052),
+(654,'Barcelona','ESP',1503451),
+(655,'Valencia','ESP',739412),
+(656,'Sevilla','ESP',701927),
+(657,'Zaragoza','ESP',603367),
+(658,'Málaga','ESP',530553),
+(659,'Bilbao','ESP',357589),
+(660,'Las Palmas de Gran Canaria','ESP',354757),
+(661,'Murcia','ESP',353504),
+(662,'Palma de Mallorca','ESP',326993),
+(663,'Valladolid','ESP',319998),
+(664,'Córdoba','ESP',311708),
+(665,'Vigo','ESP',283670),
+(666,'Alicante [Alacant]','ESP',272432),
+(667,'Gijón','ESP',267980),
+(668,'L´Hospitalet de Llobregat','ESP',247986),
+(669,'Granada','ESP',244767),
+(670,'A Coruña (La Coruña)','ESP',243402),
+(671,'Vitoria-Gasteiz','ESP',217154),
+(672,'Santa Cruz de Tenerife','ESP',213050),
+(673,'Badalona','ESP',209635),
+(674,'Oviedo','ESP',200453),
+(675,'Móstoles','ESP',195351),
+(676,'Elche [Elx]','ESP',193174),
+(677,'Sabadell','ESP',184859),
+(678,'Santander','ESP',184165),
+(679,'Jerez de la Frontera','ESP',182660),
+(680,'Pamplona [Iruña]','ESP',180483),
+(681,'Donostia-San Sebastián','ESP',179208),
+(682,'Cartagena','ESP',177709),
+(683,'Leganés','ESP',173163),
+(684,'Fuenlabrada','ESP',171173),
+(685,'Almería','ESP',169027),
+(686,'Terrassa','ESP',168695),
+(687,'Alcalá de Henares','ESP',164463),
+(688,'Burgos','ESP',162802),
+(689,'Salamanca','ESP',158720),
+(690,'Albacete','ESP',147527),
+(691,'Getafe','ESP',145371),
+(692,'Cádiz','ESP',142449),
+(693,'Alcorcón','ESP',142048),
+(694,'Huelva','ESP',140583),
+(695,'León','ESP',139809),
+(696,'Castellón de la Plana [Castell','ESP',139712),
+(697,'Badajoz','ESP',136613),
+(698,'[San Cristóbal de] la Laguna','ESP',127945),
+(699,'Logroño','ESP',127093),
+(700,'Santa Coloma de Gramenet','ESP',120802),
+(701,'Tarragona','ESP',113016),
+(702,'Lleida (Lérida)','ESP',112207),
+(703,'Jaén','ESP',109247),
+(704,'Ourense (Orense)','ESP',109120),
+(705,'Mataró','ESP',104095),
+(706,'Algeciras','ESP',103106),
+(707,'Marbella','ESP',101144),
+(708,'Barakaldo','ESP',98212),
+(709,'Dos Hermanas','ESP',94591),
+(710,'Santiago de Compostela','ESP',93745),
+(711,'Torrejón de Ardoz','ESP',92262),
+(712,'Cape Town','ZAF',2352121),
+(713,'Soweto','ZAF',904165),
+(714,'Johannesburg','ZAF',756653),
+(715,'Port Elizabeth','ZAF',752319),
+(716,'Pretoria','ZAF',658630),
+(717,'Inanda','ZAF',634065),
+(718,'Durban','ZAF',566120),
+(719,'Vanderbijlpark','ZAF',468931),
+(720,'Kempton Park','ZAF',442633),
+(721,'Alberton','ZAF',410102),
+(722,'Pinetown','ZAF',378810),
+(723,'Pietermaritzburg','ZAF',370190),
+(724,'Benoni','ZAF',365467),
+(725,'Randburg','ZAF',341288),
+(726,'Umlazi','ZAF',339233),
+(727,'Bloemfontein','ZAF',334341),
+(728,'Vereeniging','ZAF',328535),
+(729,'Wonderboom','ZAF',283289),
+(730,'Roodepoort','ZAF',279340),
+(731,'Boksburg','ZAF',262648),
+(732,'Klerksdorp','ZAF',261911),
+(733,'Soshanguve','ZAF',242727),
+(734,'Newcastle','ZAF',222993),
+(735,'East London','ZAF',221047),
+(736,'Welkom','ZAF',203296),
+(737,'Kimberley','ZAF',197254),
+(738,'Uitenhage','ZAF',192120),
+(739,'Chatsworth','ZAF',189885),
+(740,'Mdantsane','ZAF',182639),
+(741,'Krugersdorp','ZAF',181503),
+(742,'Botshabelo','ZAF',177971),
+(743,'Brakpan','ZAF',171363),
+(744,'Witbank','ZAF',167183),
+(745,'Oberholzer','ZAF',164367),
+(746,'Germiston','ZAF',164252),
+(747,'Springs','ZAF',162072),
+(748,'Westonaria','ZAF',159632),
+(749,'Randfontein','ZAF',120838),
+(750,'Paarl','ZAF',105768),
+(751,'Potchefstroom','ZAF',101817),
+(752,'Rustenburg','ZAF',97008),
+(753,'Nigel','ZAF',96734),
+(754,'George','ZAF',93818),
+(755,'Ladysmith','ZAF',89292),
+(756,'Addis Abeba','ETH',2495000),
+(757,'Dire Dawa','ETH',164851),
+(758,'Nazret','ETH',127842),
+(759,'Gonder','ETH',112249),
+(760,'Dese','ETH',97314),
+(761,'Mekele','ETH',96938),
+(762,'Bahir Dar','ETH',96140),
+(763,'Stanley','FLK',1636),
+(764,'Suva','FJI',77366),
+(765,'Quezon','PHL',2173831),
+(766,'Manila','PHL',1581082),
+(767,'Kalookan','PHL',1177604),
+(768,'Davao','PHL',1147116),
+(769,'Cebu','PHL',718821),
+(770,'Zamboanga','PHL',601794),
+(771,'Pasig','PHL',505058),
+(772,'Valenzuela','PHL',485433),
+(773,'Las Piñas','PHL',472780),
+(774,'Antipolo','PHL',470866),
+(775,'Taguig','PHL',467375),
+(776,'Cagayan de Oro','PHL',461877),
+(777,'Parañaque','PHL',449811),
+(778,'Makati','PHL',444867),
+(779,'Bacolod','PHL',429076),
+(780,'General Santos','PHL',411822),
+(781,'Marikina','PHL',391170),
+(782,'Dasmariñas','PHL',379520),
+(783,'Muntinlupa','PHL',379310),
+(784,'Iloilo','PHL',365820),
+(785,'Pasay','PHL',354908),
+(786,'Malabon','PHL',338855),
+(787,'San José del Monte','PHL',315807),
+(788,'Bacoor','PHL',305699),
+(789,'Iligan','PHL',285061),
+(790,'Calamba','PHL',281146),
+(791,'Mandaluyong','PHL',278474),
+(792,'Butuan','PHL',267279),
+(793,'Angeles','PHL',263971),
+(794,'Tarlac','PHL',262481),
+(795,'Mandaue','PHL',259728),
+(796,'Baguio','PHL',252386),
+(797,'Batangas','PHL',247588),
+(798,'Cainta','PHL',242511),
+(799,'San Pedro','PHL',231403),
+ (800,'Navotas','PHL',230403);
+INSERT INTO City VALUES
+(801,'Cabanatuan','PHL',222859),
+(802,'San Fernando','PHL',221857),
+(803,'Lipa','PHL',218447),
+(804,'Lapu-Lapu','PHL',217019),
+(805,'San Pablo','PHL',207927),
+(806,'Biñan','PHL',201186),
+(807,'Taytay','PHL',198183),
+(808,'Lucena','PHL',196075),
+(809,'Imus','PHL',195482),
+(810,'Olongapo','PHL',194260),
+(811,'Binangonan','PHL',187691),
+(812,'Santa Rosa','PHL',185633),
+(813,'Tagum','PHL',179531),
+(814,'Tacloban','PHL',178639),
+(815,'Malolos','PHL',175291),
+(816,'Mabalacat','PHL',171045),
+(817,'Cotabato','PHL',163849),
+(818,'Meycauayan','PHL',163037),
+(819,'Puerto Princesa','PHL',161912),
+(820,'Legazpi','PHL',157010),
+(821,'Silang','PHL',156137),
+(822,'Ormoc','PHL',154297),
+(823,'San Carlos','PHL',154264),
+(824,'Kabankalan','PHL',149769),
+(825,'Talisay','PHL',148110),
+(826,'Valencia','PHL',147924),
+(827,'Calbayog','PHL',147187),
+(828,'Santa Maria','PHL',144282),
+(829,'Pagadian','PHL',142515),
+(830,'Cadiz','PHL',141954),
+(831,'Bago','PHL',141721),
+(832,'Toledo','PHL',141174),
+(833,'Naga','PHL',137810),
+(834,'San Mateo','PHL',135603),
+(835,'Panabo','PHL',133950),
+(836,'Koronadal','PHL',133786),
+(837,'Marawi','PHL',131090),
+(838,'Dagupan','PHL',130328),
+(839,'Sagay','PHL',129765),
+(840,'Roxas','PHL',126352),
+(841,'Lubao','PHL',125699),
+(842,'Digos','PHL',125171),
+(843,'San Miguel','PHL',123824),
+(844,'Malaybalay','PHL',123672),
+(845,'Tuguegarao','PHL',120645),
+(846,'Ilagan','PHL',119990),
+(847,'Baliuag','PHL',119675),
+(848,'Surigao','PHL',118534),
+(849,'San Carlos','PHL',118259),
+(850,'San Juan del Monte','PHL',117680),
+(851,'Tanauan','PHL',117539),
+(852,'Concepcion','PHL',115171),
+(853,'Rodriguez (Montalban)','PHL',115167),
+(854,'Sariaya','PHL',114568),
+(855,'Malasiqui','PHL',113190),
+(856,'General Mariano Alvarez','PHL',112446),
+(857,'Urdaneta','PHL',111582),
+(858,'Hagonoy','PHL',111425),
+(859,'San Jose','PHL',111009),
+(860,'Polomolok','PHL',110709),
+(861,'Santiago','PHL',110531),
+(862,'Tanza','PHL',110517),
+(863,'Ozamis','PHL',110420),
+(864,'Mexico','PHL',109481),
+(865,'San Jose','PHL',108254),
+(866,'Silay','PHL',107722),
+(867,'General Trias','PHL',107691),
+(868,'Tabaco','PHL',107166),
+(869,'Cabuyao','PHL',106630),
+(870,'Calapan','PHL',105910),
+(871,'Mati','PHL',105908),
+(872,'Midsayap','PHL',105760),
+(873,'Cauayan','PHL',103952),
+(874,'Gingoog','PHL',102379),
+(875,'Dumaguete','PHL',102265),
+(876,'San Fernando','PHL',102082),
+(877,'Arayat','PHL',101792),
+(878,'Bayawan (Tulong)','PHL',101391),
+(879,'Kidapawan','PHL',101205),
+(880,'Daraga (Locsin)','PHL',101031),
+(881,'Marilao','PHL',101017),
+(882,'Malita','PHL',100000),
+(883,'Dipolog','PHL',99862),
+(884,'Cavite','PHL',99367),
+(885,'Danao','PHL',98781),
+(886,'Bislig','PHL',97860),
+(887,'Talavera','PHL',97329),
+(888,'Guagua','PHL',96858),
+(889,'Bayambang','PHL',96609),
+(890,'Nasugbu','PHL',96113),
+(891,'Baybay','PHL',95630),
+(892,'Capas','PHL',95219),
+(893,'Sultan Kudarat','PHL',94861),
+(894,'Laoag','PHL',94466),
+(895,'Bayugan','PHL',93623),
+(896,'Malungon','PHL',93232),
+(897,'Santa Cruz','PHL',92694),
+(898,'Sorsogon','PHL',92512),
+(899,'Candelaria','PHL',92429),
+(900,'Ligao','PHL',90603),
+(901,'Tórshavn','FRO',14542),
+(902,'Libreville','GAB',419000),
+(903,'Serekunda','GMB',102600),
+(904,'Banjul','GMB',42326),
+(905,'Tbilisi','GEO',1235200),
+(906,'Kutaisi','GEO',240900),
+(907,'Rustavi','GEO',155400),
+(908,'Batumi','GEO',137700),
+(909,'Sohumi','GEO',111700),
+(910,'Accra','GHA',1070000),
+(911,'Kumasi','GHA',385192),
+(912,'Tamale','GHA',151069),
+(913,'Tema','GHA',109975),
+(914,'Sekondi-Takoradi','GHA',103653),
+(915,'Gibraltar','GIB',27025),
+(916,'Saint George´s','GRD',4621),
+(917,'Nuuk','GRL',13445),
+(918,'Les Abymes','GLP',62947),
+(919,'Basse-Terre','GLP',12433),
+(920,'Tamuning','GUM',9500),
+(921,'Agaña','GUM',1139),
+(922,'Ciudad de Guatemala','GTM',823301),
+(923,'Mixco','GTM',209791),
+(924,'Villa Nueva','GTM',101295),
+(925,'Quetzaltenango','GTM',90801),
+(926,'Conakry','GIN',1090610),
+(927,'Bissau','GNB',241000),
+(928,'Georgetown','GUY',254000),
+(929,'Port-au-Prince','HTI',884472),
+(930,'Carrefour','HTI',290204),
+(931,'Delmas','HTI',240429),
+(932,'Le-Cap-Haïtien','HTI',102233),
+(933,'Tegucigalpa','HND',813900),
+(934,'San Pedro Sula','HND',383900),
+(935,'La Ceiba','HND',89200),
+(936,'Kowloon and New Kowloon','HKG',1987996),
+(937,'Victoria','HKG',1312637),
+(938,'Longyearbyen','SJM',1438),
+(939,'Jakarta','IDN',9604900),
+(940,'Surabaya','IDN',2663820),
+(941,'Bandung','IDN',2429000),
+(942,'Medan','IDN',1843919),
+(943,'Palembang','IDN',1222764),
+(944,'Tangerang','IDN',1198300),
+(945,'Semarang','IDN',1104405),
+(946,'Ujung Pandang','IDN',1060257),
+(947,'Malang','IDN',716862),
+(948,'Bandar Lampung','IDN',680332),
+(949,'Bekasi','IDN',644300),
+(950,'Padang','IDN',534474),
+(951,'Surakarta','IDN',518600),
+(952,'Banjarmasin','IDN',482931),
+(953,'Pekan Baru','IDN',438638),
+(954,'Denpasar','IDN',435000),
+(955,'Yogyakarta','IDN',418944),
+(956,'Pontianak','IDN',409632),
+(957,'Samarinda','IDN',399175),
+(958,'Jambi','IDN',385201),
+(959,'Depok','IDN',365200),
+(960,'Cimahi','IDN',344600),
+(961,'Balikpapan','IDN',338752),
+(962,'Manado','IDN',332288),
+(963,'Mataram','IDN',306600),
+(964,'Pekalongan','IDN',301504),
+(965,'Tegal','IDN',289744),
+(966,'Bogor','IDN',285114),
+(967,'Ciputat','IDN',270800),
+(968,'Pondokgede','IDN',263200),
+(969,'Cirebon','IDN',254406),
+(970,'Kediri','IDN',253760),
+(971,'Ambon','IDN',249312),
+(972,'Jember','IDN',218500),
+(973,'Cilacap','IDN',206900),
+(974,'Cimanggis','IDN',205100),
+(975,'Pematang Siantar','IDN',203056),
+(976,'Purwokerto','IDN',202500),
+(977,'Ciomas','IDN',187400),
+(978,'Tasikmalaya','IDN',179800),
+(979,'Madiun','IDN',171532),
+(980,'Bengkulu','IDN',146439),
+(981,'Karawang','IDN',145000),
+(982,'Banda Aceh','IDN',143409),
+(983,'Palu','IDN',142800),
+(984,'Pasuruan','IDN',134019),
+(985,'Kupang','IDN',129300),
+(986,'Tebing Tinggi','IDN',129300),
+(987,'Percut Sei Tuan','IDN',129000),
+(988,'Binjai','IDN',127222),
+(989,'Sukabumi','IDN',125766),
+(990,'Waru','IDN',124300),
+(991,'Pangkal Pinang','IDN',124000),
+(992,'Magelang','IDN',123800),
+(993,'Blitar','IDN',122600),
+(994,'Serang','IDN',122400),
+(995,'Probolinggo','IDN',120770),
+(996,'Cilegon','IDN',117000),
+(997,'Cianjur','IDN',114300),
+(998,'Ciparay','IDN',111500),
+(999,'Lhokseumawe','IDN',109600),
+(1000,'Taman','IDN',107000);
+INSERT INTO City VALUES
+(1001,'Depok','IDN',106800),
+(1002,'Citeureup','IDN',105100),
+(1003,'Pemalang','IDN',103500),
+(1004,'Klaten','IDN',103300),
+(1005,'Salatiga','IDN',103000),
+(1006,'Cibinong','IDN',101300),
+(1007,'Palangka Raya','IDN',99693),
+(1008,'Mojokerto','IDN',96626),
+(1009,'Purwakarta','IDN',95900),
+(1010,'Garut','IDN',95800),
+(1011,'Kudus','IDN',95300),
+(1012,'Kendari','IDN',94800),
+(1013,'Jaya Pura','IDN',94700),
+(1014,'Gorontalo','IDN',94058),
+(1015,'Majalaya','IDN',93200),
+(1016,'Pondok Aren','IDN',92700),
+(1017,'Jombang','IDN',92600),
+(1018,'Sunggal','IDN',92300),
+(1019,'Batam','IDN',91871),
+(1020,'Padang Sidempuan','IDN',91200),
+(1021,'Sawangan','IDN',91100),
+(1022,'Banyuwangi','IDN',89900),
+(1023,'Tanjung Pinang','IDN',89900),
+(1024,'Mumbai (Bombay)','IND',10500000),
+(1025,'Delhi','IND',7206704),
+(1026,'Calcutta [Kolkata]','IND',4399819),
+(1027,'Chennai (Madras)','IND',3841396),
+(1028,'Hyderabad','IND',2964638),
+(1029,'Ahmedabad','IND',2876710),
+(1030,'Bangalore','IND',2660088),
+(1031,'Kanpur','IND',1874409),
+(1032,'Nagpur','IND',1624752),
+(1033,'Lucknow','IND',1619115),
+(1034,'Pune','IND',1566651),
+(1035,'Surat','IND',1498817),
+(1036,'Jaipur','IND',1458483),
+(1037,'Indore','IND',1091674),
+(1038,'Bhopal','IND',1062771),
+(1039,'Ludhiana','IND',1042740),
+(1040,'Vadodara (Baroda)','IND',1031346),
+(1041,'Kalyan','IND',1014557),
+(1042,'Madurai','IND',977856),
+(1043,'Haora (Howrah)','IND',950435),
+(1044,'Varanasi (Benares)','IND',929270),
+(1045,'Patna','IND',917243),
+(1046,'Srinagar','IND',892506),
+(1047,'Agra','IND',891790),
+(1048,'Coimbatore','IND',816321),
+(1049,'Thane (Thana)','IND',803389),
+(1050,'Allahabad','IND',792858),
+(1051,'Meerut','IND',753778),
+(1052,'Vishakhapatnam','IND',752037),
+(1053,'Jabalpur','IND',741927),
+(1054,'Amritsar','IND',708835),
+(1055,'Faridabad','IND',703592),
+(1056,'Vijayawada','IND',701827),
+(1057,'Gwalior','IND',690765),
+(1058,'Jodhpur','IND',666279),
+(1059,'Nashik (Nasik)','IND',656925),
+(1060,'Hubli-Dharwad','IND',648298),
+(1061,'Solapur (Sholapur)','IND',604215),
+(1062,'Ranchi','IND',599306),
+(1063,'Bareilly','IND',587211),
+(1064,'Guwahati (Gauhati)','IND',584342),
+(1065,'Shambajinagar (Aurangabad)','IND',573272),
+(1066,'Cochin (Kochi)','IND',564589),
+(1067,'Rajkot','IND',559407),
+(1068,'Kota','IND',537371),
+(1069,'Thiruvananthapuram (Trivandrum','IND',524006),
+(1070,'Pimpri-Chinchwad','IND',517083),
+(1071,'Jalandhar (Jullundur)','IND',509510),
+(1072,'Gorakhpur','IND',505566),
+(1073,'Chandigarh','IND',504094),
+(1074,'Mysore','IND',480692),
+(1075,'Aligarh','IND',480520),
+(1076,'Guntur','IND',471051),
+(1077,'Jamshedpur','IND',460577),
+(1078,'Ghaziabad','IND',454156),
+(1079,'Warangal','IND',447657),
+(1080,'Raipur','IND',438639),
+(1081,'Moradabad','IND',429214),
+(1082,'Durgapur','IND',425836),
+(1083,'Amravati','IND',421576),
+(1084,'Calicut (Kozhikode)','IND',419831),
+(1085,'Bikaner','IND',416289),
+(1086,'Bhubaneswar','IND',411542),
+(1087,'Kolhapur','IND',406370),
+(1088,'Kataka (Cuttack)','IND',403418),
+(1089,'Ajmer','IND',402700),
+(1090,'Bhavnagar','IND',402338),
+(1091,'Tiruchirapalli','IND',387223),
+(1092,'Bhilai','IND',386159),
+(1093,'Bhiwandi','IND',379070),
+(1094,'Saharanpur','IND',374945),
+(1095,'Ulhasnagar','IND',369077),
+(1096,'Salem','IND',366712),
+(1097,'Ujjain','IND',362266),
+(1098,'Malegaon','IND',342595),
+(1099,'Jamnagar','IND',341637),
+(1100,'Bokaro Steel City','IND',333683),
+(1101,'Akola','IND',328034),
+(1102,'Belgaum','IND',326399),
+(1103,'Rajahmundry','IND',324851),
+(1104,'Nellore','IND',316606),
+(1105,'Udaipur','IND',308571),
+(1106,'New Bombay','IND',307297),
+(1107,'Bhatpara','IND',304952),
+(1108,'Gulbarga','IND',304099),
+(1109,'New Delhi','IND',301297),
+(1110,'Jhansi','IND',300850),
+(1111,'Gaya','IND',291675),
+(1112,'Kakinada','IND',279980),
+(1113,'Dhule (Dhulia)','IND',278317),
+(1114,'Panihati','IND',275990),
+(1115,'Nanded (Nander)','IND',275083),
+(1116,'Mangalore','IND',273304),
+(1117,'Dehra Dun','IND',270159),
+(1118,'Kamarhati','IND',266889),
+(1119,'Davangere','IND',266082),
+(1120,'Asansol','IND',262188),
+(1121,'Bhagalpur','IND',253225),
+(1122,'Bellary','IND',245391),
+(1123,'Barddhaman (Burdwan)','IND',245079),
+(1124,'Rampur','IND',243742),
+(1125,'Jalgaon','IND',242193),
+(1126,'Muzaffarpur','IND',241107),
+(1127,'Nizamabad','IND',241034),
+(1128,'Muzaffarnagar','IND',240609),
+(1129,'Patiala','IND',238368),
+(1130,'Shahjahanpur','IND',237713),
+(1131,'Kurnool','IND',236800),
+(1132,'Tiruppur (Tirupper)','IND',235661),
+(1133,'Rohtak','IND',233400),
+(1134,'South Dum Dum','IND',232811),
+(1135,'Mathura','IND',226691),
+(1136,'Chandrapur','IND',226105),
+(1137,'Barahanagar (Baranagar)','IND',224821),
+(1138,'Darbhanga','IND',218391),
+(1139,'Siliguri (Shiliguri)','IND',216950),
+(1140,'Raurkela','IND',215489),
+(1141,'Ambattur','IND',215424),
+(1142,'Panipat','IND',215218),
+(1143,'Firozabad','IND',215128),
+(1144,'Ichalkaranji','IND',214950),
+(1145,'Jammu','IND',214737),
+(1146,'Ramagundam','IND',214384),
+(1147,'Eluru','IND',212866),
+(1148,'Brahmapur','IND',210418),
+(1149,'Alwar','IND',205086),
+(1150,'Pondicherry','IND',203065),
+(1151,'Thanjavur','IND',202013),
+(1152,'Bihar Sharif','IND',201323),
+(1153,'Tuticorin','IND',199854),
+(1154,'Imphal','IND',198535),
+(1155,'Latur','IND',197408),
+(1156,'Sagar','IND',195346),
+(1157,'Farrukhabad-cum-Fatehgarh','IND',194567),
+(1158,'Sangli','IND',193197),
+(1159,'Parbhani','IND',190255),
+(1160,'Nagar Coil','IND',190084),
+(1161,'Bijapur','IND',186939),
+(1162,'Kukatpalle','IND',185378),
+(1163,'Bally','IND',184474),
+(1164,'Bhilwara','IND',183965),
+(1165,'Ratlam','IND',183375),
+(1166,'Avadi','IND',183215),
+(1167,'Dindigul','IND',182477),
+(1168,'Ahmadnagar','IND',181339),
+(1169,'Bilaspur','IND',179833),
+(1170,'Shimoga','IND',179258),
+(1171,'Kharagpur','IND',177989),
+(1172,'Mira Bhayandar','IND',175372),
+(1173,'Vellore','IND',175061),
+(1174,'Jalna','IND',174985),
+(1175,'Burnpur','IND',174933),
+(1176,'Anantapur','IND',174924),
+(1177,'Allappuzha (Alleppey)','IND',174666),
+(1178,'Tirupati','IND',174369),
+(1179,'Karnal','IND',173751),
+(1180,'Burhanpur','IND',172710),
+(1181,'Hisar (Hissar)','IND',172677),
+(1182,'Tiruvottiyur','IND',172562),
+(1183,'Mirzapur-cum-Vindhyachal','IND',169336),
+(1184,'Secunderabad','IND',167461),
+(1185,'Nadiad','IND',167051),
+(1186,'Dewas','IND',164364),
+(1187,'Murwara (Katni)','IND',163431),
+(1188,'Ganganagar','IND',161482),
+(1189,'Vizianagaram','IND',160359),
+(1190,'Erode','IND',159232),
+(1191,'Machilipatnam (Masulipatam)','IND',159110),
+(1192,'Bhatinda (Bathinda)','IND',159042),
+(1193,'Raichur','IND',157551),
+(1194,'Agartala','IND',157358),
+(1195,'Arrah (Ara)','IND',157082),
+(1196,'Satna','IND',156630),
+(1197,'Lalbahadur Nagar','IND',155500),
+(1198,'Aizawl','IND',155240),
+(1199,'Uluberia','IND',155172),
+(1200,'Katihar','IND',154367);
+INSERT INTO City VALUES
+(1201,'Cuddalore','IND',153086),
+(1202,'Hugli-Chinsurah','IND',151806),
+(1203,'Dhanbad','IND',151789),
+(1204,'Raiganj','IND',151045),
+(1205,'Sambhal','IND',150869),
+(1206,'Durg','IND',150645),
+(1207,'Munger (Monghyr)','IND',150112),
+(1208,'Kanchipuram','IND',150100),
+(1209,'North Dum Dum','IND',149965),
+(1210,'Karimnagar','IND',148583),
+(1211,'Bharatpur','IND',148519),
+(1212,'Sikar','IND',148272),
+(1213,'Hardwar (Haridwar)','IND',147305),
+(1214,'Dabgram','IND',147217),
+(1215,'Morena','IND',147124),
+(1216,'Noida','IND',146514),
+(1217,'Hapur','IND',146262),
+(1218,'Bhusawal','IND',145143),
+(1219,'Khandwa','IND',145133),
+(1220,'Yamuna Nagar','IND',144346),
+(1221,'Sonipat (Sonepat)','IND',143922),
+(1222,'Tenali','IND',143726),
+(1223,'Raurkela Civil Township','IND',140408),
+(1224,'Kollam (Quilon)','IND',139852),
+(1225,'Kumbakonam','IND',139483),
+(1226,'Ingraj Bazar (English Bazar)','IND',139204),
+(1227,'Timkur','IND',138903),
+(1228,'Amroha','IND',137061),
+(1229,'Serampore','IND',137028),
+(1230,'Chapra','IND',136877),
+(1231,'Pali','IND',136842),
+(1232,'Maunath Bhanjan','IND',136697),
+(1233,'Adoni','IND',136182),
+(1234,'Jaunpur','IND',136062),
+(1235,'Tirunelveli','IND',135825),
+(1236,'Bahraich','IND',135400),
+(1237,'Gadag Betigeri','IND',134051),
+(1238,'Proddatur','IND',133914),
+(1239,'Chittoor','IND',133462),
+(1240,'Barrackpur','IND',133265),
+(1241,'Bharuch (Broach)','IND',133102),
+(1242,'Naihati','IND',132701),
+(1243,'Shillong','IND',131719),
+(1244,'Sambalpur','IND',131138),
+(1245,'Junagadh','IND',130484),
+(1246,'Rae Bareli','IND',129904),
+(1247,'Rewa','IND',128981),
+(1248,'Gurgaon','IND',128608),
+(1249,'Khammam','IND',127992),
+(1250,'Bulandshahr','IND',127201),
+(1251,'Navsari','IND',126089),
+(1252,'Malkajgiri','IND',126066),
+(1253,'Midnapore (Medinipur)','IND',125498),
+(1254,'Miraj','IND',125407),
+(1255,'Raj Nandgaon','IND',125371),
+(1256,'Alandur','IND',125244),
+(1257,'Puri','IND',125199),
+(1258,'Navadwip','IND',125037),
+(1259,'Sirsa','IND',125000),
+(1260,'Korba','IND',124501),
+(1261,'Faizabad','IND',124437),
+(1262,'Etawah','IND',124072),
+(1263,'Pathankot','IND',123930),
+(1264,'Gandhinagar','IND',123359),
+(1265,'Palghat (Palakkad)','IND',123289),
+(1266,'Veraval','IND',123000),
+(1267,'Hoshiarpur','IND',122705),
+(1268,'Ambala','IND',122596),
+(1269,'Sitapur','IND',121842),
+(1270,'Bhiwani','IND',121629),
+(1271,'Cuddapah','IND',121463),
+(1272,'Bhimavaram','IND',121314),
+(1273,'Krishnanagar','IND',121110),
+(1274,'Chandannagar','IND',120378),
+(1275,'Mandya','IND',120265),
+(1276,'Dibrugarh','IND',120127),
+(1277,'Nandyal','IND',119813),
+(1278,'Balurghat','IND',119796),
+(1279,'Neyveli','IND',118080),
+(1280,'Fatehpur','IND',117675),
+(1281,'Mahbubnagar','IND',116833),
+(1282,'Budaun','IND',116695),
+(1283,'Porbandar','IND',116671),
+(1284,'Silchar','IND',115483),
+(1285,'Berhampore (Baharampur)','IND',115144),
+(1286,'Purnea (Purnia)','IND',114912),
+(1287,'Bankura','IND',114876),
+(1288,'Rajapalaiyam','IND',114202),
+(1289,'Titagarh','IND',114085),
+(1290,'Halisahar','IND',114028),
+(1291,'Hathras','IND',113285),
+(1292,'Bhir (Bid)','IND',112434),
+(1293,'Pallavaram','IND',111866),
+(1294,'Anand','IND',110266),
+(1295,'Mango','IND',110024),
+(1296,'Santipur','IND',109956),
+(1297,'Bhind','IND',109755),
+(1298,'Gondiya','IND',109470),
+(1299,'Tiruvannamalai','IND',109196),
+(1300,'Yeotmal (Yavatmal)','IND',108578),
+(1301,'Kulti-Barakar','IND',108518),
+(1302,'Moga','IND',108304),
+(1303,'Shivapuri','IND',108277),
+(1304,'Bidar','IND',108016),
+(1305,'Guntakal','IND',107592),
+(1306,'Unnao','IND',107425),
+(1307,'Barasat','IND',107365),
+(1308,'Tambaram','IND',107187),
+(1309,'Abohar','IND',107163),
+(1310,'Pilibhit','IND',106605),
+(1311,'Valparai','IND',106523),
+(1312,'Gonda','IND',106078),
+(1313,'Surendranagar','IND',105973),
+(1314,'Qutubullapur','IND',105380),
+(1315,'Beawar','IND',105363),
+(1316,'Hindupur','IND',104651),
+(1317,'Gandhidham','IND',104585),
+(1318,'Haldwani-cum-Kathgodam','IND',104195),
+(1319,'Tellicherry (Thalassery)','IND',103579),
+(1320,'Wardha','IND',102985),
+(1321,'Rishra','IND',102649),
+(1322,'Bhuj','IND',102176),
+(1323,'Modinagar','IND',101660),
+(1324,'Gudivada','IND',101656),
+(1325,'Basirhat','IND',101409),
+(1326,'Uttarpara-Kotrung','IND',100867),
+(1327,'Ongole','IND',100836),
+(1328,'North Barrackpur','IND',100513),
+(1329,'Guna','IND',100490),
+(1330,'Haldia','IND',100347),
+(1331,'Habra','IND',100223),
+(1332,'Kanchrapara','IND',100194),
+(1333,'Tonk','IND',100079),
+(1334,'Champdani','IND',98818),
+(1335,'Orai','IND',98640),
+(1336,'Pudukkottai','IND',98619),
+(1337,'Sasaram','IND',98220),
+(1338,'Hazaribag','IND',97712),
+(1339,'Palayankottai','IND',97662),
+(1340,'Banda','IND',97227),
+(1341,'Godhra','IND',96813),
+(1342,'Hospet','IND',96322),
+(1343,'Ashoknagar-Kalyangarh','IND',96315),
+(1344,'Achalpur','IND',96216),
+(1345,'Patan','IND',96109),
+(1346,'Mandasor','IND',95758),
+(1347,'Damoh','IND',95661),
+(1348,'Satara','IND',95133),
+(1349,'Meerut Cantonment','IND',94876),
+(1350,'Dehri','IND',94526),
+(1351,'Delhi Cantonment','IND',94326),
+(1352,'Chhindwara','IND',93731),
+(1353,'Bansberia','IND',93447),
+(1354,'Nagaon','IND',93350),
+(1355,'Kanpur Cantonment','IND',93109),
+(1356,'Vidisha','IND',92917),
+(1357,'Bettiah','IND',92583),
+(1358,'Purulia','IND',92574),
+(1359,'Hassan','IND',90803),
+(1360,'Ambala Sadar','IND',90712),
+(1361,'Baidyabati','IND',90601),
+(1362,'Morvi','IND',90357),
+(1363,'Raigarh','IND',89166),
+(1364,'Vejalpur','IND',89053),
+(1365,'Baghdad','IRQ',4336000),
+(1366,'Mosul','IRQ',879000),
+(1367,'Irbil','IRQ',485968),
+(1368,'Kirkuk','IRQ',418624),
+(1369,'Basra','IRQ',406296),
+(1370,'al-Sulaymaniya','IRQ',364096),
+(1371,'al-Najaf','IRQ',309010),
+(1372,'Karbala','IRQ',296705),
+(1373,'al-Hilla','IRQ',268834),
+(1374,'al-Nasiriya','IRQ',265937),
+(1375,'al-Amara','IRQ',208797),
+(1376,'al-Diwaniya','IRQ',196519),
+(1377,'al-Ramadi','IRQ',192556),
+(1378,'al-Kut','IRQ',183183),
+(1379,'Baquba','IRQ',114516),
+(1380,'Teheran','IRN',6758845),
+(1381,'Mashhad','IRN',1887405),
+(1382,'Esfahan','IRN',1266072),
+(1383,'Tabriz','IRN',1191043),
+(1384,'Shiraz','IRN',1053025),
+(1385,'Karaj','IRN',940968),
+(1386,'Ahvaz','IRN',804980),
+(1387,'Qom','IRN',777677),
+(1388,'Kermanshah','IRN',692986),
+(1389,'Urmia','IRN',435200),
+(1390,'Zahedan','IRN',419518),
+(1391,'Rasht','IRN',417748),
+(1392,'Hamadan','IRN',401281),
+(1393,'Kerman','IRN',384991),
+(1394,'Arak','IRN',380755),
+(1395,'Ardebil','IRN',340386),
+(1396,'Yazd','IRN',326776),
+(1397,'Qazvin','IRN',291117),
+(1398,'Zanjan','IRN',286295),
+(1399,'Sanandaj','IRN',277808),
+(1400,'Bandar-e-Abbas','IRN',273578);
+INSERT INTO City VALUES
+(1401,'Khorramabad','IRN',272815),
+(1402,'Eslamshahr','IRN',265450),
+(1403,'Borujerd','IRN',217804),
+(1404,'Abadan','IRN',206073),
+(1405,'Dezful','IRN',202639),
+(1406,'Kashan','IRN',201372),
+(1407,'Sari','IRN',195882),
+(1408,'Gorgan','IRN',188710),
+(1409,'Najafabad','IRN',178498),
+(1410,'Sabzevar','IRN',170738),
+(1411,'Khomeynishahr','IRN',165888),
+(1412,'Amol','IRN',159092),
+(1413,'Neyshabur','IRN',158847),
+(1414,'Babol','IRN',158346),
+(1415,'Khoy','IRN',148944),
+(1416,'Malayer','IRN',144373),
+(1417,'Bushehr','IRN',143641),
+(1418,'Qaemshahr','IRN',143286),
+(1419,'Qarchak','IRN',142690),
+(1420,'Qods','IRN',138278),
+(1421,'Sirjan','IRN',135024),
+(1422,'Bojnurd','IRN',134835),
+(1423,'Maragheh','IRN',132318),
+(1424,'Birjand','IRN',127608),
+(1425,'Ilam','IRN',126346),
+(1426,'Bukan','IRN',120020),
+(1427,'Masjed-e-Soleyman','IRN',116883),
+(1428,'Saqqez','IRN',115394),
+(1429,'Gonbad-e Qabus','IRN',111253),
+(1430,'Saveh','IRN',111245),
+(1431,'Mahabad','IRN',107799),
+(1432,'Varamin','IRN',107233),
+(1433,'Andimeshk','IRN',106923),
+(1434,'Khorramshahr','IRN',105636),
+(1435,'Shahrud','IRN',104765),
+(1436,'Marv Dasht','IRN',103579),
+(1437,'Zabol','IRN',100887),
+(1438,'Shahr-e Kord','IRN',100477),
+(1439,'Bandar-e Anzali','IRN',98500),
+(1440,'Rafsanjan','IRN',98300),
+(1441,'Marand','IRN',96400),
+(1442,'Torbat-e Heydariyeh','IRN',94600),
+(1443,'Jahrom','IRN',94200),
+(1444,'Semnan','IRN',91045),
+(1445,'Miandoab','IRN',90100),
+(1446,'Qomsheh','IRN',89800),
+(1447,'Dublin','IRL',481854),
+(1448,'Cork','IRL',127187),
+(1449,'Reykjavík','ISL',109184),
+(1450,'Jerusalem','ISR',633700),
+(1451,'Tel Aviv-Jaffa','ISR',348100),
+(1452,'Haifa','ISR',265700),
+(1453,'Rishon Le Ziyyon','ISR',188200),
+(1454,'Beerseba','ISR',163700),
+(1455,'Holon','ISR',163100),
+(1456,'Petah Tiqwa','ISR',159400),
+(1457,'Ashdod','ISR',155800),
+(1458,'Netanya','ISR',154900),
+(1459,'Bat Yam','ISR',137000),
+(1460,'Bene Beraq','ISR',133900),
+(1461,'Ramat Gan','ISR',126900),
+(1462,'Ashqelon','ISR',92300),
+(1463,'Rehovot','ISR',90300),
+(1464,'Roma','ITA',2643581),
+(1465,'Milano','ITA',1300977),
+(1466,'Napoli','ITA',1002619),
+(1467,'Torino','ITA',903705),
+(1468,'Palermo','ITA',683794),
+(1469,'Genova','ITA',636104),
+(1470,'Bologna','ITA',381161),
+(1471,'Firenze','ITA',376662),
+(1472,'Catania','ITA',337862),
+(1473,'Bari','ITA',331848),
+(1474,'Venezia','ITA',277305),
+(1475,'Messina','ITA',259156),
+(1476,'Verona','ITA',255268),
+(1477,'Trieste','ITA',216459),
+(1478,'Padova','ITA',211391),
+(1479,'Taranto','ITA',208214),
+(1480,'Brescia','ITA',191317),
+(1481,'Reggio di Calabria','ITA',179617),
+(1482,'Modena','ITA',176022),
+(1483,'Prato','ITA',172473),
+(1484,'Parma','ITA',168717),
+(1485,'Cagliari','ITA',165926),
+(1486,'Livorno','ITA',161673),
+(1487,'Perugia','ITA',156673),
+(1488,'Foggia','ITA',154891),
+(1489,'Reggio nell´ Emilia','ITA',143664),
+(1490,'Salerno','ITA',142055),
+(1491,'Ravenna','ITA',138418),
+(1492,'Ferrara','ITA',132127),
+(1493,'Rimini','ITA',131062),
+(1494,'Syrakusa','ITA',126282),
+(1495,'Sassari','ITA',120803),
+(1496,'Monza','ITA',119516),
+(1497,'Bergamo','ITA',117837),
+(1498,'Pescara','ITA',115698),
+(1499,'Latina','ITA',114099),
+(1500,'Vicenza','ITA',109738),
+(1501,'Terni','ITA',107770),
+(1502,'Forlì','ITA',107475),
+(1503,'Trento','ITA',104906),
+(1504,'Novara','ITA',102037),
+(1505,'Piacenza','ITA',98384),
+(1506,'Ancona','ITA',98329),
+(1507,'Lecce','ITA',98208),
+(1508,'Bolzano','ITA',97232),
+(1509,'Catanzaro','ITA',96700),
+(1510,'La Spezia','ITA',95504),
+(1511,'Udine','ITA',94932),
+(1512,'Torre del Greco','ITA',94505),
+(1513,'Andria','ITA',94443),
+(1514,'Brindisi','ITA',93454),
+(1515,'Giugliano in Campania','ITA',93286),
+(1516,'Pisa','ITA',92379),
+(1517,'Barletta','ITA',91904),
+(1518,'Arezzo','ITA',91729),
+(1519,'Alessandria','ITA',90289),
+(1520,'Cesena','ITA',89852),
+(1521,'Pesaro','ITA',88987),
+(1522,'Dili','TMP',47900),
+(1523,'Wien','AUT',1608144),
+(1524,'Graz','AUT',240967),
+(1525,'Linz','AUT',188022),
+(1526,'Salzburg','AUT',144247),
+(1527,'Innsbruck','AUT',111752),
+(1528,'Klagenfurt','AUT',91141),
+(1529,'Spanish Town','JAM',110379),
+(1530,'Kingston','JAM',103962),
+(1531,'Portmore','JAM',99799),
+(1532,'Tokyo','JPN',7980230),
+(1533,'Jokohama [Yokohama]','JPN',3339594),
+(1534,'Osaka','JPN',2595674),
+(1535,'Nagoya','JPN',2154376),
+(1536,'Sapporo','JPN',1790886),
+(1537,'Kioto','JPN',1461974),
+(1538,'Kobe','JPN',1425139),
+(1539,'Fukuoka','JPN',1308379),
+(1540,'Kawasaki','JPN',1217359),
+(1541,'Hiroshima','JPN',1119117),
+(1542,'Kitakyushu','JPN',1016264),
+(1543,'Sendai','JPN',989975),
+(1544,'Chiba','JPN',863930),
+(1545,'Sakai','JPN',797735),
+(1546,'Kumamoto','JPN',656734),
+(1547,'Okayama','JPN',624269),
+(1548,'Sagamihara','JPN',586300),
+(1549,'Hamamatsu','JPN',568796),
+(1550,'Kagoshima','JPN',549977),
+(1551,'Funabashi','JPN',545299),
+(1552,'Higashiosaka','JPN',517785),
+(1553,'Hachioji','JPN',513451),
+(1554,'Niigata','JPN',497464),
+(1555,'Amagasaki','JPN',481434),
+(1556,'Himeji','JPN',475167),
+(1557,'Shizuoka','JPN',473854),
+(1558,'Urawa','JPN',469675),
+(1559,'Matsuyama','JPN',466133),
+(1560,'Matsudo','JPN',461126),
+(1561,'Kanazawa','JPN',455386),
+(1562,'Kawaguchi','JPN',452155),
+(1563,'Ichikawa','JPN',441893),
+(1564,'Omiya','JPN',441649),
+(1565,'Utsunomiya','JPN',440353),
+(1566,'Oita','JPN',433401),
+(1567,'Nagasaki','JPN',432759),
+(1568,'Yokosuka','JPN',430200),
+(1569,'Kurashiki','JPN',425103),
+(1570,'Gifu','JPN',408007),
+(1571,'Hirakata','JPN',403151),
+(1572,'Nishinomiya','JPN',397618),
+(1573,'Toyonaka','JPN',396689),
+(1574,'Wakayama','JPN',391233),
+(1575,'Fukuyama','JPN',376921),
+(1576,'Fujisawa','JPN',372840),
+(1577,'Asahikawa','JPN',364813),
+(1578,'Machida','JPN',364197),
+(1579,'Nara','JPN',362812),
+(1580,'Takatsuki','JPN',361747),
+(1581,'Iwaki','JPN',361737),
+(1582,'Nagano','JPN',361391),
+(1583,'Toyohashi','JPN',360066),
+(1584,'Toyota','JPN',346090),
+(1585,'Suita','JPN',345750),
+(1586,'Takamatsu','JPN',332471),
+(1587,'Koriyama','JPN',330335),
+(1588,'Okazaki','JPN',328711),
+(1589,'Kawagoe','JPN',327211),
+(1590,'Tokorozawa','JPN',325809),
+(1591,'Toyama','JPN',325790),
+(1592,'Kochi','JPN',324710),
+(1593,'Kashiwa','JPN',320296),
+(1594,'Akita','JPN',314440),
+(1595,'Miyazaki','JPN',303784),
+(1596,'Koshigaya','JPN',301446),
+(1597,'Naha','JPN',299851),
+(1598,'Aomori','JPN',295969),
+(1599,'Hakodate','JPN',294788),
+(1600,'Akashi','JPN',292253);
+INSERT INTO City VALUES
+(1601,'Yokkaichi','JPN',288173),
+(1602,'Fukushima','JPN',287525),
+(1603,'Morioka','JPN',287353),
+(1604,'Maebashi','JPN',284473),
+(1605,'Kasugai','JPN',282348),
+(1606,'Otsu','JPN',282070),
+(1607,'Ichihara','JPN',279280),
+(1608,'Yao','JPN',276421),
+(1609,'Ichinomiya','JPN',270828),
+(1610,'Tokushima','JPN',269649),
+(1611,'Kakogawa','JPN',266281),
+(1612,'Ibaraki','JPN',261020),
+(1613,'Neyagawa','JPN',257315),
+(1614,'Shimonoseki','JPN',257263),
+(1615,'Yamagata','JPN',255617),
+(1616,'Fukui','JPN',254818),
+(1617,'Hiratsuka','JPN',254207),
+(1618,'Mito','JPN',246559),
+(1619,'Sasebo','JPN',244240),
+(1620,'Hachinohe','JPN',242979),
+(1621,'Takasaki','JPN',239124),
+(1622,'Shimizu','JPN',239123),
+(1623,'Kurume','JPN',235611),
+(1624,'Fuji','JPN',231527),
+(1625,'Soka','JPN',222768),
+(1626,'Fuchu','JPN',220576),
+(1627,'Chigasaki','JPN',216015),
+(1628,'Atsugi','JPN',212407),
+(1629,'Numazu','JPN',211382),
+(1630,'Ageo','JPN',209442),
+(1631,'Yamato','JPN',208234),
+(1632,'Matsumoto','JPN',206801),
+(1633,'Kure','JPN',206504),
+(1634,'Takarazuka','JPN',205993),
+(1635,'Kasukabe','JPN',201838),
+(1636,'Chofu','JPN',201585),
+(1637,'Odawara','JPN',200171),
+(1638,'Kofu','JPN',199753),
+(1639,'Kushiro','JPN',197608),
+(1640,'Kishiwada','JPN',197276),
+(1641,'Hitachi','JPN',196622),
+(1642,'Nagaoka','JPN',192407),
+(1643,'Itami','JPN',190886),
+(1644,'Uji','JPN',188735),
+(1645,'Suzuka','JPN',184061),
+(1646,'Hirosaki','JPN',177522),
+(1647,'Ube','JPN',175206),
+(1648,'Kodaira','JPN',174984),
+(1649,'Takaoka','JPN',174380),
+(1650,'Obihiro','JPN',173685),
+(1651,'Tomakomai','JPN',171958),
+(1652,'Saga','JPN',170034),
+(1653,'Sakura','JPN',168072),
+(1654,'Kamakura','JPN',167661),
+(1655,'Mitaka','JPN',167268),
+(1656,'Izumi','JPN',166979),
+(1657,'Hino','JPN',166770),
+(1658,'Hadano','JPN',166512),
+(1659,'Ashikaga','JPN',165243),
+(1660,'Tsu','JPN',164543),
+(1661,'Sayama','JPN',162472),
+(1662,'Yachiyo','JPN',161222),
+(1663,'Tsukuba','JPN',160768),
+(1664,'Tachikawa','JPN',159430),
+(1665,'Kumagaya','JPN',157171),
+(1666,'Moriguchi','JPN',155941),
+(1667,'Otaru','JPN',155784),
+(1668,'Anjo','JPN',153823),
+(1669,'Narashino','JPN',152849),
+(1670,'Oyama','JPN',152820),
+(1671,'Ogaki','JPN',151758),
+(1672,'Matsue','JPN',149821),
+(1673,'Kawanishi','JPN',149794),
+(1674,'Hitachinaka','JPN',148006),
+(1675,'Niiza','JPN',147744),
+(1676,'Nagareyama','JPN',147738),
+(1677,'Tottori','JPN',147523),
+(1678,'Tama','JPN',146712),
+(1679,'Iruma','JPN',145922),
+(1680,'Ota','JPN',145317),
+(1681,'Omuta','JPN',142889),
+(1682,'Komaki','JPN',139827),
+(1683,'Ome','JPN',139216),
+(1684,'Kadoma','JPN',138953),
+(1685,'Yamaguchi','JPN',138210),
+(1686,'Higashimurayama','JPN',136970),
+(1687,'Yonago','JPN',136461),
+(1688,'Matsubara','JPN',135010),
+(1689,'Musashino','JPN',134426),
+(1690,'Tsuchiura','JPN',134072),
+(1691,'Joetsu','JPN',133505),
+(1692,'Miyakonojo','JPN',133183),
+(1693,'Misato','JPN',132957),
+(1694,'Kakamigahara','JPN',131831),
+(1695,'Daito','JPN',130594),
+(1696,'Seto','JPN',130470),
+(1697,'Kariya','JPN',127969),
+(1698,'Urayasu','JPN',127550),
+(1699,'Beppu','JPN',127486),
+(1700,'Niihama','JPN',127207),
+(1701,'Minoo','JPN',127026),
+(1702,'Fujieda','JPN',126897),
+(1703,'Abiko','JPN',126670),
+(1704,'Nobeoka','JPN',125547),
+(1705,'Tondabayashi','JPN',125094),
+(1706,'Ueda','JPN',124217),
+(1707,'Kashihara','JPN',124013),
+(1708,'Matsusaka','JPN',123582),
+(1709,'Isesaki','JPN',123285),
+(1710,'Zama','JPN',122046),
+(1711,'Kisarazu','JPN',121967),
+(1712,'Noda','JPN',121030),
+(1713,'Ishinomaki','JPN',120963),
+(1714,'Fujinomiya','JPN',119714),
+(1715,'Kawachinagano','JPN',119666),
+(1716,'Imabari','JPN',119357),
+(1717,'Aizuwakamatsu','JPN',119287),
+(1718,'Higashihiroshima','JPN',119166),
+(1719,'Habikino','JPN',118968),
+(1720,'Ebetsu','JPN',118805),
+(1721,'Hofu','JPN',118751),
+(1722,'Kiryu','JPN',118326),
+(1723,'Okinawa','JPN',117748),
+(1724,'Yaizu','JPN',117258),
+(1725,'Toyokawa','JPN',115781),
+(1726,'Ebina','JPN',115571),
+(1727,'Asaka','JPN',114815),
+(1728,'Higashikurume','JPN',111666),
+(1729,'Ikoma','JPN',111645),
+(1730,'Kitami','JPN',111295),
+(1731,'Koganei','JPN',110969),
+(1732,'Iwatsuki','JPN',110034),
+(1733,'Mishima','JPN',109699),
+(1734,'Handa','JPN',108600),
+(1735,'Muroran','JPN',108275),
+(1736,'Komatsu','JPN',107937),
+(1737,'Yatsushiro','JPN',107661),
+(1738,'Iida','JPN',107583),
+(1739,'Tokuyama','JPN',107078),
+(1740,'Kokubunji','JPN',106996),
+(1741,'Akishima','JPN',106914),
+(1742,'Iwakuni','JPN',106647),
+(1743,'Kusatsu','JPN',106232),
+(1744,'Kuwana','JPN',106121),
+(1745,'Sanda','JPN',105643),
+(1746,'Hikone','JPN',105508),
+(1747,'Toda','JPN',103969),
+(1748,'Tajimi','JPN',103171),
+(1749,'Ikeda','JPN',102710),
+(1750,'Fukaya','JPN',102156),
+(1751,'Ise','JPN',101732),
+(1752,'Sakata','JPN',101651),
+(1753,'Kasuga','JPN',101344),
+(1754,'Kamagaya','JPN',100821),
+(1755,'Tsuruoka','JPN',100713),
+(1756,'Hoya','JPN',100313),
+(1757,'Nishio','JPN',100032),
+(1758,'Tokai','JPN',99738),
+(1759,'Inazawa','JPN',98746),
+(1760,'Sakado','JPN',98221),
+(1761,'Isehara','JPN',98123),
+(1762,'Takasago','JPN',97632),
+(1763,'Fujimi','JPN',96972),
+(1764,'Urasoe','JPN',96002),
+(1765,'Yonezawa','JPN',95592),
+(1766,'Konan','JPN',95521),
+(1767,'Yamatokoriyama','JPN',95165),
+(1768,'Maizuru','JPN',94784),
+(1769,'Onomichi','JPN',93756),
+(1770,'Higashimatsuyama','JPN',93342),
+(1771,'Kimitsu','JPN',93216),
+(1772,'Isahaya','JPN',93058),
+(1773,'Kanuma','JPN',93053),
+(1774,'Izumisano','JPN',92583),
+(1775,'Kameoka','JPN',92398),
+(1776,'Mobara','JPN',91664),
+(1777,'Narita','JPN',91470),
+(1778,'Kashiwazaki','JPN',91229),
+(1779,'Tsuyama','JPN',91170),
+(1780,'Sanaa','YEM',503600),
+(1781,'Aden','YEM',398300),
+(1782,'Taizz','YEM',317600),
+(1783,'Hodeida','YEM',298500),
+(1784,'al-Mukalla','YEM',122400),
+(1785,'Ibb','YEM',103300),
+(1786,'Amman','JOR',1000000),
+(1787,'al-Zarqa','JOR',389815),
+(1788,'Irbid','JOR',231511),
+(1789,'al-Rusayfa','JOR',137247),
+(1790,'Wadi al-Sir','JOR',89104),
+(1791,'Flying Fish Cove','CXR',700),
+(1792,'Beograd','YUG',1204000),
+(1793,'Novi Sad','YUG',179626),
+(1794,'Ni','YUG',175391),
+(1795,'Pritina','YUG',155496),
+(1796,'Kragujevac','YUG',147305),
+(1797,'Podgorica','YUG',135000),
+(1798,'Subotica','YUG',100386),
+(1799,'Prizren','YUG',92303),
+(1800,'Phnom Penh','KHM',570155);
+INSERT INTO City VALUES
+(1801,'Battambang','KHM',129800),
+(1802,'Siem Reap','KHM',105100),
+(1803,'Douala','CMR',1448300),
+(1804,'Yaoundé','CMR',1372800),
+(1805,'Garoua','CMR',177000),
+(1806,'Maroua','CMR',143000),
+(1807,'Bamenda','CMR',138000),
+(1808,'Bafoussam','CMR',131000),
+(1809,'Nkongsamba','CMR',112454),
+(1810,'Montréal','CAN',1016376),
+(1811,'Calgary','CAN',768082),
+(1812,'Toronto','CAN',688275),
+(1813,'North York','CAN',622632),
+(1814,'Winnipeg','CAN',618477),
+(1815,'Edmonton','CAN',616306),
+(1816,'Mississauga','CAN',608072),
+(1817,'Scarborough','CAN',594501),
+(1818,'Vancouver','CAN',514008),
+(1819,'Etobicoke','CAN',348845),
+(1820,'London','CAN',339917),
+(1821,'Hamilton','CAN',335614),
+(1822,'Ottawa','CAN',335277),
+(1823,'Laval','CAN',330393),
+(1824,'Surrey','CAN',304477),
+(1825,'Brampton','CAN',296711),
+(1826,'Windsor','CAN',207588),
+(1827,'Saskatoon','CAN',193647),
+(1828,'Kitchener','CAN',189959),
+(1829,'Markham','CAN',189098),
+(1830,'Regina','CAN',180400),
+(1831,'Burnaby','CAN',179209),
+(1832,'Québec','CAN',167264),
+(1833,'York','CAN',154980),
+(1834,'Richmond','CAN',148867),
+(1835,'Vaughan','CAN',147889),
+(1836,'Burlington','CAN',145150),
+(1837,'Oshawa','CAN',140173),
+(1838,'Oakville','CAN',139192),
+(1839,'Saint Catharines','CAN',136216),
+(1840,'Longueuil','CAN',127977),
+(1841,'Richmond Hill','CAN',116428),
+(1842,'Thunder Bay','CAN',115913),
+(1843,'Nepean','CAN',115100),
+(1844,'Cape Breton','CAN',114733),
+(1845,'East York','CAN',114034),
+(1846,'Halifax','CAN',113910),
+(1847,'Cambridge','CAN',109186),
+(1848,'Gloucester','CAN',107314),
+(1849,'Abbotsford','CAN',105403),
+(1850,'Guelph','CAN',103593),
+(1851,'Saint John´s','CAN',101936),
+(1852,'Coquitlam','CAN',101820),
+(1853,'Saanich','CAN',101388),
+(1854,'Gatineau','CAN',100702),
+(1855,'Delta','CAN',95411),
+(1856,'Sudbury','CAN',92686),
+(1857,'Kelowna','CAN',89442),
+(1858,'Barrie','CAN',89269),
+(1859,'Praia','CPV',94800),
+(1860,'Almaty','KAZ',1129400),
+(1861,'Qaraghandy','KAZ',436900),
+(1862,'Shymkent','KAZ',360100),
+(1863,'Taraz','KAZ',330100),
+(1864,'Astana','KAZ',311200),
+(1865,'Öskemen','KAZ',311000),
+(1866,'Pavlodar','KAZ',300500),
+(1867,'Semey','KAZ',269600),
+(1868,'Aqtöbe','KAZ',253100),
+(1869,'Qostanay','KAZ',221400),
+(1870,'Petropavl','KAZ',203500),
+(1871,'Oral','KAZ',195500),
+(1872,'Temirtau','KAZ',170500),
+(1873,'Qyzylorda','KAZ',157400),
+(1874,'Aqtau','KAZ',143400),
+(1875,'Atyrau','KAZ',142500),
+(1876,'Ekibastuz','KAZ',127200),
+(1877,'Kökshetau','KAZ',123400),
+(1878,'Rudnyy','KAZ',109500),
+(1879,'Taldyqorghan','KAZ',98000),
+(1880,'Zhezqazghan','KAZ',90000),
+(1881,'Nairobi','KEN',2290000),
+(1882,'Mombasa','KEN',461753),
+(1883,'Kisumu','KEN',192733),
+(1884,'Nakuru','KEN',163927),
+(1885,'Machakos','KEN',116293),
+(1886,'Eldoret','KEN',111882),
+(1887,'Meru','KEN',94947),
+(1888,'Nyeri','KEN',91258),
+(1889,'Bangui','CAF',524000),
+(1890,'Shanghai','CHN',9696300),
+(1891,'Peking','CHN',7472000),
+(1892,'Chongqing','CHN',6351600),
+(1893,'Tianjin','CHN',5286800),
+(1894,'Wuhan','CHN',4344600),
+(1895,'Harbin','CHN',4289800),
+(1896,'Shenyang','CHN',4265200),
+(1897,'Kanton [Guangzhou]','CHN',4256300),
+(1898,'Chengdu','CHN',3361500),
+(1899,'Nanking [Nanjing]','CHN',2870300),
+(1900,'Changchun','CHN',2812000),
+(1901,'Xi´an','CHN',2761400),
+(1902,'Dalian','CHN',2697000),
+(1903,'Qingdao','CHN',2596000),
+(1904,'Jinan','CHN',2278100),
+(1905,'Hangzhou','CHN',2190500),
+(1906,'Zhengzhou','CHN',2107200),
+(1907,'Shijiazhuang','CHN',2041500),
+(1908,'Taiyuan','CHN',1968400),
+(1909,'Kunming','CHN',1829500),
+(1910,'Changsha','CHN',1809800),
+(1911,'Nanchang','CHN',1691600),
+(1912,'Fuzhou','CHN',1593800),
+(1913,'Lanzhou','CHN',1565800),
+(1914,'Guiyang','CHN',1465200),
+(1915,'Ningbo','CHN',1371200),
+(1916,'Hefei','CHN',1369100),
+(1917,'Urumti [Ürümqi]','CHN',1310100),
+(1918,'Anshan','CHN',1200000),
+(1919,'Fushun','CHN',1200000),
+(1920,'Nanning','CHN',1161800),
+(1921,'Zibo','CHN',1140000),
+(1922,'Qiqihar','CHN',1070000),
+(1923,'Jilin','CHN',1040000),
+(1924,'Tangshan','CHN',1040000),
+(1925,'Baotou','CHN',980000),
+(1926,'Shenzhen','CHN',950500),
+(1927,'Hohhot','CHN',916700),
+(1928,'Handan','CHN',840000),
+(1929,'Wuxi','CHN',830000),
+(1930,'Xuzhou','CHN',810000),
+(1931,'Datong','CHN',800000),
+(1932,'Yichun','CHN',800000),
+(1933,'Benxi','CHN',770000),
+(1934,'Luoyang','CHN',760000),
+(1935,'Suzhou','CHN',710000),
+(1936,'Xining','CHN',700200),
+(1937,'Huainan','CHN',700000),
+(1938,'Jixi','CHN',683885),
+(1939,'Daqing','CHN',660000),
+(1940,'Fuxin','CHN',640000),
+(1941,'Amoy [Xiamen]','CHN',627500),
+(1942,'Liuzhou','CHN',610000),
+(1943,'Shantou','CHN',580000),
+(1944,'Jinzhou','CHN',570000),
+(1945,'Mudanjiang','CHN',570000),
+(1946,'Yinchuan','CHN',544500),
+(1947,'Changzhou','CHN',530000),
+(1948,'Zhangjiakou','CHN',530000),
+(1949,'Dandong','CHN',520000),
+(1950,'Hegang','CHN',520000),
+(1951,'Kaifeng','CHN',510000),
+(1952,'Jiamusi','CHN',493409),
+(1953,'Liaoyang','CHN',492559),
+(1954,'Hengyang','CHN',487148),
+(1955,'Baoding','CHN',483155),
+(1956,'Hunjiang','CHN',482043),
+(1957,'Xinxiang','CHN',473762),
+(1958,'Huangshi','CHN',457601),
+(1959,'Haikou','CHN',454300),
+(1960,'Yantai','CHN',452127),
+(1961,'Bengbu','CHN',449245),
+(1962,'Xiangtan','CHN',441968),
+(1963,'Weifang','CHN',428522),
+ (1964,'Wuhu','CHN',425740),
+(1965,'Pingxiang','CHN',425579),
+(1966,'Yingkou','CHN',421589),
+(1967,'Anyang','CHN',420332),
+(1968,'Panzhihua','CHN',415466),
+(1969,'Pingdingshan','CHN',410775),
+(1970,'Xiangfan','CHN',410407),
+(1971,'Zhuzhou','CHN',409924),
+(1972,'Jiaozuo','CHN',409100),
+(1973,'Wenzhou','CHN',401871),
+(1974,'Zhangjiang','CHN',400997),
+(1975,'Zigong','CHN',393184),
+(1976,'Shuangyashan','CHN',386081),
+(1977,'Zaozhuang','CHN',380846),
+(1978,'Yakeshi','CHN',377869),
+(1979,'Yichang','CHN',371601),
+(1980,'Zhenjiang','CHN',368316),
+(1981,'Huaibei','CHN',366549),
+(1982,'Qinhuangdao','CHN',364972),
+(1983,'Guilin','CHN',364130),
+(1984,'Liupanshui','CHN',363954),
+(1985,'Panjin','CHN',362773),
+(1986,'Yangquan','CHN',362268),
+(1987,'Jinxi','CHN',357052),
+(1988,'Liaoyuan','CHN',354141),
+(1989,'Lianyungang','CHN',354139),
+(1990,'Xianyang','CHN',352125),
+(1991,'Tai´an','CHN',350696),
+(1992,'Chifeng','CHN',350077),
+(1993,'Shaoguan','CHN',350043),
+(1994,'Nantong','CHN',343341),
+(1995,'Leshan','CHN',341128),
+(1996,'Baoji','CHN',337765),
+(1997,'Linyi','CHN',324720),
+(1998,'Tonghua','CHN',324600),
+(1999,'Siping','CHN',317223),
+(2000,'Changzhi','CHN',317144);
+INSERT INTO City VALUES
+(2001,'Tengzhou','CHN',315083),
+(2002,'Chaozhou','CHN',313469),
+(2003,'Yangzhou','CHN',312892),
+(2004,'Dongwan','CHN',308669),
+(2005,'Ma´anshan','CHN',305421),
+(2006,'Foshan','CHN',303160),
+(2007,'Yueyang','CHN',302800),
+(2008,'Xingtai','CHN',302789),
+(2009,'Changde','CHN',301276),
+(2010,'Shihezi','CHN',299676),
+(2011,'Yancheng','CHN',296831),
+(2012,'Jiujiang','CHN',291187),
+(2013,'Dongying','CHN',281728),
+(2014,'Shashi','CHN',281352),
+(2015,'Xintai','CHN',281248),
+(2016,'Jingdezhen','CHN',281183),
+(2017,'Tongchuan','CHN',280657),
+(2018,'Zhongshan','CHN',278829),
+(2019,'Shiyan','CHN',273786),
+(2020,'Tieli','CHN',265683),
+(2021,'Jining','CHN',265248),
+(2022,'Wuhai','CHN',264081),
+(2023,'Mianyang','CHN',262947),
+(2024,'Luzhou','CHN',262892),
+(2025,'Zunyi','CHN',261862),
+(2026,'Shizuishan','CHN',257862),
+(2027,'Neijiang','CHN',256012),
+(2028,'Tongliao','CHN',255129),
+(2029,'Tieling','CHN',254842),
+(2030,'Wafangdian','CHN',251733),
+(2031,'Anqing','CHN',250718),
+(2032,'Shaoyang','CHN',247227),
+(2033,'Laiwu','CHN',246833),
+(2034,'Chengde','CHN',246799),
+(2035,'Tianshui','CHN',244974),
+(2036,'Nanyang','CHN',243303),
+(2037,'Cangzhou','CHN',242708),
+(2038,'Yibin','CHN',241019),
+(2039,'Huaiyin','CHN',239675),
+(2040,'Dunhua','CHN',235100),
+(2041,'Yanji','CHN',230892),
+(2042,'Jiangmen','CHN',230587),
+(2043,'Tongling','CHN',228017),
+(2044,'Suihua','CHN',227881),
+(2045,'Gongziling','CHN',226569),
+(2046,'Xiantao','CHN',222884),
+(2047,'Chaoyang','CHN',222394),
+(2048,'Ganzhou','CHN',220129),
+(2049,'Huzhou','CHN',218071),
+(2050,'Baicheng','CHN',217987),
+(2051,'Shangzi','CHN',215373),
+(2052,'Yangjiang','CHN',215196),
+(2053,'Qitaihe','CHN',214957),
+(2054,'Gejiu','CHN',214294),
+(2055,'Jiangyin','CHN',213659),
+(2056,'Hebi','CHN',212976),
+(2057,'Jiaxing','CHN',211526),
+(2058,'Wuzhou','CHN',210452),
+(2059,'Meihekou','CHN',209038),
+(2060,'Xuchang','CHN',208815),
+(2061,'Liaocheng','CHN',207844),
+(2062,'Haicheng','CHN',205560),
+(2063,'Qianjiang','CHN',205504),
+(2064,'Baiyin','CHN',204970),
+(2065,'Bei´an','CHN',204899),
+(2066,'Yixing','CHN',200824),
+(2067,'Laizhou','CHN',198664),
+(2068,'Qaramay','CHN',197602),
+(2069,'Acheng','CHN',197595),
+(2070,'Dezhou','CHN',195485),
+(2071,'Nanping','CHN',195064),
+(2072,'Zhaoqing','CHN',194784),
+(2073,'Beipiao','CHN',194301),
+(2074,'Fengcheng','CHN',193784),
+(2075,'Fuyu','CHN',192981),
+(2076,'Xinyang','CHN',192509),
+(2077,'Dongtai','CHN',192247),
+(2078,'Yuci','CHN',191356),
+(2079,'Honghu','CHN',190772),
+(2080,'Ezhou','CHN',190123),
+(2081,'Heze','CHN',189293),
+(2082,'Daxian','CHN',188101),
+(2083,'Linfen','CHN',187309),
+(2084,'Tianmen','CHN',186332),
+(2085,'Yiyang','CHN',185818),
+(2086,'Quanzhou','CHN',185154),
+(2087,'Rizhao','CHN',185048),
+(2088,'Deyang','CHN',182488),
+(2089,'Guangyuan','CHN',182241),
+(2090,'Changshu','CHN',181805),
+(2091,'Zhangzhou','CHN',181424),
+(2092,'Hailar','CHN',180650),
+(2093,'Nanchong','CHN',180273),
+(2094,'Jiutai','CHN',180130),
+(2095,'Zhaodong','CHN',179976),
+(2096,'Shaoxing','CHN',179818),
+(2097,'Fuyang','CHN',179572),
+(2098,'Maoming','CHN',178683),
+(2099,'Qujing','CHN',178669),
+(2100,'Ghulja','CHN',177193),
+(2101,'Jiaohe','CHN',176367),
+(2102,'Puyang','CHN',175988),
+(2103,'Huadian','CHN',175873),
+(2104,'Jiangyou','CHN',175753),
+(2105,'Qashqar','CHN',174570),
+(2106,'Anshun','CHN',174142),
+(2107,'Fuling','CHN',173878),
+(2108,'Xinyu','CHN',173524),
+(2109,'Hanzhong','CHN',169930),
+(2110,'Danyang','CHN',169603),
+(2111,'Chenzhou','CHN',169400),
+(2112,'Xiaogan','CHN',166280),
+(2113,'Shangqiu','CHN',164880),
+(2114,'Zhuhai','CHN',164747),
+(2115,'Qingyuan','CHN',164641),
+(2116,'Aqsu','CHN',164092),
+(2117,'Jining','CHN',163552),
+(2118,'Xiaoshan','CHN',162930),
+(2119,'Zaoyang','CHN',162198),
+(2120,'Xinghua','CHN',161910),
+(2121,'Hami','CHN',161315),
+(2122,'Huizhou','CHN',161023),
+(2123,'Jinmen','CHN',160794),
+(2124,'Sanming','CHN',160691),
+(2125,'Ulanhot','CHN',159538),
+(2126,'Korla','CHN',159344),
+(2127,'Wanxian','CHN',156823),
+(2128,'Rui´an','CHN',156468),
+(2129,'Zhoushan','CHN',156317),
+(2130,'Liangcheng','CHN',156307),
+(2131,'Jiaozhou','CHN',153364),
+(2132,'Taizhou','CHN',152442),
+(2133,'Suzhou','CHN',151862),
+(2134,'Yichun','CHN',151585),
+(2135,'Taonan','CHN',150168),
+(2136,'Pingdu','CHN',150123),
+(2137,'Ji´an','CHN',148583),
+(2138,'Longkou','CHN',148362),
+(2139,'Langfang','CHN',148105),
+(2140,'Zhoukou','CHN',146288),
+(2141,'Suining','CHN',146086),
+(2142,'Yulin','CHN',144467),
+(2143,'Jinhua','CHN',144280),
+(2144,'Liu´an','CHN',144248),
+(2145,'Shuangcheng','CHN',142659),
+(2146,'Suizhou','CHN',142302),
+(2147,'Ankang','CHN',142170),
+(2148,'Weinan','CHN',140169),
+(2149,'Longjing','CHN',139417),
+(2150,'Da´an','CHN',138963),
+(2151,'Lengshuijiang','CHN',137994),
+(2152,'Laiyang','CHN',137080),
+(2153,'Xianning','CHN',136811),
+(2154,'Dali','CHN',136554),
+(2155,'Anda','CHN',136446),
+(2156,'Jincheng','CHN',136396),
+(2157,'Longyan','CHN',134481),
+(2158,'Xichang','CHN',134419),
+(2159,'Wendeng','CHN',133910),
+(2160,'Hailun','CHN',133565),
+(2161,'Binzhou','CHN',133555),
+(2162,'Linhe','CHN',133183),
+(2163,'Wuwei','CHN',133101),
+(2164,'Duyun','CHN',132971),
+(2165,'Mishan','CHN',132744),
+(2166,'Shangrao','CHN',132455),
+(2167,'Changji','CHN',132260),
+(2168,'Meixian','CHN',132156),
+(2169,'Yushu','CHN',131861),
+(2170,'Tiefa','CHN',131807),
+(2171,'Huai´an','CHN',131149),
+(2172,'Leiyang','CHN',130115),
+(2173,'Zalantun','CHN',130031),
+(2174,'Weihai','CHN',128888),
+(2175,'Loudi','CHN',128418),
+(2176,'Qingzhou','CHN',128258),
+(2177,'Qidong','CHN',126872),
+(2178,'Huaihua','CHN',126785),
+(2179,'Luohe','CHN',126438),
+(2180,'Chuzhou','CHN',125341),
+(2181,'Kaiyuan','CHN',124219),
+(2182,'Linqing','CHN',123958),
+(2183,'Chaohu','CHN',123676),
+(2184,'Laohekou','CHN',123366),
+(2185,'Dujiangyan','CHN',123357),
+(2186,'Zhumadian','CHN',123232),
+(2187,'Linchuan','CHN',121949),
+(2188,'Jiaonan','CHN',121397),
+(2189,'Sanmenxia','CHN',120523),
+(2190,'Heyuan','CHN',120101),
+(2191,'Manzhouli','CHN',120023),
+(2192,'Lhasa','CHN',120000),
+(2193,'Lianyuan','CHN',118858),
+(2194,'Kuytun','CHN',118553),
+(2195,'Puqi','CHN',117264),
+(2196,'Hongjiang','CHN',116188),
+(2197,'Qinzhou','CHN',114586),
+(2198,'Renqiu','CHN',114256),
+(2199,'Yuyao','CHN',114065),
+(2200,'Guigang','CHN',114025);
+INSERT INTO City VALUES
+(2201,'Kaili','CHN',113958),
+(2202,'Yan´an','CHN',113277),
+(2203,'Beihai','CHN',112673),
+(2204,'Xuangzhou','CHN',112673),
+(2205,'Quzhou','CHN',112373),
+(2206,'Yong´an','CHN',111762),
+(2207,'Zixing','CHN',110048),
+(2208,'Liyang','CHN',109520),
+(2209,'Yizheng','CHN',109268),
+(2210,'Yumen','CHN',109234),
+(2211,'Liling','CHN',108504),
+(2212,'Yuncheng','CHN',108359),
+(2213,'Shanwei','CHN',107847),
+(2214,'Cixi','CHN',107329),
+(2215,'Yuanjiang','CHN',107004),
+(2216,'Bozhou','CHN',106346),
+(2217,'Jinchang','CHN',105287),
+(2218,'Fu´an','CHN',105265),
+(2219,'Suqian','CHN',105021),
+(2220,'Shishou','CHN',104571),
+(2221,'Hengshui','CHN',104269),
+(2222,'Danjiangkou','CHN',103211),
+(2223,'Fujin','CHN',103104),
+(2224,'Sanya','CHN',102820),
+(2225,'Guangshui','CHN',102770),
+(2226,'Huangshan','CHN',102628),
+(2227,'Xingcheng','CHN',102384),
+(2228,'Zhucheng','CHN',102134),
+(2229,'Kunshan','CHN',102052),
+(2230,'Haining','CHN',100478),
+(2231,'Pingliang','CHN',99265),
+(2232,'Fuqing','CHN',99193),
+(2233,'Xinzhou','CHN',98667),
+(2234,'Jieyang','CHN',98531),
+(2235,'Zhangjiagang','CHN',97994),
+(2236,'Tong Xian','CHN',97168),
+(2237,'Ya´an','CHN',95900),
+(2238,'Jinzhou','CHN',95761),
+(2239,'Emeishan','CHN',94000),
+(2240,'Enshi','CHN',93056),
+(2241,'Bose','CHN',93009),
+(2242,'Yuzhou','CHN',92889),
+(2243,'Kaiyuan','CHN',91999),
+(2244,'Tumen','CHN',91471),
+(2245,'Putian','CHN',91030),
+(2246,'Linhai','CHN',90870),
+(2247,'Xilin Hot','CHN',90646),
+(2248,'Shaowu','CHN',90286),
+(2249,'Junan','CHN',90222),
+(2250,'Huaying','CHN',89400),
+(2251,'Pingyi','CHN',89373),
+(2252,'Huangyan','CHN',89288),
+(2253,'Bishkek','KGZ',589400),
+(2254,'Osh','KGZ',222700),
+(2255,'Bikenibeu','KIR',5055),
+(2256,'Bairiki','KIR',2226),
+(2257,'Santafé de Bogotá','COL',6260862),
+(2258,'Cali','COL',2077386),
+(2259,'Medellín','COL',1861265),
+(2260,'Barranquilla','COL',1223260),
+(2261,'Cartagena','COL',805757),
+(2262,'Cúcuta','COL',606932),
+(2263,'Bucaramanga','COL',515555),
+(2264,'Ibagué','COL',393664),
+(2265,'Pereira','COL',381725),
+(2266,'Santa Marta','COL',359147),
+(2267,'Manizales','COL',337580),
+(2268,'Bello','COL',333470),
+(2269,'Pasto','COL',332396),
+(2270,'Neiva','COL',300052),
+(2271,'Soledad','COL',295058),
+(2272,'Armenia','COL',288977),
+(2273,'Villavicencio','COL',273140),
+(2274,'Soacha','COL',272058),
+(2275,'Valledupar','COL',263247),
+(2276,'Montería','COL',248245),
+(2277,'Itagüí','COL',228985),
+(2278,'Palmira','COL',226509),
+(2279,'Buenaventura','COL',224336),
+(2280,'Floridablanca','COL',221913),
+(2281,'Sincelejo','COL',220704),
+(2282,'Popayán','COL',200719),
+(2283,'Barrancabermeja','COL',178020),
+(2284,'Dos Quebradas','COL',159363),
+(2285,'Tuluá','COL',152488),
+(2286,'Envigado','COL',135848),
+(2287,'Cartago','COL',125884),
+(2288,'Girardot','COL',110963),
+(2289,'Buga','COL',110699),
+(2290,'Tunja','COL',109740),
+(2291,'Florencia','COL',108574),
+(2292,'Maicao','COL',108053),
+(2293,'Sogamoso','COL',107728),
+(2294,'Giron','COL',90688),
+(2295,'Moroni','COM',36000),
+(2296,'Brazzaville','COG',950000),
+(2297,'Pointe-Noire','COG',500000),
+(2298,'Kinshasa','COD',5064000),
+(2299,'Lubumbashi','COD',851381),
+(2300,'Mbuji-Mayi','COD',806475),
+(2301,'Kolwezi','COD',417810),
+(2302,'Kisangani','COD',417517),
+(2303,'Kananga','COD',393030),
+(2304,'Likasi','COD',299118),
+(2305,'Bukavu','COD',201569),
+(2306,'Kikwit','COD',182142),
+(2307,'Tshikapa','COD',180860),
+(2308,'Matadi','COD',172730),
+(2309,'Mbandaka','COD',169841),
+(2310,'Mwene-Ditu','COD',137459),
+(2311,'Boma','COD',135284),
+(2312,'Uvira','COD',115590),
+(2313,'Butembo','COD',109406),
+(2314,'Goma','COD',109094),
+(2315,'Kalemie','COD',101309),
+(2316,'Bantam','CCK',503),
+(2317,'West Island','CCK',167),
+(2318,'Pyongyang','PRK',2484000),
+(2319,'Hamhung','PRK',709730),
+(2320,'Chongjin','PRK',582480),
+(2321,'Nampo','PRK',566200),
+(2322,'Sinuiju','PRK',326011),
+(2323,'Wonsan','PRK',300148),
+(2324,'Phyongsong','PRK',272934),
+(2325,'Sariwon','PRK',254146),
+(2326,'Haeju','PRK',229172),
+(2327,'Kanggye','PRK',223410),
+(2328,'Kimchaek','PRK',179000),
+(2329,'Hyesan','PRK',178020),
+(2330,'Kaesong','PRK',171500),
+(2331,'Seoul','KOR',9981619),
+(2332,'Pusan','KOR',3804522),
+(2333,'Inchon','KOR',2559424),
+(2334,'Taegu','KOR',2548568),
+(2335,'Taejon','KOR',1425835),
+(2336,'Kwangju','KOR',1368341),
+(2337,'Ulsan','KOR',1084891),
+(2338,'Songnam','KOR',869094),
+(2339,'Puchon','KOR',779412),
+(2340,'Suwon','KOR',755550),
+(2341,'Anyang','KOR',591106),
+(2342,'Chonju','KOR',563153),
+(2343,'Chongju','KOR',531376),
+(2344,'Koyang','KOR',518282),
+(2345,'Ansan','KOR',510314),
+(2346,'Pohang','KOR',508899),
+(2347,'Chang-won','KOR',481694),
+(2348,'Masan','KOR',441242),
+(2349,'Kwangmyong','KOR',350914),
+(2350,'Chonan','KOR',330259),
+(2351,'Chinju','KOR',329886),
+(2352,'Iksan','KOR',322685),
+(2353,'Pyongtaek','KOR',312927),
+(2354,'Kumi','KOR',311431),
+(2355,'Uijongbu','KOR',276111),
+(2356,'Kyongju','KOR',272968),
+(2357,'Kunsan','KOR',266569),
+(2358,'Cheju','KOR',258511),
+(2359,'Kimhae','KOR',256370),
+(2360,'Sunchon','KOR',249263),
+(2361,'Mokpo','KOR',247452),
+(2362,'Yong-in','KOR',242643),
+(2363,'Wonju','KOR',237460),
+(2364,'Kunpo','KOR',235233),
+(2365,'Chunchon','KOR',234528),
+(2366,'Namyangju','KOR',229060),
+(2367,'Kangnung','KOR',220403),
+(2368,'Chungju','KOR',205206),
+(2369,'Andong','KOR',188443),
+(2370,'Yosu','KOR',183596),
+(2371,'Kyongsan','KOR',173746),
+(2372,'Paju','KOR',163379),
+(2373,'Yangsan','KOR',163351),
+(2374,'Ichon','KOR',155332),
+(2375,'Asan','KOR',154663),
+(2376,'Koje','KOR',147562),
+(2377,'Kimchon','KOR',147027),
+(2378,'Nonsan','KOR',146619),
+(2379,'Kuri','KOR',142173),
+(2380,'Chong-up','KOR',139111),
+(2381,'Chechon','KOR',137070),
+(2382,'Sosan','KOR',134746),
+(2383,'Shihung','KOR',133443),
+(2384,'Tong-yong','KOR',131717),
+(2385,'Kongju','KOR',131229),
+(2386,'Yongju','KOR',131097),
+(2387,'Chinhae','KOR',125997),
+(2388,'Sangju','KOR',124116),
+(2389,'Poryong','KOR',122604),
+(2390,'Kwang-yang','KOR',122052),
+(2391,'Miryang','KOR',121501),
+(2392,'Hanam','KOR',115812),
+(2393,'Kimje','KOR',115427),
+(2394,'Yongchon','KOR',113511),
+(2395,'Sachon','KOR',113494),
+(2396,'Uiwang','KOR',108788),
+(2397,'Naju','KOR',107831),
+(2398,'Namwon','KOR',103544),
+(2399,'Tonghae','KOR',95472),
+(2400,'Mun-gyong','KOR',92239);
+INSERT INTO City VALUES
+(2401,'Athenai','GRC',772072),
+(2402,'Thessaloniki','GRC',383967),
+(2403,'Pireus','GRC',182671),
+(2404,'Patras','GRC',153344),
+(2405,'Peristerion','GRC',137288),
+(2406,'Herakleion','GRC',116178),
+(2407,'Kallithea','GRC',114233),
+(2408,'Larisa','GRC',113090),
+(2409,'Zagreb','HRV',706770),
+(2410,'Split','HRV',189388),
+(2411,'Rijeka','HRV',167964),
+(2412,'Osijek','HRV',104761),
+(2413,'La Habana','CUB',2256000),
+(2414,'Santiago de Cuba','CUB',433180),
+(2415,'Camagüey','CUB',298726),
+(2416,'Holguín','CUB',249492),
+(2417,'Santa Clara','CUB',207350),
+(2418,'Guantánamo','CUB',205078),
+(2419,'Pinar del Río','CUB',142100),
+(2420,'Bayamo','CUB',141000),
+(2421,'Cienfuegos','CUB',132770),
+(2422,'Victoria de las Tunas','CUB',132350),
+(2423,'Matanzas','CUB',123273),
+(2424,'Manzanillo','CUB',109350),
+(2425,'Sancti-Spíritus','CUB',100751),
+(2426,'Ciego de Ávila','CUB',98505),
+(2427,'al-Salimiya','KWT',130215),
+(2428,'Jalib al-Shuyukh','KWT',102178),
+(2429,'Kuwait','KWT',28859),
+(2430,'Nicosia','CYP',195000),
+(2431,'Limassol','CYP',154400),
+(2432,'Vientiane','LAO',531800),
+(2433,'Savannakhet','LAO',96652),
+(2434,'Riga','LVA',764328),
+(2435,'Daugavpils','LVA',114829),
+(2436,'Liepaja','LVA',89439),
+(2437,'Maseru','LSO',297000),
+(2438,'Beirut','LBN',1100000),
+(2439,'Tripoli','LBN',240000),
+(2440,'Monrovia','LBR',850000),
+(2441,'Tripoli','LBY',1682000),
+(2442,'Bengasi','LBY',804000),
+(2443,'Misrata','LBY',121669),
+(2444,'al-Zawiya','LBY',89338),
+(2445,'Schaan','LIE',5346),
+(2446,'Vaduz','LIE',5043),
+(2447,'Vilnius','LTU',577969),
+(2448,'Kaunas','LTU',412639),
+(2449,'Klaipeda','LTU',202451),
+(2450,'iauliai','LTU',146563),
+(2451,'Panevezys','LTU',133695),
+(2452,'Luxembourg [Luxemburg/Lëtzebuerg]','LUX',80700),
+(2453,'El-Aaiún','ESH',169000),
+(2454,'Macao','MAC',437500),
+(2455,'Antananarivo','MDG',675669),
+(2456,'Toamasina','MDG',127441),
+(2457,'Antsirabé','MDG',120239),
+(2458,'Mahajanga','MDG',100807),
+(2459,'Fianarantsoa','MDG',99005),
+(2460,'Skopje','MKD',444299),
+(2461,'Blantyre','MWI',478155),
+(2462,'Lilongwe','MWI',435964),
+(2463,'Male','MDV',71000),
+(2464,'Kuala Lumpur','MYS',1297526),
+(2465,'Ipoh','MYS',382853),
+(2466,'Johor Baharu','MYS',328436),
+(2467,'Petaling Jaya','MYS',254350),
+(2468,'Kelang','MYS',243355),
+(2469,'Kuala Terengganu','MYS',228119),
+(2470,'Pinang','MYS',219603),
+(2471,'Kota Bharu','MYS',219582),
+(2472,'Kuantan','MYS',199484),
+(2473,'Taiping','MYS',183261),
+(2474,'Seremban','MYS',182869),
+(2475,'Kuching','MYS',148059),
+(2476,'Sibu','MYS',126381),
+(2477,'Sandakan','MYS',125841),
+(2478,'Alor Setar','MYS',124412),
+(2479,'Selayang Baru','MYS',124228),
+(2480,'Sungai Petani','MYS',114763),
+(2481,'Shah Alam','MYS',102019),
+(2482,'Bamako','MLI',809552),
+(2483,'Birkirkara','MLT',21445),
+(2484,'Valletta','MLT',7073),
+(2485,'Casablanca','MAR',2940623),
+(2486,'Rabat','MAR',623457),
+(2487,'Marrakech','MAR',621914),
+(2488,'Fès','MAR',541162),
+(2489,'Tanger','MAR',521735),
+(2490,'Salé','MAR',504420),
+(2491,'Meknès','MAR',460000),
+(2492,'Oujda','MAR',365382),
+(2493,'Kénitra','MAR',292600),
+(2494,'Tétouan','MAR',277516),
+(2495,'Safi','MAR',262300),
+(2496,'Agadir','MAR',155244),
+(2497,'Mohammedia','MAR',154706),
+(2498,'Khouribga','MAR',152090),
+(2499,'Beni-Mellal','MAR',140212),
+(2500,'Témara','MAR',126303),
+(2501,'El Jadida','MAR',119083),
+(2502,'Nador','MAR',112450),
+(2503,'Ksar el Kebir','MAR',107065),
+(2504,'Settat','MAR',96200),
+(2505,'Taza','MAR',92700),
+(2506,'El Araich','MAR',90400),
+(2507,'Dalap-Uliga-Darrit','MHL',28000),
+(2508,'Fort-de-France','MTQ',94050),
+(2509,'Nouakchott','MRT',667300),
+(2510,'Nouâdhibou','MRT',97600),
+(2511,'Port-Louis','MUS',138200),
+(2512,'Beau Bassin-Rose Hill','MUS',100616),
+(2513,'Vacoas-Phoenix','MUS',98464),
+(2514,'Mamoutzou','MYT',12000),
+(2515,'Ciudad de México','MEX',8591309),
+(2516,'Guadalajara','MEX',1647720),
+(2517,'Ecatepec de Morelos','MEX',1620303),
+(2518,'Puebla','MEX',1346176),
+(2519,'Nezahualcóyotl','MEX',1224924),
+(2520,'Juárez','MEX',1217818),
+(2521,'Tijuana','MEX',1212232),
+(2522,'León','MEX',1133576),
+(2523,'Monterrey','MEX',1108499),
+(2524,'Zapopan','MEX',1002239),
+(2525,'Naucalpan de Juárez','MEX',857511),
+(2526,'Mexicali','MEX',764902),
+(2527,'Culiacán','MEX',744859),
+(2528,'Acapulco de Juárez','MEX',721011),
+(2529,'Tlalnepantla de Baz','MEX',720755),
+(2530,'Mérida','MEX',703324),
+(2531,'Chihuahua','MEX',670208),
+(2532,'San Luis Potosí','MEX',669353),
+(2533,'Guadalupe','MEX',668780),
+(2534,'Toluca','MEX',665617),
+(2535,'Aguascalientes','MEX',643360),
+(2536,'Querétaro','MEX',639839),
+(2537,'Morelia','MEX',619958),
+(2538,'Hermosillo','MEX',608697),
+(2539,'Saltillo','MEX',577352),
+(2540,'Torreón','MEX',529093),
+(2541,'Centro (Villahermosa)','MEX',519873),
+(2542,'San Nicolás de los Garza','MEX',495540),
+(2543,'Durango','MEX',490524),
+(2544,'Chimalhuacán','MEX',490245),
+(2545,'Tlaquepaque','MEX',475472),
+(2546,'Atizapán de Zaragoza','MEX',467262),
+(2547,'Veracruz','MEX',457119),
+(2548,'Cuautitlán Izcalli','MEX',452976),
+(2549,'Irapuato','MEX',440039),
+(2550,'Tuxtla Gutiérrez','MEX',433544),
+(2551,'Tultitlán','MEX',432411),
+(2552,'Reynosa','MEX',419776),
+(2553,'Benito Juárez','MEX',419276),
+(2554,'Matamoros','MEX',416428),
+(2555,'Xalapa','MEX',390058),
+(2556,'Celaya','MEX',382140),
+(2557,'Mazatlán','MEX',380265),
+(2558,'Ensenada','MEX',369573),
+(2559,'Ahome','MEX',358663),
+(2560,'Cajeme','MEX',355679),
+(2561,'Cuernavaca','MEX',337966),
+(2562,'Tonalá','MEX',336109),
+(2563,'Valle de Chalco Solidaridad','MEX',323113),
+(2564,'Nuevo Laredo','MEX',310277),
+(2565,'Tepic','MEX',305025),
+(2566,'Tampico','MEX',294789),
+(2567,'Ixtapaluca','MEX',293160),
+(2568,'Apodaca','MEX',282941),
+(2569,'Guasave','MEX',277201),
+(2570,'Gómez Palacio','MEX',272806),
+(2571,'Tapachula','MEX',271141),
+(2572,'Nicolás Romero','MEX',269393),
+(2573,'Coatzacoalcos','MEX',267037),
+(2574,'Uruapan','MEX',265211),
+(2575,'Victoria','MEX',262686),
+(2576,'Oaxaca de Juárez','MEX',256848),
+(2577,'Coacalco de Berriozábal','MEX',252270),
+(2578,'Pachuca de Soto','MEX',244688),
+(2579,'General Escobedo','MEX',232961),
+(2580,'Salamanca','MEX',226864),
+(2581,'Santa Catarina','MEX',226573),
+(2582,'Tehuacán','MEX',225943),
+(2583,'Chalco','MEX',222201),
+(2584,'Cárdenas','MEX',216903),
+(2585,'Campeche','MEX',216735),
+(2586,'La Paz','MEX',213045),
+(2587,'Othón P. Blanco (Chetumal)','MEX',208014),
+(2588,'Texcoco','MEX',203681),
+(2589,'La Paz','MEX',196708),
+(2590,'Metepec','MEX',194265),
+(2591,'Monclova','MEX',193657),
+(2592,'Huixquilucan','MEX',193156),
+(2593,'Chilpancingo de los Bravo','MEX',192509),
+(2594,'Puerto Vallarta','MEX',183741),
+(2595,'Fresnillo','MEX',182744),
+(2596,'Ciudad Madero','MEX',182012),
+(2597,'Soledad de Graciano Sánchez','MEX',179956),
+(2598,'San Juan del Río','MEX',179300),
+(2599,'San Felipe del Progreso','MEX',177330),
+(2600,'Córdoba','MEX',176952);
+INSERT INTO City VALUES
+(2601,'Tecámac','MEX',172410),
+(2602,'Ocosingo','MEX',171495),
+(2603,'Carmen','MEX',171367),
+(2604,'Lázaro Cárdenas','MEX',170878),
+(2605,'Jiutepec','MEX',170428),
+(2606,'Papantla','MEX',170123),
+(2607,'Comalcalco','MEX',164640),
+(2608,'Zamora','MEX',161191),
+(2609,'Nogales','MEX',159103),
+(2610,'Huimanguillo','MEX',158335),
+(2611,'Cuautla','MEX',153132),
+(2612,'Minatitlán','MEX',152983),
+(2613,'Poza Rica de Hidalgo','MEX',152678),
+(2614,'Ciudad Valles','MEX',146411),
+(2615,'Navolato','MEX',145396),
+(2616,'San Luis Río Colorado','MEX',145276),
+(2617,'Pénjamo','MEX',143927),
+(2618,'San Andrés Tuxtla','MEX',142251),
+(2619,'Guanajuato','MEX',141215),
+(2620,'Navojoa','MEX',140495),
+(2621,'Zitácuaro','MEX',137970),
+(2622,'Boca del Río','MEX',135721),
+(2623,'Allende','MEX',134645),
+(2624,'Silao','MEX',134037),
+(2625,'Macuspana','MEX',133795),
+(2626,'San Juan Bautista Tuxtepec','MEX',133675),
+(2627,'San Cristóbal de las Casas','MEX',132317),
+(2628,'Valle de Santiago','MEX',130557),
+(2629,'Guaymas','MEX',130108),
+(2630,'Colima','MEX',129454),
+(2631,'Dolores Hidalgo','MEX',128675),
+(2632,'Lagos de Moreno','MEX',127949),
+(2633,'Piedras Negras','MEX',127898),
+(2634,'Altamira','MEX',127490),
+(2635,'Túxpam','MEX',126475),
+(2636,'San Pedro Garza García','MEX',126147),
+(2637,'Cuauhtémoc','MEX',124279),
+(2638,'Manzanillo','MEX',124014),
+(2639,'Iguala de la Independencia','MEX',123883),
+(2640,'Zacatecas','MEX',123700),
+(2641,'Tlajomulco de Zúñiga','MEX',123220),
+(2642,'Tulancingo de Bravo','MEX',121946),
+(2643,'Zinacantepec','MEX',121715),
+(2644,'San Martín Texmelucan','MEX',121093),
+(2645,'Tepatitlán de Morelos','MEX',118948),
+(2646,'Martínez de la Torre','MEX',118815),
+(2647,'Orizaba','MEX',118488),
+(2648,'Apatzingán','MEX',117849),
+(2649,'Atlixco','MEX',117019),
+(2650,'Delicias','MEX',116132),
+(2651,'Ixtlahuaca','MEX',115548),
+(2652,'El Mante','MEX',112453),
+(2653,'Lerdo','MEX',112272),
+(2654,'Almoloya de Juárez','MEX',110550),
+(2655,'Acámbaro','MEX',110487),
+(2656,'Acuña','MEX',110388),
+(2657,'Guadalupe','MEX',108881),
+(2658,'Huejutla de Reyes','MEX',108017),
+(2659,'Hidalgo','MEX',106198),
+(2660,'Los Cabos','MEX',105199),
+(2661,'Comitán de Domínguez','MEX',104986),
+(2662,'Cunduacán','MEX',104164),
+(2663,'Río Bravo','MEX',103901),
+(2664,'Temapache','MEX',102824),
+(2665,'Chilapa de Alvarez','MEX',102716),
+(2666,'Hidalgo del Parral','MEX',100881),
+(2667,'San Francisco del Rincón','MEX',100149),
+(2668,'Taxco de Alarcón','MEX',99907),
+(2669,'Zumpango','MEX',99781),
+(2670,'San Pedro Cholula','MEX',99734),
+(2671,'Lerma','MEX',99714),
+(2672,'Tecomán','MEX',99296),
+(2673,'Las Margaritas','MEX',97389),
+(2674,'Cosoleacaque','MEX',97199),
+(2675,'San Luis de la Paz','MEX',96763),
+(2676,'José Azueta','MEX',95448),
+(2677,'Santiago Ixcuintla','MEX',95311),
+(2678,'San Felipe','MEX',95305),
+(2679,'Tejupilco','MEX',94934),
+(2680,'Tantoyuca','MEX',94709),
+(2681,'Salvatierra','MEX',94322),
+(2682,'Tultepec','MEX',93364),
+(2683,'Temixco','MEX',92686),
+(2684,'Matamoros','MEX',91858),
+(2685,'Pánuco','MEX',90551),
+(2686,'El Fuerte','MEX',89556),
+(2687,'Tierra Blanca','MEX',89143),
+(2688,'Weno','FSM',22000),
+(2689,'Palikir','FSM',8600),
+(2690,'Chisinau','MDA',719900),
+(2691,'Tiraspol','MDA',194300),
+(2692,'Balti','MDA',153400),
+(2693,'Bender (Tîghina)','MDA',125700),
+(2694,'Monte-Carlo','MCO',13154),
+(2695,'Monaco-Ville','MCO',1234),
+(2696,'Ulan Bator','MNG',773700),
+(2697,'Plymouth','MSR',2000),
+(2698,'Maputo','MOZ',1018938),
+(2699,'Matola','MOZ',424662),
+(2700,'Beira','MOZ',397368),
+(2701,'Nampula','MOZ',303346),
+(2702,'Chimoio','MOZ',171056),
+(2703,'Naçala-Porto','MOZ',158248),
+(2704,'Quelimane','MOZ',150116),
+(2705,'Mocuba','MOZ',124700),
+(2706,'Tete','MOZ',101984),
+(2707,'Xai-Xai','MOZ',99442),
+(2708,'Gurue','MOZ',99300),
+(2709,'Maxixe','MOZ',93985),
+(2710,'Rangoon (Yangon)','MMR',3361700),
+(2711,'Mandalay','MMR',885300),
+(2712,'Moulmein (Mawlamyine)','MMR',307900),
+(2713,'Pegu (Bago)','MMR',190900),
+(2714,'Bassein (Pathein)','MMR',183900),
+(2715,'Monywa','MMR',138600),
+(2716,'Sittwe (Akyab)','MMR',137600),
+(2717,'Taunggyi (Taunggye)','MMR',131500),
+(2718,'Meikhtila','MMR',129700),
+(2719,'Mergui (Myeik)','MMR',122700),
+(2720,'Lashio (Lasho)','MMR',107600),
+(2721,'Prome (Pyay)','MMR',105700),
+(2722,'Henzada (Hinthada)','MMR',104700),
+(2723,'Myingyan','MMR',103600),
+(2724,'Tavoy (Dawei)','MMR',96800),
+(2725,'Pagakku (Pakokku)','MMR',94800),
+(2726,'Windhoek','NAM',169000),
+(2727,'Yangor','NRU',4050),
+(2728,'Yaren','NRU',559),
+(2729,'Kathmandu','NPL',591835),
+(2730,'Biratnagar','NPL',157764),
+(2731,'Pokhara','NPL',146318),
+(2732,'Lalitapur','NPL',145847),
+(2733,'Birgunj','NPL',90639),
+(2734,'Managua','NIC',959000),
+(2735,'León','NIC',123865),
+(2736,'Chinandega','NIC',97387),
+(2737,'Masaya','NIC',88971),
+(2738,'Niamey','NER',420000),
+(2739,'Zinder','NER',120892),
+(2740,'Maradi','NER',112965),
+(2741,'Lagos','NGA',1518000),
+(2742,'Ibadan','NGA',1432000),
+(2743,'Ogbomosho','NGA',730000),
+(2744,'Kano','NGA',674100),
+(2745,'Oshogbo','NGA',476800),
+(2746,'Ilorin','NGA',475800),
+(2747,'Abeokuta','NGA',427400),
+(2748,'Port Harcourt','NGA',410000),
+(2749,'Zaria','NGA',379200),
+(2750,'Ilesha','NGA',378400),
+(2751,'Onitsha','NGA',371900),
+(2752,'Iwo','NGA',362000),
+(2753,'Ado-Ekiti','NGA',359400),
+(2754,'Abuja','NGA',350100),
+(2755,'Kaduna','NGA',342200),
+(2756,'Mushin','NGA',333200),
+(2757,'Maiduguri','NGA',320000),
+(2758,'Enugu','NGA',316100),
+(2759,'Ede','NGA',307100),
+(2760,'Aba','NGA',298900),
+(2761,'Ife','NGA',296800),
+(2762,'Ila','NGA',264000),
+(2763,'Oyo','NGA',256400),
+(2764,'Ikerre','NGA',244600),
+(2765,'Benin City','NGA',229400),
+(2766,'Iseyin','NGA',217300),
+(2767,'Katsina','NGA',206500),
+(2768,'Jos','NGA',206300),
+(2769,'Sokoto','NGA',204900),
+(2770,'Ilobu','NGA',199000),
+(2771,'Offa','NGA',197200),
+(2772,'Ikorodu','NGA',184900),
+(2773,'Ilawe-Ekiti','NGA',184500),
+(2774,'Owo','NGA',183500),
+(2775,'Ikirun','NGA',181400),
+(2776,'Shaki','NGA',174500),
+(2777,'Calabar','NGA',174400),
+(2778,'Ondo','NGA',173600),
+(2779,'Akure','NGA',162300),
+(2780,'Gusau','NGA',158000),
+(2781,'Ijebu-Ode','NGA',156400),
+(2782,'Effon-Alaiye','NGA',153100),
+(2783,'Kumo','NGA',148000),
+(2784,'Shomolu','NGA',147700),
+(2785,'Oka-Akoko','NGA',142900),
+(2786,'Ikare','NGA',140800),
+(2787,'Sapele','NGA',139200),
+(2788,'Deba Habe','NGA',138600),
+(2789,'Minna','NGA',136900),
+(2790,'Warri','NGA',126100),
+(2791,'Bida','NGA',125500),
+(2792,'Ikire','NGA',123300),
+(2793,'Makurdi','NGA',123100),
+(2794,'Lafia','NGA',122500),
+(2795,'Inisa','NGA',119800),
+(2796,'Shagamu','NGA',117200),
+(2797,'Awka','NGA',111200),
+(2798,'Gombe','NGA',107800),
+(2799,'Igboho','NGA',106800),
+(2800,'Ejigbo','NGA',105900);
+INSERT INTO City VALUES
+(2801,'Agege','NGA',105000),
+(2802,'Ise-Ekiti','NGA',103400),
+(2803,'Ugep','NGA',102600),
+(2804,'Epe','NGA',101000),
+(2805,'Alofi','NIU',682),
+(2806,'Kingston','NFK',800),
+(2807,'Oslo','NOR',508726),
+(2808,'Bergen','NOR',230948),
+(2809,'Trondheim','NOR',150166),
+(2810,'Stavanger','NOR',108848),
+(2811,'Bærum','NOR',101340),
+(2812,'Abidjan','CIV',2500000),
+(2813,'Bouaké','CIV',329850),
+(2814,'Yamoussoukro','CIV',130000),
+(2815,'Daloa','CIV',121842),
+(2816,'Korhogo','CIV',109445),
+(2817,'al-Sib','OMN',155000),
+(2818,'Salala','OMN',131813),
+(2819,'Bawshar','OMN',107500),
+(2820,'Suhar','OMN',90814),
+(2821,'Masqat','OMN',51969),
+(2822,'Karachi','PAK',9269265),
+(2823,'Lahore','PAK',5063499),
+(2824,'Faisalabad','PAK',1977246),
+(2825,'Rawalpindi','PAK',1406214),
+(2826,'Multan','PAK',1182441),
+(2827,'Hyderabad','PAK',1151274),
+(2828,'Gujranwala','PAK',1124749),
+(2829,'Peshawar','PAK',988005),
+(2830,'Quetta','PAK',560307),
+(2831,'Islamabad','PAK',524500),
+(2832,'Sargodha','PAK',455360),
+(2833,'Sialkot','PAK',417597),
+(2834,'Bahawalpur','PAK',403408),
+(2835,'Sukkur','PAK',329176),
+(2836,'Jhang','PAK',292214),
+(2837,'Sheikhupura','PAK',271875),
+(2838,'Larkana','PAK',270366),
+(2839,'Gujrat','PAK',250121),
+(2840,'Mardan','PAK',244511),
+(2841,'Kasur','PAK',241649),
+(2842,'Rahim Yar Khan','PAK',228479),
+(2843,'Sahiwal','PAK',207388),
+(2844,'Okara','PAK',200901),
+(2845,'Wah','PAK',198400),
+(2846,'Dera Ghazi Khan','PAK',188100),
+(2847,'Mirpur Khas','PAK',184500),
+(2848,'Nawabshah','PAK',183100),
+(2849,'Mingora','PAK',174500),
+(2850,'Chiniot','PAK',169300),
+(2851,'Kamoke','PAK',151000),
+(2852,'Mandi Burewala','PAK',149900),
+(2853,'Jhelum','PAK',145800),
+(2854,'Sadiqabad','PAK',141500),
+(2855,'Jacobabad','PAK',137700),
+(2856,'Shikarpur','PAK',133300),
+(2857,'Khanewal','PAK',133000),
+(2858,'Hafizabad','PAK',130200),
+(2859,'Kohat','PAK',125300),
+(2860,'Muzaffargarh','PAK',121600),
+(2861,'Khanpur','PAK',117800),
+(2862,'Gojra','PAK',115000),
+(2863,'Bahawalnagar','PAK',109600),
+(2864,'Muridke','PAK',108600),
+(2865,'Pak Pattan','PAK',107800),
+(2866,'Abottabad','PAK',106000),
+(2867,'Tando Adam','PAK',103400),
+(2868,'Jaranwala','PAK',103300),
+(2869,'Khairpur','PAK',102200),
+(2870,'Chishtian Mandi','PAK',101700),
+(2871,'Daska','PAK',101500),
+(2872,'Dadu','PAK',98600),
+(2873,'Mandi Bahauddin','PAK',97300),
+(2874,'Ahmadpur East','PAK',96000),
+(2875,'Kamalia','PAK',95300),
+(2876,'Khuzdar','PAK',93100),
+(2877,'Vihari','PAK',92300),
+(2878,'Dera Ismail Khan','PAK',90400),
+(2879,'Wazirabad','PAK',89700),
+(2880,'Nowshera','PAK',89400),
+(2881,'Koror','PLW',12000),
+(2882,'Ciudad de Panamá','PAN',471373),
+(2883,'San Miguelito','PAN',315382),
+(2884,'Port Moresby','PNG',247000),
+(2885,'Asunción','PRY',557776),
+(2886,'Ciudad del Este','PRY',133881),
+(2887,'San Lorenzo','PRY',133395),
+(2888,'Lambaré','PRY',99681),
+(2889,'Fernando de la Mora','PRY',95287),
+(2890,'Lima','PER',6464693),
+(2891,'Arequipa','PER',762000),
+(2892,'Trujillo','PER',652000),
+(2893,'Chiclayo','PER',517000),
+(2894,'Callao','PER',424294),
+(2895,'Iquitos','PER',367000),
+(2896,'Chimbote','PER',336000),
+(2897,'Huancayo','PER',327000),
+(2898,'Piura','PER',325000),
+(2899,'Cusco','PER',291000),
+(2900,'Pucallpa','PER',220866),
+(2901,'Tacna','PER',215683),
+(2902,'Ica','PER',194820),
+(2903,'Sullana','PER',147361),
+(2904,'Juliaca','PER',142576),
+(2905,'Huánuco','PER',129688),
+(2906,'Ayacucho','PER',118960),
+(2907,'Chincha Alta','PER',110016),
+(2908,'Cajamarca','PER',108009),
+(2909,'Puno','PER',101578),
+(2910,'Ventanilla','PER',101056),
+(2911,'Castilla','PER',90642),
+(2912,'Adamstown','PCN',42),
+(2913,'Garapan','MNP',9200),
+(2914,'Lisboa','PRT',563210),
+(2915,'Porto','PRT',273060),
+(2916,'Amadora','PRT',122106),
+(2917,'Coímbra','PRT',96100),
+(2918,'Braga','PRT',90535),
+(2919,'San Juan','PRI',434374),
+(2920,'Bayamón','PRI',224044),
+(2921,'Ponce','PRI',186475),
+(2922,'Carolina','PRI',186076),
+(2923,'Caguas','PRI',140502),
+(2924,'Arecibo','PRI',100131),
+(2925,'Guaynabo','PRI',100053),
+(2926,'Mayagüez','PRI',98434),
+(2927,'Toa Baja','PRI',94085),
+(2928,'Warszawa','POL',1615369),
+(2929,'Lódz','POL',800110),
+(2930,'Kraków','POL',738150),
+(2931,'Wroclaw','POL',636765),
+(2932,'Poznan','POL',576899),
+(2933,'Gdansk','POL',458988),
+(2934,'Szczecin','POL',416988),
+(2935,'Bydgoszcz','POL',386855),
+(2936,'Lublin','POL',356251),
+(2937,'Katowice','POL',345934),
+(2938,'Bialystok','POL',283937),
+(2939,'Czestochowa','POL',257812),
+(2940,'Gdynia','POL',253521),
+(2941,'Sosnowiec','POL',244102),
+(2942,'Radom','POL',232262),
+(2943,'Kielce','POL',212383),
+(2944,'Gliwice','POL',212164),
+(2945,'Torun','POL',206158),
+(2946,'Bytom','POL',205560),
+(2947,'Zabrze','POL',200177),
+(2948,'Bielsko-Biala','POL',180307),
+(2949,'Olsztyn','POL',170904),
+(2950,'Rzeszów','POL',162049),
+(2951,'Ruda Slaska','POL',159665),
+(2952,'Rybnik','POL',144582),
+(2953,'Walbrzych','POL',136923),
+(2954,'Tychy','POL',133178),
+(2955,'Dabrowa Górnicza','POL',131037),
+(2956,'Plock','POL',131011),
+(2957,'Elblag','POL',129782),
+(2958,'Opole','POL',129553),
+(2959,'Gorzów Wielkopolski','POL',126019),
+(2960,'Wloclawek','POL',123373),
+(2961,'Chorzów','POL',121708),
+(2962,'Tarnów','POL',121494),
+(2963,'Zielona Góra','POL',118182),
+(2964,'Koszalin','POL',112375),
+(2965,'Legnica','POL',109335),
+(2966,'Kalisz','POL',106641),
+(2967,'Grudziadz','POL',102434),
+(2968,'Slupsk','POL',102370),
+(2969,'Jastrzebie-Zdrój','POL',102294),
+(2970,'Jaworzno','POL',97929),
+(2971,'Jelenia Góra','POL',93901),
+(2972,'Malabo','GNQ',40000),
+(2973,'Doha','QAT',355000),
+(2974,'Paris','FRA',2125246),
+(2975,'Marseille','FRA',798430),
+(2976,'Lyon','FRA',445452),
+(2977,'Toulouse','FRA',390350),
+(2978,'Nice','FRA',342738),
+(2979,'Nantes','FRA',270251),
+(2980,'Strasbourg','FRA',264115),
+(2981,'Montpellier','FRA',225392),
+(2982,'Bordeaux','FRA',215363),
+(2983,'Rennes','FRA',206229),
+(2984,'Le Havre','FRA',190905),
+(2985,'Reims','FRA',187206),
+(2986,'Lille','FRA',184657),
+(2987,'St-Étienne','FRA',180210),
+(2988,'Toulon','FRA',160639),
+(2989,'Grenoble','FRA',153317),
+(2990,'Angers','FRA',151279),
+(2991,'Dijon','FRA',149867),
+(2992,'Brest','FRA',149634),
+(2993,'Le Mans','FRA',146105),
+(2994,'Clermont-Ferrand','FRA',137140),
+(2995,'Amiens','FRA',135501),
+(2996,'Aix-en-Provence','FRA',134222),
+(2997,'Limoges','FRA',133968),
+(2998,'Nîmes','FRA',133424),
+(2999,'Tours','FRA',132820),
+(3000,'Villeurbanne','FRA',124215);
+INSERT INTO City VALUES
+(3001,'Metz','FRA',123776),
+(3002,'Besançon','FRA',117733),
+(3003,'Caen','FRA',113987),
+(3004,'Orléans','FRA',113126),
+(3005,'Mulhouse','FRA',110359),
+(3006,'Rouen','FRA',106592),
+(3007,'Boulogne-Billancourt','FRA',106367),
+(3008,'Perpignan','FRA',105115),
+(3009,'Nancy','FRA',103605),
+(3010,'Roubaix','FRA',96984),
+(3011,'Argenteuil','FRA',93961),
+(3012,'Tourcoing','FRA',93540),
+(3013,'Montreuil','FRA',90674),
+(3014,'Cayenne','GUF',50699),
+(3015,'Faaa','PYF',25888),
+(3016,'Papeete','PYF',25553),
+(3017,'Saint-Denis','REU',131480),
+(3018,'Bucuresti','ROM',2016131),
+(3019,'Iasi','ROM',348070),
+(3020,'Constanta','ROM',342264),
+(3021,'Cluj-Napoca','ROM',332498),
+(3022,'Galati','ROM',330276),
+(3023,'Timisoara','ROM',324304),
+(3024,'Brasov','ROM',314225),
+(3025,'Craiova','ROM',313530),
+(3026,'Ploiesti','ROM',251348),
+(3027,'Braila','ROM',233756),
+(3028,'Oradea','ROM',222239),
+(3029,'Bacau','ROM',209235),
+(3030,'Pitesti','ROM',187170),
+(3031,'Arad','ROM',184408),
+(3032,'Sibiu','ROM',169611),
+(3033,'Târgu Mures','ROM',165153),
+(3034,'Baia Mare','ROM',149665),
+(3035,'Buzau','ROM',148372),
+(3036,'Satu Mare','ROM',130059),
+(3037,'Botosani','ROM',128730),
+(3038,'Piatra Neamt','ROM',125070),
+(3039,'Râmnicu Vâlcea','ROM',119741),
+(3040,'Suceava','ROM',118549),
+(3041,'Drobeta-Turnu Severin','ROM',117865),
+(3042,'Târgoviste','ROM',98980),
+(3043,'Focsani','ROM',98979),
+(3044,'Târgu Jiu','ROM',98524),
+(3045,'Tulcea','ROM',96278),
+(3046,'Resita','ROM',93976),
+(3047,'Kigali','RWA',286000),
+(3048,'Stockholm','SWE',750348),
+(3049,'Gothenburg [Göteborg]','SWE',466990),
+(3050,'Malmö','SWE',259579),
+(3051,'Uppsala','SWE',189569),
+(3052,'Linköping','SWE',133168),
+(3053,'Västerås','SWE',126328),
+(3054,'Örebro','SWE',124207),
+(3055,'Norrköping','SWE',122199),
+(3056,'Helsingborg','SWE',117737),
+(3057,'Jönköping','SWE',117095),
+(3058,'Umeå','SWE',104512),
+(3059,'Lund','SWE',98948),
+(3060,'Borås','SWE',96883),
+(3061,'Sundsvall','SWE',93126),
+(3062,'Gävle','SWE',90742),
+(3063,'Jamestown','SHN',1500),
+(3064,'Basseterre','KNA',11600),
+(3065,'Castries','LCA',2301),
+(3066,'Kingstown','VCT',17100),
+(3067,'Saint-Pierre','SPM',5808),
+(3068,'Berlin','DEU',3386667),
+(3069,'Hamburg','DEU',1704735),
+(3070,'Munich [München]','DEU',1194560),
+(3071,'Köln','DEU',962507),
+(3072,'Frankfurt am Main','DEU',643821),
+(3073,'Essen','DEU',599515),
+(3074,'Dortmund','DEU',590213),
+(3075,'Stuttgart','DEU',582443),
+(3076,'Düsseldorf','DEU',568855),
+(3077,'Bremen','DEU',540330),
+(3078,'Duisburg','DEU',519793),
+(3079,'Hannover','DEU',514718),
+(3080,'Leipzig','DEU',489532),
+(3081,'Nürnberg','DEU',486628),
+(3082,'Dresden','DEU',476668),
+(3083,'Bochum','DEU',392830),
+(3084,'Wuppertal','DEU',368993),
+(3085,'Bielefeld','DEU',321125),
+(3086,'Mannheim','DEU',307730),
+(3087,'Bonn','DEU',301048),
+(3088,'Gelsenkirchen','DEU',281979),
+(3089,'Karlsruhe','DEU',277204),
+(3090,'Wiesbaden','DEU',268716),
+(3091,'Münster','DEU',264670),
+(3092,'Mönchengladbach','DEU',263697),
+(3093,'Chemnitz','DEU',263222),
+(3094,'Augsburg','DEU',254867),
+(3095,'Halle/Saale','DEU',254360),
+(3096,'Braunschweig','DEU',246322),
+(3097,'Aachen','DEU',243825),
+(3098,'Krefeld','DEU',241769),
+(3099,'Magdeburg','DEU',235073),
+(3100,'Kiel','DEU',233795),
+(3101,'Oberhausen','DEU',222349),
+(3102,'Lübeck','DEU',213326),
+(3103,'Hagen','DEU',205201),
+(3104,'Rostock','DEU',203279),
+(3105,'Freiburg im Breisgau','DEU',202455),
+(3106,'Erfurt','DEU',201267),
+(3107,'Kassel','DEU',196211),
+(3108,'Saarbrücken','DEU',183836),
+(3109,'Mainz','DEU',183134),
+(3110,'Hamm','DEU',181804),
+(3111,'Herne','DEU',175661),
+(3112,'Mülheim an der Ruhr','DEU',173895),
+(3113,'Solingen','DEU',165583),
+(3114,'Osnabrück','DEU',164539),
+(3115,'Ludwigshafen am Rhein','DEU',163771),
+(3116,'Leverkusen','DEU',160841),
+(3117,'Oldenburg','DEU',154125),
+(3118,'Neuss','DEU',149702),
+(3119,'Heidelberg','DEU',139672),
+(3120,'Darmstadt','DEU',137776),
+(3121,'Paderborn','DEU',137647),
+(3122,'Potsdam','DEU',128983),
+(3123,'Würzburg','DEU',127350),
+(3124,'Regensburg','DEU',125236),
+(3125,'Recklinghausen','DEU',125022),
+(3126,'Göttingen','DEU',124775),
+(3127,'Bremerhaven','DEU',122735),
+(3128,'Wolfsburg','DEU',121954),
+(3129,'Bottrop','DEU',121097),
+(3130,'Remscheid','DEU',120125),
+(3131,'Heilbronn','DEU',119526),
+(3132,'Pforzheim','DEU',117227),
+(3133,'Offenbach am Main','DEU',116627),
+(3134,'Ulm','DEU',116103),
+(3135,'Ingolstadt','DEU',114826),
+(3136,'Gera','DEU',114718),
+(3137,'Salzgitter','DEU',112934),
+(3138,'Cottbus','DEU',110894),
+(3139,'Reutlingen','DEU',110343),
+(3140,'Fürth','DEU',109771),
+(3141,'Siegen','DEU',109225),
+(3142,'Koblenz','DEU',108003),
+(3143,'Moers','DEU',106837),
+(3144,'Bergisch Gladbach','DEU',106150),
+(3145,'Zwickau','DEU',104146),
+(3146,'Hildesheim','DEU',104013),
+(3147,'Witten','DEU',103384),
+(3148,'Schwerin','DEU',102878),
+(3149,'Erlangen','DEU',100750),
+(3150,'Kaiserslautern','DEU',100025),
+(3151,'Trier','DEU',99891),
+(3152,'Jena','DEU',99779),
+(3153,'Iserlohn','DEU',99474),
+(3154,'Gütersloh','DEU',95028),
+(3155,'Marl','DEU',93735),
+(3156,'Lünen','DEU',92044),
+(3157,'Düren','DEU',91092),
+(3158,'Ratingen','DEU',90951),
+(3159,'Velbert','DEU',89881),
+(3160,'Esslingen am Neckar','DEU',89667),
+(3161,'Honiara','SLB',50100),
+(3162,'Lusaka','ZMB',1317000),
+(3163,'Ndola','ZMB',329200),
+(3164,'Kitwe','ZMB',288600),
+(3165,'Kabwe','ZMB',154300),
+(3166,'Chingola','ZMB',142400),
+(3167,'Mufulira','ZMB',123900),
+(3168,'Luanshya','ZMB',118100),
+(3169,'Apia','WSM',35900),
+(3170,'Serravalle','SMR',4802),
+(3171,'San Marino','SMR',2294),
+(3172,'São Tomé','STP',49541),
+(3173,'Riyadh','SAU',3324000),
+(3174,'Jedda','SAU',2046300),
+(3175,'Mekka','SAU',965700),
+(3176,'Medina','SAU',608300),
+(3177,'al-Dammam','SAU',482300),
+(3178,'al-Taif','SAU',416100),
+(3179,'Tabuk','SAU',292600),
+(3180,'Burayda','SAU',248600),
+(3181,'al-Hufuf','SAU',225800),
+(3182,'al-Mubarraz','SAU',219100),
+(3183,'Khamis Mushayt','SAU',217900),
+(3184,'Hail','SAU',176800),
+(3185,'al-Kharj','SAU',152100),
+(3186,'al-Khubar','SAU',141700),
+(3187,'Jubayl','SAU',140800),
+(3188,'Hafar al-Batin','SAU',137800),
+(3189,'al-Tuqba','SAU',125700),
+(3190,'Yanbu','SAU',119800),
+(3191,'Abha','SAU',112300),
+(3192,'Ara´ar','SAU',108100),
+(3193,'al-Qatif','SAU',98900),
+(3194,'al-Hawiya','SAU',93900),
+(3195,'Unayza','SAU',91100),
+(3196,'Najran','SAU',91000),
+(3197,'Pikine','SEN',855287),
+(3198,'Dakar','SEN',785071),
+(3199,'Thiès','SEN',248000),
+(3200,'Kaolack','SEN',199000);
+INSERT INTO City VALUES
+(3201,'Ziguinchor','SEN',192000),
+(3202,'Rufisque','SEN',150000),
+(3203,'Saint-Louis','SEN',132400),
+(3204,'Mbour','SEN',109300),
+(3205,'Diourbel','SEN',99400),
+(3206,'Victoria','SYC',41000),
+(3207,'Freetown','SLE',850000),
+(3208,'Singapore','SGP',4017733),
+(3209,'Bratislava','SVK',448292),
+(3210,'Koice','SVK',241874),
+(3211,'Preov','SVK',93977),
+(3212,'Ljubljana','SVN',270986),
+(3213,'Maribor','SVN',115532),
+(3214,'Mogadishu','SOM',997000),
+(3215,'Hargeysa','SOM',90000),
+(3216,'Kismaayo','SOM',90000),
+(3217,'Colombo','LKA',645000),
+(3218,'Dehiwala','LKA',203000),
+(3219,'Moratuwa','LKA',190000),
+(3220,'Jaffna','LKA',149000),
+(3221,'Kandy','LKA',140000),
+(3222,'Sri Jayawardenepura Kotte','LKA',118000),
+(3223,'Negombo','LKA',100000),
+(3224,'Omdurman','SDN',1271403),
+(3225,'Khartum','SDN',947483),
+(3226,'Sharq al-Nil','SDN',700887),
+(3227,'Port Sudan','SDN',308195),
+(3228,'Kassala','SDN',234622),
+(3229,'Obeid','SDN',229425),
+(3230,'Nyala','SDN',227183),
+(3231,'Wad Madani','SDN',211362),
+(3232,'al-Qadarif','SDN',191164),
+(3233,'Kusti','SDN',173599),
+(3234,'al-Fashir','SDN',141884),
+(3235,'Juba','SDN',114980),
+(3236,'Helsinki [Helsingfors]','FIN',555474),
+(3237,'Espoo','FIN',213271),
+(3238,'Tampere','FIN',195468),
+(3239,'Vantaa','FIN',178471),
+(3240,'Turku [Åbo]','FIN',172561),
+(3241,'Oulu','FIN',120753),
+(3242,'Lahti','FIN',96921),
+(3243,'Paramaribo','SUR',112000),
+(3244,'Mbabane','SWZ',61000),
+(3245,'Zürich','CHE',336800),
+(3246,'Geneve','CHE',173500),
+(3247,'Basel','CHE',166700),
+(3248,'Bern','CHE',122700),
+(3249,'Lausanne','CHE',114500),
+(3250,'Damascus','SYR',1347000),
+(3251,'Aleppo','SYR',1261983),
+(3252,'Hims','SYR',507404),
+(3253,'Hama','SYR',343361),
+(3254,'Latakia','SYR',264563),
+(3255,'al-Qamishliya','SYR',144286),
+(3256,'Dayr al-Zawr','SYR',140459),
+(3257,'Jaramana','SYR',138469),
+(3258,'Duma','SYR',131158),
+(3259,'al-Raqqa','SYR',108020),
+(3260,'Idlib','SYR',91081),
+(3261,'Dushanbe','TJK',524000),
+(3262,'Khujand','TJK',161500),
+(3263,'Taipei','TWN',2641312),
+(3264,'Kaohsiung','TWN',1475505),
+(3265,'Taichung','TWN',940589),
+(3266,'Tainan','TWN',728060),
+(3267,'Panchiao','TWN',523850),
+(3268,'Chungho','TWN',392176),
+(3269,'Keelung (Chilung)','TWN',385201),
+(3270,'Sanchung','TWN',380084),
+(3271,'Hsinchuang','TWN',365048),
+(3272,'Hsinchu','TWN',361958),
+(3273,'Chungli','TWN',318649),
+(3274,'Fengshan','TWN',318562),
+(3275,'Taoyuan','TWN',316438),
+(3276,'Chiayi','TWN',265109),
+(3277,'Hsintien','TWN',263603),
+(3278,'Changhwa','TWN',227715),
+(3279,'Yungho','TWN',227700),
+(3280,'Tucheng','TWN',224897),
+(3281,'Pingtung','TWN',214727),
+(3282,'Yungkang','TWN',193005),
+(3283,'Pingchen','TWN',188344),
+(3284,'Tali','TWN',171940),
+(3285,'Taiping','TWN',165524),
+(3286,'Pate','TWN',161700),
+(3287,'Fengyuan','TWN',161032),
+(3288,'Luchou','TWN',160516),
+(3289,'Hsichuh','TWN',154976),
+(3290,'Shulin','TWN',151260),
+(3291,'Yuanlin','TWN',126402),
+(3292,'Yangmei','TWN',126323),
+(3293,'Taliao','TWN',115897),
+(3294,'Kueishan','TWN',112195),
+(3295,'Tanshui','TWN',111882),
+(3296,'Taitung','TWN',111039),
+(3297,'Hualien','TWN',108407),
+(3298,'Nantou','TWN',104723),
+(3299,'Lungtan','TWN',103088),
+(3300,'Touliu','TWN',98900),
+(3301,'Tsaotun','TWN',96800),
+(3302,'Kangshan','TWN',92200),
+(3303,'Ilan','TWN',92000),
+(3304,'Miaoli','TWN',90000),
+(3305,'Dar es Salaam','TZA',1747000),
+(3306,'Dodoma','TZA',189000),
+(3307,'Mwanza','TZA',172300),
+(3308,'Zanzibar','TZA',157634),
+(3309,'Tanga','TZA',137400),
+(3310,'Mbeya','TZA',130800),
+(3311,'Morogoro','TZA',117800),
+(3312,'Arusha','TZA',102500),
+(3313,'Moshi','TZA',96800),
+(3314,'Tabora','TZA',92800),
+(3315,'København','DNK',495699),
+(3316,'Århus','DNK',284846),
+(3317,'Odense','DNK',183912),
+(3318,'Aalborg','DNK',161161),
+(3319,'Frederiksberg','DNK',90327),
+(3320,'Bangkok','THA',6320174),
+(3321,'Nonthaburi','THA',292100),
+(3322,'Nakhon Ratchasima','THA',181400),
+(3323,'Chiang Mai','THA',171100),
+(3324,'Udon Thani','THA',158100),
+(3325,'Hat Yai','THA',148632),
+(3326,'Khon Kaen','THA',126500),
+(3327,'Pak Kret','THA',126055),
+(3328,'Nakhon Sawan','THA',123800),
+(3329,'Ubon Ratchathani','THA',116300),
+(3330,'Songkhla','THA',94900),
+(3331,'Nakhon Pathom','THA',94100),
+(3332,'Lomé','TGO',375000),
+(3333,'Fakaofo','TKL',300),
+(3334,'Nuku´alofa','TON',22400),
+(3335,'Chaguanas','TTO',56601),
+(3336,'Port-of-Spain','TTO',43396),
+(3337,'N´Djaména','TCD',530965),
+(3338,'Moundou','TCD',99500),
+(3339,'Praha','CZE',1181126),
+(3340,'Brno','CZE',381862),
+(3341,'Ostrava','CZE',320041),
+(3342,'Plzen','CZE',166759),
+(3343,'Olomouc','CZE',102702),
+(3344,'Liberec','CZE',99155),
+(3345,'Ceské Budejovice','CZE',98186),
+(3346,'Hradec Králové','CZE',98080),
+(3347,'Ústí nad Labem','CZE',95491),
+(3348,'Pardubice','CZE',91309),
+(3349,'Tunis','TUN',690600),
+(3350,'Sfax','TUN',257800),
+(3351,'Ariana','TUN',197000),
+(3352,'Ettadhamen','TUN',178600),
+(3353,'Sousse','TUN',145900),
+(3354,'Kairouan','TUN',113100),
+(3355,'Biserta','TUN',108900),
+(3356,'Gabès','TUN',106600),
+(3357,'Istanbul','TUR',8787958),
+(3358,'Ankara','TUR',3038159),
+(3359,'Izmir','TUR',2130359),
+(3360,'Adana','TUR',1131198),
+(3361,'Bursa','TUR',1095842),
+(3362,'Gaziantep','TUR',789056),
+(3363,'Konya','TUR',628364),
+(3364,'Mersin (Içel)','TUR',587212),
+(3365,'Antalya','TUR',564914),
+(3366,'Diyarbakir','TUR',479884),
+(3367,'Kayseri','TUR',475657),
+(3368,'Eskisehir','TUR',470781),
+(3369,'Sanliurfa','TUR',405905),
+(3370,'Samsun','TUR',339871),
+(3371,'Malatya','TUR',330312),
+(3372,'Gebze','TUR',264170),
+(3373,'Denizli','TUR',253848),
+(3374,'Sivas','TUR',246642),
+(3375,'Erzurum','TUR',246535),
+(3376,'Tarsus','TUR',246206),
+(3377,'Kahramanmaras','TUR',245772),
+(3378,'Elâzig','TUR',228815),
+(3379,'Van','TUR',219319),
+(3380,'Sultanbeyli','TUR',211068),
+(3381,'Izmit (Kocaeli)','TUR',210068),
+(3382,'Manisa','TUR',207148),
+(3383,'Batman','TUR',203793),
+(3384,'Balikesir','TUR',196382),
+(3385,'Sakarya (Adapazari)','TUR',190641),
+(3386,'Iskenderun','TUR',153022),
+(3387,'Osmaniye','TUR',146003),
+(3388,'Çorum','TUR',145495),
+(3389,'Kütahya','TUR',144761),
+(3390,'Hatay (Antakya)','TUR',143982),
+(3391,'Kirikkale','TUR',142044),
+(3392,'Adiyaman','TUR',141529),
+(3393,'Trabzon','TUR',138234),
+(3394,'Ordu','TUR',133642),
+(3395,'Aydin','TUR',128651),
+(3396,'Usak','TUR',128162),
+(3397,'Edirne','TUR',123383),
+(3398,'Çorlu','TUR',123300),
+(3399,'Isparta','TUR',121911),
+(3400,'Karabük','TUR',118285);
+INSERT INTO City VALUES
+(3401,'Kilis','TUR',118245),
+(3402,'Alanya','TUR',117300),
+(3403,'Kiziltepe','TUR',112000),
+(3404,'Zonguldak','TUR',111542),
+(3405,'Siirt','TUR',107100),
+(3406,'Viransehir','TUR',106400),
+(3407,'Tekirdag','TUR',106077),
+(3408,'Karaman','TUR',104200),
+(3409,'Afyon','TUR',103984),
+(3410,'Aksaray','TUR',102681),
+(3411,'Ceyhan','TUR',102412),
+(3412,'Erzincan','TUR',102304),
+(3413,'Bismil','TUR',101400),
+(3414,'Nazilli','TUR',99900),
+(3415,'Tokat','TUR',99500),
+(3416,'Kars','TUR',93000),
+(3417,'Inegöl','TUR',90500),
+(3418,'Bandirma','TUR',90200),
+(3419,'Ashgabat','TKM',540600),
+(3420,'Chärjew','TKM',189200),
+(3421,'Dashhowuz','TKM',141800),
+(3422,'Mary','TKM',101000),
+(3423,'Cockburn Town','TCA',4800),
+(3424,'Funafuti','TUV',4600),
+(3425,'Kampala','UGA',890800),
+(3426,'Kyiv','UKR',2624000),
+(3427,'Harkova [Harkiv]','UKR',1500000),
+(3428,'Dnipropetrovsk','UKR',1103000),
+(3429,'Donetsk','UKR',1050000),
+(3430,'Odesa','UKR',1011000),
+(3431,'Zaporizzja','UKR',848000),
+(3432,'Lviv','UKR',788000),
+(3433,'Kryvyi Rig','UKR',703000),
+(3434,'Mykolajiv','UKR',508000),
+(3435,'Mariupol','UKR',490000),
+(3436,'Lugansk','UKR',469000),
+(3437,'Vinnytsja','UKR',391000),
+(3438,'Makijivka','UKR',384000),
+(3439,'Herson','UKR',353000),
+(3440,'Sevastopol','UKR',348000),
+(3441,'Simferopol','UKR',339000),
+(3442,'Pultava [Poltava]','UKR',313000),
+(3443,'Ternigiv','UKR',313000),
+(3444,'Terkasy','UKR',309000),
+(3445,'Gorlivka','UKR',299000),
+(3446,'Zytomyr','UKR',297000),
+(3447,'Sumy','UKR',294000),
+(3448,'Dniprodzerzynsk','UKR',270000),
+(3449,'Kirovograd','UKR',265000),
+(3450,'Hmelnytskyi','UKR',262000),
+(3451,'Ternivtsi','UKR',259000),
+(3452,'Rivne','UKR',245000),
+(3453,'Krementuk','UKR',239000),
+(3454,'Ivano-Frankivsk','UKR',237000),
+(3455,'Ternopil','UKR',236000),
+(3456,'Lutsk','UKR',217000),
+(3457,'Bila Tserkva','UKR',215000),
+(3458,'Kramatorsk','UKR',186000),
+(3459,'Melitopol','UKR',169000),
+(3460,'Kert','UKR',162000),
+(3461,'Nikopol','UKR',149000),
+(3462,'Berdjansk','UKR',130000),
+(3463,'Pavlograd','UKR',127000),
+(3464,'Sjeverodonetsk','UKR',127000),
+(3465,'Slovjansk','UKR',127000),
+(3466,'Uzgorod','UKR',127000),
+(3467,'Altevsk','UKR',119000),
+(3468,'Lysytansk','UKR',116000),
+(3469,'Jevpatorija','UKR',112000),
+(3470,'Kamjanets-Podilskyi','UKR',109000),
+(3471,'Jenakijeve','UKR',105000),
+(3472,'Krasnyi Lut','UKR',101000),
+(3473,'Stahanov','UKR',101000),
+(3474,'Oleksandrija','UKR',99000),
+(3475,'Konotop','UKR',96000),
+(3476,'Kostjantynivka','UKR',95000),
+(3477,'Berdytiv','UKR',90000),
+(3478,'Izmajil','UKR',90000),
+(3479,'ostka','UKR',90000),
+(3480,'Uman','UKR',90000),
+(3481,'Brovary','UKR',89000),
+(3482,'Mukateve','UKR',89000),
+(3483,'Budapest','HUN',1811552),
+(3484,'Debrecen','HUN',203648),
+(3485,'Miskolc','HUN',172357),
+(3486,'Szeged','HUN',158158),
+(3487,'Pécs','HUN',157332),
+(3488,'Györ','HUN',127119),
+(3489,'Nyiregyháza','HUN',112419),
+(3490,'Kecskemét','HUN',105606),
+(3491,'Székesfehérvár','HUN',105119),
+(3492,'Montevideo','URY',1236000),
+(3493,'Nouméa','NCL',76293),
+(3494,'Auckland','NZL',381800),
+(3495,'Christchurch','NZL',324200),
+(3496,'Manukau','NZL',281800),
+(3497,'North Shore','NZL',187700),
+(3498,'Waitakere','NZL',170600),
+(3499,'Wellington','NZL',166700),
+(3500,'Dunedin','NZL',119600),
+(3501,'Hamilton','NZL',117100),
+(3502,'Lower Hutt','NZL',98100),
+(3503,'Toskent','UZB',2117500),
+(3504,'Namangan','UZB',370500),
+(3505,'Samarkand','UZB',361800),
+(3506,'Andijon','UZB',318600),
+(3507,'Buhoro','UZB',237100),
+(3508,'Karsi','UZB',194100),
+(3509,'Nukus','UZB',194100),
+(3510,'Kükon','UZB',190100),
+(3511,'Fargona','UZB',180500),
+(3512,'Circik','UZB',146400),
+(3513,'Margilon','UZB',140800),
+(3514,'Ürgenc','UZB',138900),
+(3515,'Angren','UZB',128000),
+(3516,'Cizah','UZB',124800),
+(3517,'Navoi','UZB',116300),
+(3518,'Olmalik','UZB',114900),
+(3519,'Termiz','UZB',109500),
+(3520,'Minsk','BLR',1674000),
+(3521,'Gomel','BLR',475000),
+(3522,'Mogiljov','BLR',356000),
+(3523,'Vitebsk','BLR',340000),
+(3524,'Grodno','BLR',302000),
+(3525,'Brest','BLR',286000),
+(3526,'Bobruisk','BLR',221000),
+(3527,'Baranoviti','BLR',167000),
+(3528,'Borisov','BLR',151000),
+(3529,'Pinsk','BLR',130000),
+(3530,'Ora','BLR',124000),
+(3531,'Mozyr','BLR',110000),
+(3532,'Novopolotsk','BLR',106000),
+(3533,'Lida','BLR',101000),
+(3534,'Soligorsk','BLR',101000),
+(3535,'Molodetno','BLR',97000),
+(3536,'Mata-Utu','WLF',1137),
+(3537,'Port-Vila','VUT',33700),
+(3538,'Città del Vaticano','VAT',455),
+(3539,'Caracas','VEN',1975294),
+(3540,'Maracaíbo','VEN',1304776),
+(3541,'Barquisimeto','VEN',877239),
+(3542,'Valencia','VEN',794246),
+(3543,'Ciudad Guayana','VEN',663713),
+(3544,'Petare','VEN',488868),
+(3545,'Maracay','VEN',444443),
+(3546,'Barcelona','VEN',322267),
+(3547,'Maturín','VEN',319726),
+(3548,'San Cristóbal','VEN',319373),
+(3549,'Ciudad Bolívar','VEN',301107),
+(3550,'Cumaná','VEN',293105),
+(3551,'Mérida','VEN',224887),
+(3552,'Cabimas','VEN',221329),
+(3553,'Barinas','VEN',217831),
+(3554,'Turmero','VEN',217499),
+(3555,'Baruta','VEN',207290),
+(3556,'Puerto Cabello','VEN',187722),
+(3557,'Santa Ana de Coro','VEN',185766),
+(3558,'Los Teques','VEN',178784),
+(3559,'Punto Fijo','VEN',167215),
+(3560,'Guarenas','VEN',165889),
+(3561,'Acarigua','VEN',158954),
+(3562,'Puerto La Cruz','VEN',155700),
+(3563,'Ciudad Losada','VEN',134501),
+(3564,'Guacara','VEN',131334),
+(3565,'Valera','VEN',130281),
+(3566,'Guanare','VEN',125621),
+(3567,'Carúpano','VEN',119639),
+(3568,'Catia La Mar','VEN',117012),
+(3569,'El Tigre','VEN',116256),
+(3570,'Guatire','VEN',109121),
+(3571,'Calabozo','VEN',107146),
+(3572,'Pozuelos','VEN',105690),
+(3573,'Ciudad Ojeda','VEN',99354),
+(3574,'Ocumare del Tuy','VEN',97168),
+(3575,'Valle de la Pascua','VEN',95927),
+(3576,'Araure','VEN',94269),
+(3577,'San Fernando de Apure','VEN',93809),
+(3578,'San Felipe','VEN',90940),
+(3579,'El Limón','VEN',90000),
+(3580,'Moscow','RUS',8389200),
+(3581,'St Petersburg','RUS',4694000),
+(3582,'Novosibirsk','RUS',1398800),
+(3583,'Nizni Novgorod','RUS',1357000),
+(3584,'Jekaterinburg','RUS',1266300),
+(3585,'Samara','RUS',1156100),
+(3586,'Omsk','RUS',1148900),
+(3587,'Kazan','RUS',1101000),
+(3588,'Ufa','RUS',1091200),
+(3589,'Teljabinsk','RUS',1083200),
+(3590,'Rostov-na-Donu','RUS',1012700),
+(3591,'Perm','RUS',1009700),
+(3592,'Volgograd','RUS',993400),
+(3593,'Voronez','RUS',907700),
+(3594,'Krasnojarsk','RUS',875500),
+(3595,'Saratov','RUS',874000),
+(3596,'Toljatti','RUS',722900),
+(3597,'Uljanovsk','RUS',667400),
+(3598,'Izevsk','RUS',652800),
+(3599,'Krasnodar','RUS',639000),
+(3600,'Jaroslavl','RUS',616700);
+INSERT INTO City VALUES
+(3601,'Habarovsk','RUS',609400),
+(3602,'Vladivostok','RUS',606200),
+(3603,'Irkutsk','RUS',593700),
+(3604,'Barnaul','RUS',580100),
+(3605,'Novokuznetsk','RUS',561600),
+(3606,'Penza','RUS',532200),
+(3607,'Rjazan','RUS',529900),
+(3608,'Orenburg','RUS',523600),
+(3609,'Lipetsk','RUS',521000),
+(3610,'Nabereznyje Telny','RUS',514700),
+(3611,'Tula','RUS',506100),
+(3612,'Tjumen','RUS',503400),
+(3613,'Kemerovo','RUS',492700),
+(3614,'Astrahan','RUS',486100),
+(3615,'Tomsk','RUS',482100),
+(3616,'Kirov','RUS',466200),
+(3617,'Ivanovo','RUS',459200),
+(3618,'Teboksary','RUS',459200),
+(3619,'Brjansk','RUS',457400),
+(3620,'Tver','RUS',454900),
+(3621,'Kursk','RUS',443500),
+(3622,'Magnitogorsk','RUS',427900),
+(3623,'Kaliningrad','RUS',424400),
+(3624,'Nizni Tagil','RUS',390900),
+(3625,'Murmansk','RUS',376300),
+(3626,'Ulan-Ude','RUS',370400),
+(3627,'Kurgan','RUS',364700),
+(3628,'Arkangeli','RUS',361800),
+(3629,'Soti','RUS',358600),
+(3630,'Smolensk','RUS',353400),
+(3631,'Orjol','RUS',344500),
+(3632,'Stavropol','RUS',343300),
+(3633,'Belgorod','RUS',342000),
+(3634,'Kaluga','RUS',339300),
+(3635,'Vladimir','RUS',337100),
+(3636,'Mahatkala','RUS',332800),
+(3637,'Terepovets','RUS',324400),
+(3638,'Saransk','RUS',314800),
+(3639,'Tambov','RUS',312000),
+(3640,'Vladikavkaz','RUS',310100),
+(3641,'Tita','RUS',309900),
+(3642,'Vologda','RUS',302500),
+(3643,'Veliki Novgorod','RUS',299500),
+(3644,'Komsomolsk-na-Amure','RUS',291600),
+(3645,'Kostroma','RUS',288100),
+(3646,'Volzski','RUS',286900),
+(3647,'Taganrog','RUS',284400),
+(3648,'Petroskoi','RUS',282100),
+(3649,'Bratsk','RUS',277600),
+(3650,'Dzerzinsk','RUS',277100),
+(3651,'Surgut','RUS',274900),
+(3652,'Orsk','RUS',273900),
+(3653,'Sterlitamak','RUS',265200),
+(3654,'Angarsk','RUS',264700),
+(3655,'Jokar-Ola','RUS',249200),
+(3656,'Rybinsk','RUS',239600),
+(3657,'Prokopjevsk','RUS',237300),
+(3658,'Niznevartovsk','RUS',233900),
+(3659,'Naltik','RUS',233400),
+(3660,'Syktyvkar','RUS',229700),
+(3661,'Severodvinsk','RUS',229300),
+(3662,'Bijsk','RUS',225000),
+(3663,'Niznekamsk','RUS',223400),
+(3664,'Blagovetensk','RUS',222000),
+(3665,'ahty','RUS',221800),
+(3666,'Staryi Oskol','RUS',213800),
+(3667,'Zelenograd','RUS',207100),
+(3668,'Balakovo','RUS',206000),
+(3669,'Novorossijsk','RUS',203300),
+(3670,'Pihkova','RUS',201500),
+(3671,'Zlatoust','RUS',196900),
+(3672,'Jakutsk','RUS',195400),
+(3673,'Podolsk','RUS',194300),
+(3674,'Petropavlovsk-Kamtatski','RUS',194100),
+(3675,'Kamensk-Uralski','RUS',190600),
+(3676,'Engels','RUS',189000),
+(3677,'Syzran','RUS',186900),
+(3678,'Grozny','RUS',186000),
+(3679,'Novoterkassk','RUS',184400),
+(3680,'Berezniki','RUS',181900),
+(3681,'Juzno-Sahalinsk','RUS',179200),
+(3682,'Volgodonsk','RUS',178200),
+(3683,'Abakan','RUS',169200),
+(3684,'Maikop','RUS',167300),
+(3685,'Miass','RUS',166200),
+(3686,'Armavir','RUS',164900),
+(3687,'Ljubertsy','RUS',163900),
+(3688,'Rubtsovsk','RUS',162600),
+(3689,'Kovrov','RUS',159900),
+(3690,'Nahodka','RUS',157700),
+(3691,'Ussurijsk','RUS',157300),
+(3692,'Salavat','RUS',156800),
+(3693,'Mytiti','RUS',155700),
+(3694,'Kolomna','RUS',150700),
+(3695,'Elektrostal','RUS',147000),
+(3696,'Murom','RUS',142400),
+(3697,'Kolpino','RUS',141200),
+(3698,'Norilsk','RUS',140800),
+(3699,'Almetjevsk','RUS',140700),
+(3700,'Novomoskovsk','RUS',138100),
+(3701,'Dimitrovgrad','RUS',137000),
+(3702,'Pervouralsk','RUS',136100),
+(3703,'Himki','RUS',133700),
+(3704,'Balaiha','RUS',132900),
+(3705,'Nevinnomyssk','RUS',132600),
+(3706,'Pjatigorsk','RUS',132500),
+(3707,'Korolev','RUS',132400),
+(3708,'Serpuhov','RUS',132000),
+(3709,'Odintsovo','RUS',127400),
+(3710,'Orehovo-Zujevo','RUS',124900),
+(3711,'Kamyin','RUS',124600),
+(3712,'Novoteboksarsk','RUS',123400),
+(3713,'Terkessk','RUS',121700),
+(3714,'Atinsk','RUS',121600),
+(3715,'Magadan','RUS',121000),
+(3716,'Miturinsk','RUS',120700),
+(3717,'Kislovodsk','RUS',120400),
+(3718,'Jelets','RUS',119400),
+(3719,'Seversk','RUS',118600),
+(3720,'Noginsk','RUS',117200),
+(3721,'Velikije Luki','RUS',116300),
+(3722,'Novokuibyevsk','RUS',116200),
+(3723,'Neftekamsk','RUS',115700),
+(3724,'Leninsk-Kuznetski','RUS',113800),
+(3725,'Oktjabrski','RUS',111500),
+(3726,'Sergijev Posad','RUS',111100),
+(3727,'Arzamas','RUS',110700),
+(3728,'Kiseljovsk','RUS',110000),
+(3729,'Novotroitsk','RUS',109600),
+(3730,'Obninsk','RUS',108300),
+(3731,'Kansk','RUS',107400),
+(3732,'Glazov','RUS',106300),
+(3733,'Solikamsk','RUS',106000),
+(3734,'Sarapul','RUS',105700),
+(3735,'Ust-Ilimsk','RUS',105200),
+(3736,'tolkovo','RUS',104900),
+(3737,'Mezduretensk','RUS',104400),
+(3738,'Usolje-Sibirskoje','RUS',103500),
+(3739,'Elista','RUS',103300),
+(3740,'Novoahtinsk','RUS',101900),
+(3741,'Votkinsk','RUS',101700),
+(3742,'Kyzyl','RUS',101100),
+(3743,'Serov','RUS',100400),
+(3744,'Zelenodolsk','RUS',100200),
+(3745,'Zeleznodoroznyi','RUS',100100),
+(3746,'Kinema','RUS',100000),
+(3747,'Kuznetsk','RUS',98200),
+(3748,'Uhta','RUS',98000),
+(3749,'Jessentuki','RUS',97900),
+(3750,'Tobolsk','RUS',97600),
+(3751,'Neftejugansk','RUS',97400),
+(3752,'Bataisk','RUS',97300),
+(3753,'Nojabrsk','RUS',97300),
+(3754,'Balaov','RUS',97100),
+(3755,'Zeleznogorsk','RUS',96900),
+(3756,'Zukovski','RUS',96500),
+(3757,'Anzero-Sudzensk','RUS',96100),
+(3758,'Bugulma','RUS',94100),
+(3759,'Zeleznogorsk','RUS',94000),
+(3760,'Novouralsk','RUS',93300),
+(3761,'Pukin','RUS',92900),
+(3762,'Vorkuta','RUS',92600),
+(3763,'Derbent','RUS',92300),
+(3764,'Kirovo-Tepetsk','RUS',91600),
+(3765,'Krasnogorsk','RUS',91000),
+(3766,'Klin','RUS',90000),
+(3767,'Taikovski','RUS',90000),
+(3768,'Novyi Urengoi','RUS',89800),
+(3769,'Ho Chi Minh City','VNM',3980000),
+(3770,'Hanoi','VNM',1410000),
+(3771,'Haiphong','VNM',783133),
+(3772,'Da Nang','VNM',382674),
+(3773,'Biên Hoa','VNM',282095),
+(3774,'Nha Trang','VNM',221331),
+(3775,'Hue','VNM',219149),
+(3776,'Can Tho','VNM',215587),
+(3777,'Cam Pha','VNM',209086),
+(3778,'Nam Dinh','VNM',171699),
+(3779,'Quy Nhon','VNM',163385),
+(3780,'Vung Tau','VNM',145145),
+(3781,'Rach Gia','VNM',141132),
+(3782,'Long Xuyen','VNM',132681),
+(3783,'Thai Nguyen','VNM',127643),
+(3784,'Hong Gai','VNM',127484),
+(3785,'Phan Thiêt','VNM',114236),
+(3786,'Cam Ranh','VNM',114041),
+(3787,'Vinh','VNM',112455),
+(3788,'My Tho','VNM',108404),
+(3789,'Da Lat','VNM',106409),
+(3790,'Buon Ma Thuot','VNM',97044),
+(3791,'Tallinn','EST',403981),
+(3792,'Tartu','EST',101246),
+(3793,'New York','USA',8008278),
+(3794,'Los Angeles','USA',3694820),
+(3795,'Chicago','USA',2896016),
+(3796,'Houston','USA',1953631),
+(3797,'Philadelphia','USA',1517550),
+(3798,'Phoenix','USA',1321045),
+(3799,'San Diego','USA',1223400),
+(3800,'Dallas','USA',1188580);
+INSERT INTO City VALUES
+(3801,'San Antonio','USA',1144646),
+(3802,'Detroit','USA',951270),
+(3803,'San Jose','USA',894943),
+(3804,'Indianapolis','USA',791926),
+(3805,'San Francisco','USA',776733),
+(3806,'Jacksonville','USA',735167),
+(3807,'Columbus','USA',711470),
+(3808,'Austin','USA',656562),
+(3809,'Baltimore','USA',651154),
+(3810,'Memphis','USA',650100),
+(3811,'Milwaukee','USA',596974),
+(3812,'Boston','USA',589141),
+(3813,'Washington','USA',572059),
+(3814,'Nashville-Davidson','USA',569891),
+(3815,'El Paso','USA',563662),
+(3816,'Seattle','USA',563374),
+(3817,'Denver','USA',554636),
+(3818,'Charlotte','USA',540828),
+(3819,'Fort Worth','USA',534694),
+(3820,'Portland','USA',529121),
+(3821,'Oklahoma City','USA',506132),
+(3822,'Tucson','USA',486699),
+(3823,'New Orleans','USA',484674),
+(3824,'Las Vegas','USA',478434),
+(3825,'Cleveland','USA',478403),
+(3826,'Long Beach','USA',461522),
+(3827,'Albuquerque','USA',448607),
+(3828,'Kansas City','USA',441545),
+(3829,'Fresno','USA',427652),
+(3830,'Virginia Beach','USA',425257),
+(3831,'Atlanta','USA',416474),
+(3832,'Sacramento','USA',407018),
+(3833,'Oakland','USA',399484),
+(3834,'Mesa','USA',396375),
+(3835,'Tulsa','USA',393049),
+(3836,'Omaha','USA',390007),
+(3837,'Minneapolis','USA',382618),
+(3838,'Honolulu','USA',371657),
+(3839,'Miami','USA',362470),
+(3840,'Colorado Springs','USA',360890),
+(3841,'Saint Louis','USA',348189),
+(3842,'Wichita','USA',344284),
+(3843,'Santa Ana','USA',337977),
+(3844,'Pittsburgh','USA',334563),
+(3845,'Arlington','USA',332969),
+(3846,'Cincinnati','USA',331285),
+(3847,'Anaheim','USA',328014),
+(3848,'Toledo','USA',313619),
+(3849,'Tampa','USA',303447),
+(3850,'Buffalo','USA',292648),
+(3851,'Saint Paul','USA',287151),
+(3852,'Corpus Christi','USA',277454),
+(3853,'Aurora','USA',276393),
+(3854,'Raleigh','USA',276093),
+(3855,'Newark','USA',273546),
+(3856,'Lexington-Fayette','USA',260512),
+(3857,'Anchorage','USA',260283),
+(3858,'Louisville','USA',256231),
+(3859,'Riverside','USA',255166),
+(3860,'Saint Petersburg','USA',248232),
+(3861,'Bakersfield','USA',247057),
+(3862,'Stockton','USA',243771),
+(3863,'Birmingham','USA',242820),
+(3864,'Jersey City','USA',240055),
+(3865,'Norfolk','USA',234403),
+(3866,'Baton Rouge','USA',227818),
+(3867,'Hialeah','USA',226419),
+(3868,'Lincoln','USA',225581),
+(3869,'Greensboro','USA',223891),
+(3870,'Plano','USA',222030),
+(3871,'Rochester','USA',219773),
+(3872,'Glendale','USA',218812),
+(3873,'Akron','USA',217074),
+(3874,'Garland','USA',215768),
+(3875,'Madison','USA',208054),
+(3876,'Fort Wayne','USA',205727),
+(3877,'Fremont','USA',203413),
+(3878,'Scottsdale','USA',202705),
+(3879,'Montgomery','USA',201568),
+(3880,'Shreveport','USA',200145),
+(3881,'Augusta-Richmond County','USA',199775),
+(3882,'Lubbock','USA',199564),
+(3883,'Chesapeake','USA',199184),
+(3884,'Mobile','USA',198915),
+(3885,'Des Moines','USA',198682),
+(3886,'Grand Rapids','USA',197800),
+(3887,'Richmond','USA',197790),
+(3888,'Yonkers','USA',196086),
+(3889,'Spokane','USA',195629),
+(3890,'Glendale','USA',194973),
+(3891,'Tacoma','USA',193556),
+(3892,'Irving','USA',191615),
+(3893,'Huntington Beach','USA',189594),
+(3894,'Modesto','USA',188856),
+(3895,'Durham','USA',187035),
+(3896,'Columbus','USA',186291),
+(3897,'Orlando','USA',185951),
+(3898,'Boise City','USA',185787),
+(3899,'Winston-Salem','USA',185776),
+(3900,'San Bernardino','USA',185401),
+(3901,'Jackson','USA',184256),
+(3902,'Little Rock','USA',183133),
+(3903,'Salt Lake City','USA',181743),
+(3904,'Reno','USA',180480),
+(3905,'Newport News','USA',180150),
+(3906,'Chandler','USA',176581),
+(3907,'Laredo','USA',176576),
+(3908,'Henderson','USA',175381),
+(3909,'Arlington','USA',174838),
+(3910,'Knoxville','USA',173890),
+(3911,'Amarillo','USA',173627),
+(3912,'Providence','USA',173618),
+(3913,'Chula Vista','USA',173556),
+(3914,'Worcester','USA',172648),
+(3915,'Oxnard','USA',170358),
+(3916,'Dayton','USA',166179),
+(3917,'Garden Grove','USA',165196),
+(3918,'Oceanside','USA',161029),
+(3919,'Tempe','USA',158625),
+(3920,'Huntsville','USA',158216),
+(3921,'Ontario','USA',158007),
+(3922,'Chattanooga','USA',155554),
+(3923,'Fort Lauderdale','USA',152397),
+(3924,'Springfield','USA',152082),
+(3925,'Springfield','USA',151580),
+(3926,'Santa Clarita','USA',151088),
+(3927,'Salinas','USA',151060),
+(3928,'Tallahassee','USA',150624),
+(3929,'Rockford','USA',150115),
+(3930,'Pomona','USA',149473),
+(3931,'Metairie','USA',149428),
+(3932,'Paterson','USA',149222),
+(3933,'Overland Park','USA',149080),
+(3934,'Santa Rosa','USA',147595),
+(3935,'Syracuse','USA',147306),
+(3936,'Kansas City','USA',146866),
+(3937,'Hampton','USA',146437),
+(3938,'Lakewood','USA',144126),
+(3939,'Vancouver','USA',143560),
+(3940,'Irvine','USA',143072),
+(3941,'Aurora','USA',142990),
+(3942,'Moreno Valley','USA',142381),
+(3943,'Pasadena','USA',141674),
+(3944,'Hayward','USA',140030),
+(3945,'Brownsville','USA',139722),
+(3946,'Bridgeport','USA',139529),
+(3947,'Hollywood','USA',139357),
+(3948,'Warren','USA',138247),
+(3949,'Torrance','USA',137946),
+(3950,'Eugene','USA',137893),
+(3951,'Pembroke Pines','USA',137427),
+(3952,'Salem','USA',136924),
+(3953,'Pasadena','USA',133936),
+(3954,'Escondido','USA',133559),
+(3955,'Sunnyvale','USA',131760),
+(3956,'Savannah','USA',131510),
+(3957,'Fontana','USA',128929),
+(3958,'Orange','USA',128821),
+(3959,'Naperville','USA',128358),
+(3960,'Alexandria','USA',128283),
+(3961,'Rancho Cucamonga','USA',127743),
+(3962,'Grand Prairie','USA',127427),
+(3963,'East Los Angeles','USA',126379),
+(3964,'Fullerton','USA',126003),
+(3965,'Corona','USA',124966),
+(3966,'Flint','USA',124943),
+(3967,'Paradise','USA',124682),
+(3968,'Mesquite','USA',124523),
+(3969,'Sterling Heights','USA',124471),
+(3970,'Sioux Falls','USA',123975),
+(3971,'New Haven','USA',123626),
+(3972,'Topeka','USA',122377),
+(3973,'Concord','USA',121780),
+(3974,'Evansville','USA',121582),
+(3975,'Hartford','USA',121578),
+(3976,'Fayetteville','USA',121015),
+(3977,'Cedar Rapids','USA',120758),
+(3978,'Elizabeth','USA',120568),
+(3979,'Lansing','USA',119128),
+(3980,'Lancaster','USA',118718),
+(3981,'Fort Collins','USA',118652),
+(3982,'Coral Springs','USA',117549),
+(3983,'Stamford','USA',117083),
+(3984,'Thousand Oaks','USA',117005),
+(3985,'Vallejo','USA',116760),
+(3986,'Palmdale','USA',116670),
+(3987,'Columbia','USA',116278),
+(3988,'El Monte','USA',115965),
+(3989,'Abilene','USA',115930),
+(3990,'North Las Vegas','USA',115488),
+(3991,'Ann Arbor','USA',114024),
+(3992,'Beaumont','USA',113866),
+(3993,'Waco','USA',113726),
+(3994,'Macon','USA',113336),
+(3995,'Independence','USA',113288),
+(3996,'Peoria','USA',112936),
+(3997,'Inglewood','USA',112580),
+(3998,'Springfield','USA',111454),
+(3999,'Simi Valley','USA',111351),
+(4000,'Lafayette','USA',110257);
+INSERT INTO City VALUES
+(4001,'Gilbert','USA',109697),
+(4002,'Carrollton','USA',109576),
+(4003,'Bellevue','USA',109569),
+(4004,'West Valley City','USA',108896),
+(4005,'Clarksville','USA',108787),
+(4006,'Costa Mesa','USA',108724),
+(4007,'Peoria','USA',108364),
+(4008,'South Bend','USA',107789),
+(4009,'Downey','USA',107323),
+(4010,'Waterbury','USA',107271),
+(4011,'Manchester','USA',107006),
+(4012,'Allentown','USA',106632),
+(4013,'McAllen','USA',106414),
+(4014,'Joliet','USA',106221),
+(4015,'Lowell','USA',105167),
+(4016,'Provo','USA',105166),
+(4017,'West Covina','USA',105080),
+(4018,'Wichita Falls','USA',104197),
+(4019,'Erie','USA',103717),
+(4020,'Daly City','USA',103621),
+(4021,'Citrus Heights','USA',103455),
+(4022,'Norwalk','USA',103298),
+(4023,'Gary','USA',102746),
+(4024,'Berkeley','USA',102743),
+(4025,'Santa Clara','USA',102361),
+(4026,'Green Bay','USA',102313),
+(4027,'Cape Coral','USA',102286),
+(4028,'Arvada','USA',102153),
+(4029,'Pueblo','USA',102121),
+(4030,'Sandy','USA',101853),
+(4031,'Athens-Clarke County','USA',101489),
+(4032,'Cambridge','USA',101355),
+(4033,'Westminster','USA',100940),
+(4034,'San Buenaventura','USA',100916),
+(4035,'Portsmouth','USA',100565),
+(4036,'Livonia','USA',100545),
+(4037,'Burbank','USA',100316),
+(4038,'Clearwater','USA',99936),
+(4039,'Midland','USA',98293),
+(4040,'Davenport','USA',98256),
+(4041,'Mission Viejo','USA',98049),
+(4042,'Miami Beach','USA',97855),
+(4043,'Sunrise Manor','USA',95362),
+(4044,'New Bedford','USA',94780),
+(4045,'El Cajon','USA',94578),
+(4046,'Norman','USA',94193),
+(4047,'Richmond','USA',94100),
+(4048,'Albany','USA',93994),
+(4049,'Brockton','USA',93653),
+(4050,'Roanoke','USA',93357),
+(4051,'Billings','USA',92988),
+(4052,'Compton','USA',92864),
+(4053,'Gainesville','USA',92291),
+(4054,'Fairfield','USA',92256),
+(4055,'Arden-Arcade','USA',92040),
+(4056,'San Mateo','USA',91799),
+(4057,'Visalia','USA',91762),
+(4058,'Boulder','USA',91238),
+(4059,'Cary','USA',91213),
+(4060,'Santa Monica','USA',91084),
+(4061,'Fall River','USA',90555),
+(4062,'Kenosha','USA',89447),
+(4063,'Elgin','USA',89408),
+(4064,'Odessa','USA',89293),
+(4065,'Carson','USA',89089),
+(4066,'Charleston','USA',89063),
+(4067,'Charlotte Amalie','VIR',13000),
+(4068,'Harare','ZWE',1410000),
+(4069,'Bulawayo','ZWE',621742),
+(4070,'Chitungwiza','ZWE',274912),
+(4071,'Mount Darwin','ZWE',164362),
+(4072,'Mutare','ZWE',131367),
+(4073,'Gweru','ZWE',128037),
+(4074,'Gaza','PSE',353632),
+(4075,'Khan Yunis','PSE',123175),
+(4076,'Hebron','PSE',119401),
+(4077,'Jabaliya','PSE',113901),
+(4078,'Nablus','PSE',100231),
+(4079,'Rafah','PSE',92020);
+
+# Table CountryLanguage
+
+INSERT INTO CountryLanguage VALUES
+('AFG','Pashto',52.4),
+('NLD','Dutch',95.6),
+('ANT','Papiamento',86.2),
+('ALB','Albaniana',97.9),
+('DZA','Arabic',86.0),
+('ASM','Samoan',90.6),
+('AND','Spanish',44.6),
+('AGO','Ovimbundu',37.2),
+('AIA','English',0.0),
+('ATG','Creole English',95.7),
+('ARE','Arabic',42.0),
+('ARG','Spanish',96.8),
+('ARM','Armenian',93.4),
+('ABW','Papiamento',76.7),
+('AUS','English',81.2),
+('AZE','Azerbaijani',89.0),
+('BHS','Creole English',89.7),
+('BHR','Arabic',67.7),
+('BGD','Bengali',97.7),
+('BRB','Bajan',95.1),
+('BEL','Dutch',59.2),
+('BLZ','English',50.8),
+('BEN','Fon',39.8),
+('BMU','English',100.0),
+('BTN','Dzongkha',50.0),
+('BOL','Spanish',87.7),
+('BIH','Serbo-Croatian',99.2),
+('BWA','Tswana',75.5),
+('BRA','Portuguese',97.5),
+('GBR','English',97.3),
+('VGB','English',0.0),
+('BRN','Malay',45.5),
+('BGR','Bulgariana',83.2),
+('BFA','Mossi',50.2),
+('BDI','Kirundi',98.1),
+('CYM','English',0.0),
+('CHL','Spanish',89.7),
+('COK','Maori',0.0),
+('CRI','Spanish',97.5),
+('DJI','Somali',43.9),
+('DMA','Creole English',100.0),
+('DOM','Spanish',98.0),
+('ECU','Spanish',93.0),
+('EGY','Arabic',98.8),
+('SLV','Spanish',100.0),
+('ERI','Tigrinja',49.1),
+('ESP','Spanish',74.4),
+('ZAF','Zulu',22.7),
+('ETH','Oromo',31.0),
+('FLK','English',0.0),
+('FJI','Fijian',50.8),
+('PHL','Pilipino',29.3),
+('FRO','Faroese',100.0),
+('GAB','Fang',35.8),
+('GMB','Malinke',34.1),
+('GEO','Georgiana',71.7),
+('GHA','Akan',52.4),
+('GIB','English',88.9),
+('GRD','Creole English',100.0),
+('GRL','Greenlandic',87.5),
+('GLP','Creole French',95.0),
+('GUM','English',37.5),
+('GTM','Spanish',64.7),
+('GIN','Ful',38.6),
+('GNB','Crioulo',36.4),
+('GUY','Creole English',96.4),
+('HTI','Haiti Creole',100.0),
+('HND','Spanish',97.2),
+('HKG','Canton Chinese',88.7),
+('SJM','Norwegian',0.0),
+('IDN','Javanese',39.4),
+('IND','Hindi',39.9),
+('IRQ','Arabic',77.2),
+('IRN','Persian',45.7),
+('IRL','English',98.4),
+('ISL','Icelandic',95.7),
+('ISR','Hebrew',63.1),
+('ITA','Italian',94.1),
+('TMP','Sunda',0.0),
+('AUT','German',92.0),
+('JAM','Creole English',94.2),
+('JPN','Japanese',99.1),
+('YEM','Arabic',99.6),
+('JOR','Arabic',97.9),
+('CXR','Chinese',0.0),
+('YUG','Serbo-Croatian',75.2),
+('KHM','Khmer',88.6),
+('CMR','Fang',19.7),
+('CAN','English',60.4),
+('CPV','Crioulo',100.0),
+('KAZ','Kazakh',46.0),
+('KEN','Kikuyu',20.9),
+('CAF','Gbaya',23.8),
+('CHN','Chinese',92.0),
+('KGZ','Kirgiz',59.7),
+('KIR','Kiribati',98.9),
+('COL','Spanish',99.0),
+('COM','Comorian',75.0),
+('COG','Kongo',51.5),
+('COD','Luba',18.0),
+('CCK','Malay',0.0),
+('PRK','Korean',99.9),
+('KOR','Korean',99.9),
+('GRC','Greek',98.5),
+('HRV','Serbo-Croatian',95.9),
+('CUB','Spanish',100.0),
+('KWT','Arabic',78.1),
+('CYP','Greek',74.1),
+('LAO','Lao',67.2),
+('LVA','Latvian',55.1),
+('LSO','Sotho',85.0),
+('LBN','Arabic',93.0),
+('LBR','Kpelle',19.5),
+('LBY','Arabic',96.0),
+('LIE','German',89.0),
+('LTU','Lithuanian',81.6),
+('LUX','Luxembourgish',64.4),
+('ESH','Arabic',100.0),
+('MAC','Canton Chinese',85.6),
+('MDG','Malagasy',98.9),
+('MKD','Macedonian',66.5),
+('MWI','Chichewa',58.3),
+('MDV','Dhivehi',100.0),
+('MYS','Malay',58.4),
+('MLI','Bambara',31.8),
+('MLT','Maltese',95.8),
+('MAR','Arabic',65.0),
+('MHL','Marshallese',96.8),
+('MTQ','Creole French',96.6),
+('MRT','Hassaniya',81.7),
+('MUS','Creole French',70.6),
+('MYT','Mahoré',41.9),
+('MEX','Spanish',92.1),
+('FSM','Trukese',41.6),
+('MDA','Romanian',61.9),
+('MCO','French',41.9),
+('MNG','Mongolian',78.8),
+('MSR','English',0.0),
+('MOZ','Makua',27.8),
+('MMR','Burmese',69.0),
+('NAM','Ovambo',50.7),
+('NRU','Nauru',57.5),
+('NPL','Nepali',50.4),
+('NIC','Spanish',97.6),
+('NER','Hausa',53.1),
+('NGA','Joruba',21.4),
+('NIU','Niue',0.0),
+('NFK','English',0.0),
+('NOR','Norwegian',96.6),
+('CIV','Akan',30.0),
+('OMN','Arabic',76.7),
+('PAK','Punjabi',48.2),
+('PLW','Palau',82.2),
+('PAN','Spanish',76.8),
+('PNG','Papuan Languages',78.1),
+('PRY','Spanish',55.1),
+('PER','Spanish',79.8),
+('PCN','Pitcairnese',0.0),
+('MNP','Philippene Languages',34.1),
+('PRT','Portuguese',99.0),
+('PRI','Spanish',51.3),
+('POL','Polish',97.6),
+('GNQ','Fang',84.8),
+('QAT','Arabic',40.7),
+('FRA','French',93.6),
+('GUF','Creole French',94.3),
+('PYF','Tahitian',46.4),
+('REU','Creole French',91.5),
+('ROM','Romanian',90.7),
+('RWA','Rwanda',100.0),
+('SWE','Swedish',89.5),
+('SHN','English',0.0),
+('KNA','Creole English',100.0),
+('LCA','Creole French',80.0),
+('VCT','Creole English',99.1),
+('SPM','French',0.0),
+('DEU','German',91.3),
+('SLB','Malenasian Languages',85.6),
+('ZMB','Bemba',29.7),
+('WSM','Samoan-English',52.0),
+('SMR','Italian',100.0),
+('STP','Crioulo',86.3),
+('SAU','Arabic',95.0),
+('SEN','Wolof',48.1),
+('SYC','Seselwa',91.3),
+('SLE','Mende',34.8),
+('SGP','Chinese',77.1),
+('SVK','Slovak',85.6),
+('SVN','Slovene',87.9),
+('SOM','Somali',98.3),
+('LKA','Singali',60.3),
+('SDN','Arabic',49.4),
+('FIN','Finnish',92.7),
+('SUR','Sranantonga',81.0),
+('SWZ','Swazi',89.9),
+('CHE','German',63.6),
+('SYR','Arabic',90.0),
+('TJK','Tadzhik',62.2),
+('TWN','Min',66.7),
+('TZA','Nyamwesi',21.1);
+INSERT INTO CountryLanguage VALUES
+('DNK','Danish',93.5),
+('THA','Thai',52.6),
+('TGO','Ewe',23.2),
+('TKL','Tokelau',0.0),
+('TON','Tongan',98.3),
+('TTO','English',93.5),
+('TCD','Sara',27.7),
+('CZE','Czech',81.2),
+('TUN','Arabic',69.9),
+('TUR','Turkish',87.6),
+('TKM','Turkmenian',76.7),
+('TCA','English',0.0),
+('TUV','Tuvalu',92.5),
+('UGA','Ganda',18.1),
+('UKR','Ukrainian',64.7),
+('HUN','Hungarian',98.5),
+('URY','Spanish',95.7),
+('NCL','Malenasian Languages',45.4),
+('NZL','English',87.0),
+('UZB','Uzbek',72.6),
+('BLR','Belorussian',65.6),
+('WLF','Wallis',0.0),
+('VUT','Bislama',56.6),
+('VAT','Italian',0.0),
+('VEN','Spanish',96.9),
+('RUS','Russian',86.6),
+('VNM','Vietnamese',86.8),
+('EST','Estonian',65.3),
+('USA','English',86.2),
+('VIR','English',81.7),
+('UMI','English',0.0),
+('ZWE','Shona',72.1),
+('PSE','Arabic',95.9),
+('AFG','Dari',32.1),
+('NLD','Fries',3.7),
+('ANT','English',7.8),
+('ALB','Greek',1.8),
+('DZA','Berberi',14.0),
+('ASM','English',3.1),
+('AND','Catalan',32.3),
+('AGO','Mbundu',21.6),
+('ATG','English',0.0),
+('ARE','Hindi',0.0),
+('ARG','Italian',1.7),
+('ARM','Azerbaijani',2.6),
+('ABW','English',9.5),
+('AUS','Italian',2.2),
+('AZE','Russian',3.0),
+('BHS','Creole French',10.3),
+('BHR','English',0.0),
+('BGD','Chakma',0.4),
+('BRB','English',0.0),
+('BEL','French',32.6),
+('BLZ','Spanish',31.6),
+('BEN','Joruba',12.2),
+('BTN','Nepali',34.8),
+('BOL','Ketua',8.1),
+('BWA','Shona',12.3),
+('BRA','German',0.5),
+('GBR','Kymri',0.9),
+('BRN','Malay-English',28.8),
+('BGR','Turkish',9.4),
+('BFA','Ful',9.7),
+('BDI','French',0.0),
+('CHL','Araucan',9.6),
+('COK','English',0.0),
+('CRI','Creole English',2.0),
+('DJI','Afar',34.8),
+('DMA','Creole French',0.0),
+('DOM','Creole French',2.0),
+('ECU','Ketua',7.0),
+('EGY','Sinaberberi',0.0),
+('SLV','Nahua',0.0),
+('ERI','Tigre',31.7),
+('ESP','Catalan',16.9),
+('ZAF','Xhosa',17.7),
+('ETH','Amhara',30.0),
+('FJI','Hindi',43.7),
+('PHL','Cebuano',23.3),
+('FRO','Danish',0.0),
+('GAB','Punu-sira-nzebi',17.1),
+('GMB','Ful',16.2),
+('GEO','Russian',8.8),
+('GHA','Mossi',15.8),
+('GIB','Arabic',7.4),
+('GRL','Danish',12.5),
+('GLP','French',0.0),
+('GUM','Chamorro',29.6),
+('GTM','Quiché',10.1),
+('GIN','Malinke',23.2),
+('GNB','Ful',16.6),
+('GUY','Caribbean',2.2),
+('HTI','French',0.0),
+('HND','Garifuna',1.3),
+('HKG','English',2.2),
+('SJM','Russian',0.0),
+('IDN','Sunda',15.8),
+('IND','Bengali',8.2),
+('IRQ','Kurdish',19.0),
+('IRN','Azerbaijani',16.8),
+('IRL','Irish',1.6),
+('ISL','English',0.0),
+('ISR','Arabic',18.0),
+('ITA','Sardinian',2.7),
+('TMP','Portuguese',0.0),
+('AUT','Serbo-Croatian',2.2),
+('JAM','Hindi',1.9),
+('JPN','Korean',0.5),
+('YEM','Soqutri',0.0),
+('JOR','Circassian',1.0),
+('CXR','English',0.0),
+('YUG','Albaniana',16.5),
+('KHM','Vietnamese',5.5),
+('CMR','Bamileke-bamum',18.6),
+('CAN','French',23.4),
+('CPV','Portuguese',0.0),
+('KAZ','Russian',34.7),
+('KEN','Luhya',13.8),
+('CAF','Banda',23.5),
+('CHN','Zhuang',1.4),
+('KGZ','Russian',16.2),
+('KIR','Tuvalu',0.5),
+('COL','Chibcha',0.4),
+('COM','Comorian-French',12.9),
+('COG','Teke',17.3),
+('COD','Kongo',16.0),
+('CCK','English',0.0),
+('PRK','Chinese',0.1),
+('KOR','Chinese',0.1),
+('GRC','Turkish',0.9),
+('HRV','Slovene',0.0),
+('KWT','English',0.0),
+('CYP','Turkish',22.4),
+('LAO','Mon-khmer',16.5),
+('LVA','Russian',32.5),
+('LSO','Zulu',15.0),
+('LBN','Armenian',5.9),
+('LBR','Bassa',13.7),
+('LBY','Berberi',1.0),
+('LIE','Italian',2.5),
+('LTU','Russian',8.1),
+('LUX','Portuguese',13.0),
+('MAC','Portuguese',2.3),
+('MDG','French',0.0),
+('MKD','Albaniana',22.9),
+('MWI','Lomwe',18.4),
+('MDV','English',0.0),
+('MYS','Chinese',9.0),
+('MLI','Ful',13.9),
+('MLT','English',2.1),
+('MAR','Berberi',33.0),
+('MHL','English',0.0),
+('MTQ','French',0.0),
+('MRT','Wolof',6.6),
+('MUS','Bhojpuri',21.1),
+('MYT','French',20.3),
+('MEX','Náhuatl',1.8),
+('FSM','Pohnpei',23.8),
+('MDA','Russian',23.2),
+('MCO','Monegasque',16.1),
+('MNG','Kazakh',5.9),
+('MOZ','Tsonga',12.4),
+('MMR','Shan',8.5),
+('NAM','Nama',12.4),
+('NRU','Kiribati',17.9),
+('NPL','Maithili',11.9),
+('NIC','Miskito',1.6),
+('NER','Songhai-zerma',21.2),
+('NGA','Hausa',21.1),
+('NIU','English',0.0),
+('NOR','English',0.5),
+('CIV','Gur',11.7),
+('OMN','Balochi',0.0),
+('PAK','Pashto',13.1),
+('PLW','Philippene Languages',9.2),
+('PAN','Creole English',14.0),
+('PNG','Malenasian Languages',20.0),
+('PRY','Guaraní',40.1),
+('PER','Ketua',16.4),
+('MNP','Chamorro',30.0),
+('PRI','English',47.4),
+('POL','German',1.3),
+('GNQ','Bubi',8.7),
+('QAT','Urdu',0.0),
+('FRA','Arabic',2.5),
+('GUF','Indian Languages',1.9),
+('PYF','French',40.8),
+('REU','Chinese',2.8),
+('ROM','Hungarian',7.2),
+('RWA','French',0.0),
+('SWE','Finnish',2.4),
+('KNA','English',0.0),
+('LCA','English',20.0),
+('VCT','English',0.0),
+('DEU','Turkish',2.6),
+('SLB','Papuan Languages',8.6),
+('ZMB','Tongan',11.0),
+('WSM','Samoan',47.5),
+('STP','French',0.7),
+('SEN','Ful',21.7);
+INSERT INTO CountryLanguage VALUES
+('SYC','English',3.8),
+('SLE','Temne',31.8),
+('SGP','Malay',14.1),
+('SVK','Hungarian',10.5),
+('SVN','Serbo-Croatian',7.9),
+('SOM','Arabic',0.0),
+('LKA','Tamil',19.6),
+('SDN','Dinka',11.5),
+('FIN','Swedish',5.7),
+('SUR','Hindi',0.0),
+('SWZ','Zulu',2.0),
+('CHE','French',19.2),
+('SYR','Kurdish',9.0),
+('TJK','Uzbek',23.2),
+('TWN','Mandarin Chinese',20.1),
+('TZA','Swahili',8.8),
+('DNK','Turkish',0.8),
+('THA','Lao',26.9),
+('TGO','Kabyé',13.8),
+('TKL','English',0.0),
+('TON','English',0.0),
+('TTO','Hindi',3.4),
+('TCD','Arabic',12.3),
+('CZE','Moravian',12.9),
+('TUN','Arabic-French',26.3),
+('TUR','Kurdish',10.6),
+('TKM','Uzbek',9.2),
+('TUV','Kiribati',7.5),
+('UGA','Nkole',10.7),
+('UKR','Russian',32.9),
+('HUN','Romani',0.5),
+('NCL','French',34.3),
+('NZL','Maori',4.3),
+('UZB','Russian',10.9),
+('BLR','Russian',32.0),
+('WLF','Futuna',0.0),
+('VUT','English',28.3),
+('VEN','Goajiro',0.4),
+('RUS','Tatar',3.2),
+('VNM','Tho',1.8),
+('EST','Russian',27.8),
+('USA','Spanish',7.5),
+('VIR','Spanish',13.3),
+('ZWE','Ndebele',16.2),
+('PSE','Hebrew',4.1),
+('AFG','Uzbek',8.8),
+('NLD','Arabic',0.9),
+('ANT','Dutch',0.0),
+('ALB','Macedonian',0.1),
+('ASM','Tongan',3.1),
+('AND','Portuguese',10.8),
+('AGO','Kongo',13.2),
+('ARG','Indian Languages',0.3),
+('ABW','Spanish',7.4),
+('AUS','Greek',1.6),
+('AZE','Lezgian',2.3),
+('BGD','Marma',0.2),
+('BEL','Italian',2.4),
+('BLZ','Maya Languages',9.6),
+('BEN','Adja',11.1),
+('BTN','Asami',15.2),
+('BOL','Aimará',3.2),
+('BWA','San',3.5),
+('BRA','Italian',0.4),
+('GBR','Gaeli',0.1),
+('BRN','Chinese',9.3),
+('BGR','Romani',3.7),
+('BFA','Gurma',5.7),
+('BDI','Swahili',0.0),
+('CHL','Aimará',0.5),
+('CRI','Chibcha',0.3),
+('DJI','Arabic',10.6),
+('ERI','Afar',4.3),
+('ESP','Galecian',6.4),
+('ZAF','Afrikaans',14.3),
+('ETH','Tigrinja',7.2),
+('PHL','Ilocano',9.3),
+('GAB','Mpongwe',14.6),
+('GMB','Wolof',12.6),
+('GEO','Armenian',6.8),
+('GHA','Ewe',11.9),
+('GUM','Philippene Languages',19.7),
+('GTM','Cakchiquel',8.9),
+('GIN','Susu',11.0),
+('GNB','Balante',14.6),
+('GUY','Arawakan',1.4),
+('HND','Creole English',0.2),
+('HKG','Fukien',1.9),
+('IDN','Malay',12.1),
+('IND','Telugu',7.8),
+('IRQ','Azerbaijani',1.7),
+('IRN','Kurdish',9.1),
+('ISR','Russian',8.9),
+('ITA','Friuli',1.2),
+('AUT','Turkish',1.5),
+('JPN','Chinese',0.2),
+('JOR','Armenian',1.0),
+('YUG','Hungarian',3.4),
+('KHM','Chinese',3.1),
+('CMR','Duala',10.9),
+('CAN','Chinese',2.5),
+('KAZ','Ukrainian',5.0),
+('KEN','Luo',12.8),
+('CAF','Mandjia',14.8),
+('CHN','Mantu',0.9),
+('KGZ','Uzbek',14.1),
+('COL','Creole English',0.1),
+('COM','Comorian-madagassi',5.5),
+('COG','Mboshi',11.4),
+('COD','Mongo',13.5),
+('LAO','Thai',7.8),
+('LVA','Belorussian',4.1),
+('LSO','English',0.0),
+('LBN','French',0.0),
+('LBR','Grebo',8.9),
+('LIE','Turkish',2.5),
+('LTU','Polish',7.0),
+('LUX','Italian',4.6),
+('MAC','Mandarin Chinese',1.2),
+('MKD','Turkish',4.0),
+('MWI','Yao',13.2),
+('MYS','Tamil',3.9),
+('MLI','Senufo and Minianka',12.0),
+('MRT','Tukulor',5.4),
+('MUS','French',3.4),
+('MYT','Malagasy',16.1),
+('MEX','Yucatec',1.1),
+('FSM','Mortlock',7.6),
+('MDA','Ukrainian',8.6),
+('MCO','Italian',16.1),
+('MNG','Dorbet',2.7),
+('MOZ','Sena',9.4),
+('MMR','Karen',6.2),
+('NAM','Kavango',9.7),
+('NRU','Chinese',8.5),
+('NPL','Bhojpuri',7.5),
+('NIC','Creole English',0.5),
+('NER','Tamashek',10.4),
+('NGA','Ibo',18.1),
+('NOR','Danish',0.4),
+('CIV','Malinke',11.4),
+('PAK','Sindhi',11.8),
+('PLW','English',3.2),
+('PAN','Guaymí',5.3),
+('PRY','Portuguese',3.2),
+('PER','Aimará',2.3),
+('MNP','Chinese',7.1),
+('POL','Ukrainian',0.6),
+('FRA','Portuguese',1.2),
+('PYF','Chinese',2.9),
+('REU','Comorian',2.8),
+('ROM','Romani',0.7),
+('SWE','Southern Slavic Languages',1.3),
+('DEU','Southern Slavic Languages',1.4),
+('SLB','Polynesian Languages',3.8),
+('ZMB','Nyanja',7.8),
+('WSM','English',0.6),
+('SEN','Serer',12.5),
+('SYC','French',1.3),
+('SLE','Limba',8.3),
+('SGP','Tamil',7.4),
+('SVK','Romani',1.7),
+('SVN','Hungarian',0.5),
+('LKA','Mixed Languages',19.6),
+('SDN','Nubian Languages',8.1),
+('FIN','Russian',0.4),
+('CHE','Italian',7.7),
+('TJK','Russian',9.7),
+('TWN','Hakka',11.0),
+('TZA','Hehet',6.9),
+('DNK','Arabic',0.7),
+('THA','Chinese',12.1),
+('TGO','Watyi',10.3),
+('TTO','Creole English',2.9),
+('TCD','Mayo-kebbi',11.5),
+('CZE','Slovak',3.1),
+('TUN','Arabic-French-English',3.2),
+('TUR','Arabic',1.4),
+('TKM','Russian',6.7),
+('TUV','English',0.0),
+('UGA','Kiga',8.3),
+('UKR','Romanian',0.7),
+('HUN','German',0.4),
+('NCL','Polynesian Languages',11.6),
+('UZB','Tadzhik',4.4),
+('BLR','Ukrainian',1.3),
+('VUT','French',14.2),
+('VEN','Warrau',0.1),
+('RUS','Ukrainian',1.3),
+('VNM','Thai',1.6),
+('EST','Ukrainian',2.8),
+('USA','French',0.7),
+('VIR','French',2.5),
+('ZWE','English',2.2),
+('AFG','Turkmenian',1.9),
+('NLD','Turkish',0.8),
+('AND','French',6.2),
+('AGO','Luimbe-nganguela',5.4),
+('ABW','Dutch',5.3),
+('AUS','Canton Chinese',1.1);
+INSERT INTO CountryLanguage VALUES
+('AZE','Armenian',2.0),
+('BGD','Garo',0.1),
+('BEL','Arabic',1.6),
+('BLZ','Garifuna',6.8),
+('BEN','Aizo',8.7),
+('BOL','Guaraní',0.1),
+('BWA','Khoekhoe',2.5),
+('BRA','Japanese',0.4),
+('BRN','English',3.1),
+('BGR','Macedonian',2.6),
+('BFA','Busansi',3.5),
+('CHL','Rapa nui',0.2),
+('CRI','Chinese',0.2),
+('ERI','Hadareb',3.8),
+('ESP','Basque',1.6),
+('ZAF','Northsotho',9.1),
+('ETH','Gurage',4.7),
+('PHL','Hiligaynon',9.1),
+('GAB','Mbete',13.8),
+('GMB','Diola',9.2),
+('GEO','Azerbaijani',5.5),
+('GHA','Ga-adangme',7.8),
+('GUM','Korean',3.3),
+('GTM','Kekchí',4.9),
+('GIN','Kissi',6.0),
+('GNB','Portuguese',8.1),
+('HND','Miskito',0.2),
+('HKG','Hakka',1.6),
+('IDN','Madura',4.3),
+('IND','Marathi',7.4),
+('IRQ','Assyrian',0.8),
+('IRN','Gilaki',5.3),
+('ITA','French',0.5),
+('AUT','Hungarian',0.4),
+('JPN','English',0.1),
+('YUG','Romani',1.4),
+('KHM','Tam',2.4),
+('CMR','Ful',9.6),
+('CAN','Italian',1.7),
+('KAZ','German',3.1),
+('KEN','Kamba',11.2),
+('CAF','Ngbaka',7.5),
+('CHN','Hui',0.8),
+('KGZ','Ukrainian',1.7),
+('COL','Arawakan',0.1),
+('COM','Comorian-Arabic',1.6),
+('COG','Mbete',4.8),
+('COD','Rwanda',10.3),
+('LAO','Lao-Soung',5.2),
+('LVA','Ukrainian',2.9),
+('LBR','Gio',7.9),
+('LTU','Belorussian',1.4),
+('LUX','French',4.2),
+('MAC','English',0.5),
+('MKD','Romani',2.3),
+('MWI','Ngoni',6.7),
+('MYS','Iban',2.8),
+('MLI','Soninke',8.7),
+('MRT','Soninke',2.7),
+('MUS','Hindi',1.2),
+('MEX','Zapotec',0.6),
+('FSM','Kosrean',7.3),
+('MDA','Gagauzi',3.2),
+('MCO','English',6.5),
+('MNG','Bajad',1.9),
+('MOZ','Lomwe',7.8),
+('MMR','Rakhine',4.5),
+('NAM','Afrikaans',9.5),
+('NRU','Tuvalu',8.5),
+('NPL','Tharu',5.4),
+('NIC','Sumo',0.2),
+('NER','Ful',9.7),
+('NGA','Ful',11.3),
+('NOR','Swedish',0.3),
+('CIV','Kru',10.5),
+('PAK','Saraiki',9.8),
+('PLW','Chinese',1.6),
+('PAN','Cuna',2.0),
+('PRY','German',0.9),
+('MNP','Korean',6.5),
+('POL','Belorussian',0.5),
+('FRA','Italian',0.4),
+('REU','Malagasy',1.4),
+('ROM','German',0.4),
+('SWE','Arabic',0.8),
+('DEU','Italian',0.7),
+('ZMB','Lozi',6.4),
+('SEN','Diola',5.0),
+('SLE','Kono-vai',5.1),
+('SVK','Czech and Moravian',1.1),
+('SDN','Beja',6.4),
+('FIN','Estonian',0.2),
+('CHE','Romansh',0.6),
+('TWN','Ami',0.6),
+('TZA','Haya',5.9),
+('DNK','German',0.5),
+('THA','Malay',3.6),
+('TGO','Kotokoli',5.7),
+('TCD','Kanem-bornu',9.0),
+('CZE','Polish',0.6),
+('TKM','Kazakh',2.0),
+('UGA','Soga',8.2),
+('UKR','Bulgariana',0.3),
+('HUN','Serbo-Croatian',0.2),
+('UZB','Kazakh',3.8),
+('BLR','Polish',0.6),
+('RUS','Chuvash',0.9),
+('VNM','Muong',1.5),
+('EST','Belorussian',1.4),
+('USA','German',0.7),
+('ZWE','Nyanja',2.2),
+('AFG','Balochi',0.9),
+('AGO','Nyaneka-nkhumbi',5.4),
+('AUS','Arabic',1.0),
+('BGD','Khasi',0.1),
+('BEL','German',1.0),
+('BEN','Bariba',8.7),
+('BWA','Ndebele',1.3),
+('BRA','Indian Languages',0.2),
+('BFA','Dagara',3.1),
+('ERI','Bilin',3.0),
+('ZAF','English',8.5),
+('ETH','Somali',4.1),
+('PHL','Bicol',5.7),
+('GMB','Soninke',7.6),
+('GEO','Osseetti',2.4),
+('GHA','Gurma',3.3),
+('GUM','Japanese',2.0),
+('GTM','Mam',2.7),
+('GIN','Kpelle',4.6),
+('GNB','Malinke',6.9),
+('HKG','Chiu chau',1.4),
+('IDN','Minangkabau',2.4),
+('IND','Tamil',6.3),
+('IRQ','Persian',0.8),
+('IRN','Luri',4.3),
+('ITA','German',0.5),
+('AUT','Slovene',0.4),
+('JPN','Philippene Languages',0.1),
+('YUG','Slovak',0.7),
+('CMR','Tikar',7.4),
+('CAN','German',1.6),
+('KAZ','Uzbek',2.3),
+('KEN','Kalenjin',10.8),
+('CAF','Sara',6.4),
+('CHN','Miao',0.7),
+('KGZ','Tatar',1.3),
+('COL','Caribbean',0.1),
+('COM','Comorian-Swahili',0.5),
+('COG','Punu',2.9),
+('COD','Zande',6.1),
+('LVA','Polish',2.1),
+('LBR','Kru',7.2),
+('LTU','Ukrainian',1.1),
+('LUX','German',2.3),
+('MKD','Serbo-Croatian',2.0),
+('MYS','English',1.6),
+('MLI','Tamashek',7.3),
+('MRT','Ful',1.2),
+('MUS','Tamil',0.8),
+('MEX','Mixtec',0.6),
+('FSM','Yap',5.8),
+('MDA','Bulgariana',1.6),
+('MNG','Buryat',1.7),
+('MOZ','Shona',6.5),
+('MMR','Mon',2.4),
+('NAM','Herero',8.0),
+('NRU','English',7.5),
+('NPL','Tamang',4.9),
+('NER','Kanuri',4.4),
+('NGA','Ibibio',5.6),
+('NOR','Saame',0.0),
+('CIV','[South]Mande',7.7),
+('PAK','Urdu',7.6),
+('PAN','Embera',0.6),
+('MNP','English',4.8),
+('FRA','Spanish',0.4),
+('REU','Tamil',0.0),
+('ROM','Ukrainian',0.3),
+('SWE','Spanish',0.6),
+('DEU','Greek',0.4),
+('ZMB','Chewa',5.7),
+('SEN','Malinke',3.8),
+('SLE','Bullom-sherbro',3.8),
+('SVK','Ukrainian and Russian',0.6),
+('SDN','Nuer',4.9),
+('FIN','Saame',0.0),
+('TWN','Atayal',0.4),
+('TZA','Makonde',5.9),
+('DNK','English',0.3),
+('THA','Khmer',1.3),
+('TGO','Ane',5.7),
+('TCD','Ouaddai',8.7),
+('CZE','German',0.5),
+('UGA','Teso',6.0),
+('UKR','Hungarian',0.3),
+('HUN','Romanian',0.1),
+('UZB','Karakalpak',2.0),
+('RUS','Bashkir',0.7),
+('VNM','Chinese',1.4);
+INSERT INTO CountryLanguage VALUES
+('EST','Finnish',0.7),
+('USA','Italian',0.6),
+('AGO','Chokwe',4.2),
+('AUS','Vietnamese',0.8),
+('BGD','Santhali',0.1),
+('BEL','Turkish',0.9),
+('BEN','Somba',6.7),
+('BFA','Dyula',2.6),
+('ERI','Saho',3.0),
+('ZAF','Tswana',8.1),
+('ETH','Sidamo',3.2),
+('PHL','Waray-waray',3.8),
+('GEO','Abhyasi',1.7),
+('GHA','Joruba',1.3),
+('GIN','Yalunka',2.9),
+('GNB','Mandyako',4.9),
+('IDN','Batakki',2.2),
+('IND','Urdu',5.1),
+('IRN','Mazandarani',3.6),
+('ITA','Albaniana',0.2),
+('AUT','Polish',0.2),
+('JPN','Ainu',0.0),
+('YUG','Macedonian',0.5),
+('CMR','Mandara',5.7),
+('CAN','Polish',0.7),
+('KAZ','Tatar',2.0),
+('KEN','Gusii',6.1),
+('CAF','Mbum',6.4),
+('CHN','Uighur',0.6),
+('KGZ','Kazakh',0.8),
+('COG','Sango',2.6),
+('COD','Ngala and Bangi',5.8),
+('LVA','Lithuanian',1.2),
+('LBR','Mano',7.2),
+('MYS','Dusun',1.1),
+('MLI','Songhai',6.9),
+('MRT','Zenaga',1.2),
+('MUS','Marathi',0.7),
+('MEX','Otomí',0.4),
+('FSM','Wolea',3.7),
+('MNG','Dariganga',1.4),
+('MOZ','Tswa',6.0),
+('MMR','Chin',2.2),
+('NAM','Caprivi',4.7),
+('NPL','Newari',3.7),
+('NGA','Kanuri',4.1),
+('PAK','Balochi',3.0),
+('PAN','Arabic',0.6),
+('MNP','Carolinian',4.8),
+('FRA','Turkish',0.4),
+('ROM','Serbo-Croatian',0.1),
+('SWE','Norwegian',0.5),
+('DEU','Polish',0.3),
+('ZMB','Nsenga',4.3),
+('SEN','Soninke',1.3),
+('SLE','Ful',3.8),
+('SDN','Zande',2.7),
+('TWN','Paiwan',0.3),
+('TZA','Nyakusa',5.4),
+('DNK','Swedish',0.3),
+('THA','Kuy',1.1),
+('TGO','Moba',5.4),
+('TCD','Hadjarai',6.7),
+('CZE','Silesiana',0.4),
+('UGA','Lango',5.9),
+('UKR','Belorussian',0.3),
+('HUN','Slovak',0.1),
+('UZB','Tatar',1.8),
+('RUS','Chechen',0.6),
+('VNM','Khmer',1.4),
+('USA','Chinese',0.6),
+('AGO','Luvale',3.6),
+('AUS','Serbo-Croatian',0.6),
+('BGD','Tripuri',0.1),
+('BEN','Ful',5.6),
+('ZAF','Southsotho',7.6),
+('ETH','Walaita',2.8),
+('PHL','Pampango',3.0),
+('GIN','Loma',2.3),
+('IDN','Bugi',2.2),
+('IND','Gujarati',4.8),
+('IRN','Balochi',2.3),
+('ITA','Slovene',0.2),
+('AUT','Czech',0.2),
+('CMR','Maka',4.9),
+('CAN','Spanish',0.7),
+('KEN','Meru',5.5),
+('CHN','Yi',0.6),
+('KGZ','Tadzhik',0.8),
+('COD','Rundi',3.8),
+('LBR','Loma',5.8),
+('MOZ','Chuabo',5.7),
+('MMR','Kachin',1.4),
+('NAM','San',1.9),
+('NPL','Hindi',3.0),
+('NGA','Edo',3.3),
+('PAK','Hindko',2.4),
+('SLE','Kuranko',3.4),
+('SDN','Bari',2.5),
+('TZA','Chaga and Pare',4.9),
+('DNK','Norwegian',0.3),
+('TGO','Naudemba',4.1),
+('TCD','Tandjile',6.5),
+('CZE','Romani',0.3),
+('UGA','Lugbara',4.7),
+('UKR','Polish',0.1),
+('RUS','Mordva',0.5),
+('VNM','Nung',1.1),
+('USA','Tagalog',0.4),
+('AGO','Ambo',2.4),
+('AUS','German',0.6),
+('ZAF','Tsonga',4.3),
+('PHL','Pangasinan',1.8),
+('IDN','Banja',1.8),
+('IND','Kannada',3.9),
+('IRN','Arabic',2.2),
+('ITA','Romani',0.2),
+('AUT','Romanian',0.2),
+('CMR','Masana',3.9),
+('CAN','Portuguese',0.7),
+('KEN','Nyika',4.8),
+('CHN','Tujia',0.5),
+('COD','Teke',2.7),
+('LBR','Malinke',5.1),
+('MOZ','Ronga',3.7),
+('MMR','Kayah',0.4),
+('NAM','German',0.9),
+('NGA','Tiv',2.3),
+('PAK','Brahui',1.2),
+('SLE','Yalunka',3.4),
+('SDN','Fur',2.1),
+('TZA','Luguru',4.9),
+('TGO','Gurma',3.4),
+('TCD','Gorane',6.2),
+('CZE','Hungarian',0.2),
+('UGA','Gisu',4.5),
+('RUS','Kazakh',0.4),
+('VNM','Miao',0.9),
+('USA','Polish',0.3),
+('AGO','Luchazi',2.4),
+('ZAF','Swazi',2.5),
+('PHL','Maguindanao',1.4),
+('IDN','Bali',1.7),
+('IND','Malajalam',3.6),
+('IRN','Bakhtyari',1.7),
+('CAN','Punjabi',0.7),
+('KEN','Masai',1.6),
+('CHN','Mongolian',0.4),
+('COD','Boa',2.3),
+('MOZ','Marendje',3.5),
+('NGA','Ijo',1.8),
+('SDN','Chilluk',1.7),
+('TZA','Shambala',4.3),
+('UGA','Acholi',4.4),
+('RUS','Avarian',0.4),
+('VNM','Man',0.7),
+('USA','Korean',0.3),
+('ZAF','Venda',2.2),
+('PHL','Maranao',1.3),
+('IND','Orija',3.3),
+('IRN','Turkmenian',1.6),
+('CAN','Ukrainian',0.6),
+('KEN','Turkana',1.4),
+('CHN','Tibetan',0.4),
+('COD','Chokwe',1.8),
+('MOZ','Nyanja',3.3),
+('NGA','Bura',1.6),
+('SDN','Lotuko',1.5),
+('TZA','Gogo',3.9),
+('UGA','Rwanda',3.2),
+('RUS','Mari',0.4),
+('USA','Vietnamese',0.2),
+('ZAF','Ndebele',1.5),
+('IND','Punjabi',2.8),
+('CAN','Dutch',0.5),
+('CHN','Puyi',0.2),
+('TZA','Ha',3.5),
+('RUS','Udmur',0.3),
+('USA','Japanese',0.2),
+('IND','Asami',1.5),
+('CAN','Eskimo Languages',0.1),
+('CHN','Dong',0.2),
+('RUS','Belorussian',0.3),
+('USA','Portuguese',0.2);
+
+ANALYZE TABLE Country, City, CountryLanguage;
=== added file 'mysql-test/include/world_schema.inc'
--- a/mysql-test/include/world_schema.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/world_schema.inc 2009-10-12 04:59:34 +0000
@@ -0,0 +1,25 @@
+CREATE TABLE Country (
+ Code char(3) NOT NULL default '',
+ Name char(52) NOT NULL default '',
+ SurfaceArea float(10,2) NOT NULL default '0.00',
+ Population int(11) NOT NULL default '0',
+ Capital int(11) default NULL,
+ PRIMARY KEY (Code),
+ UNIQUE INDEX (Name)
+);
+CREATE TABLE City (
+ ID int(11) NOT NULL auto_increment,
+ Name char(35) NOT NULL default '',
+ Country char(3) NOT NULL default '',
+ Population int(11) NOT NULL default '0',
+ PRIMARY KEY (ID),
+ INDEX (Population),
+ INDEX (Country)
+);
+CREATE TABLE CountryLanguage (
+ Country char(3) NOT NULL default '',
+ Language char(30) NOT NULL default '',
+ Percentage float(3,1) NOT NULL default '0.0',
+ PRIMARY KEY (Country, Language),
+ INDEX (Percentage)
+);
=== modified file 'mysql-test/r/index_merge_myisam.result'
--- a/mysql-test/r/index_merge_myisam.result 2009-06-15 14:36:51 +0000
+++ b/mysql-test/r/index_merge_myisam.result 2009-10-12 04:59:34 +0000
@@ -115,11 +115,11 @@ id select_type table type possible_keys
explain select * from t0 where
(key1 < 3 or key2 < 3) and (key3 < 100);
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t0 range i1,i2,i3 i3 4 NULL 95 Using where
+1 SIMPLE t0 index_merge i1,i2,i3 i1,i2 4,4 NULL 6 Using sort_union(i1,i2); Using where
explain select * from t0 where
(key1 < 3 or key2 < 3) and (key3 < 1000);
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t0 ALL i1,i2,i3 NULL NULL NULL 1024 Using where
+1 SIMPLE t0 index_merge i1,i2,i3 i1,i2 4,4 NULL 6 Using sort_union(i1,i2); Using where
explain select * from t0 where
((key1 < 4 or key2 < 4) and (key2 <5 or key3 < 4))
or
@@ -259,7 +259,7 @@ explain
select * from t0,t1 where (t0.key1=t1.key1) and
(t0.key1=3 or t0.key2=4) and t1.key1<200;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t0 ALL i1,i2 NULL NULL NULL 1024 Using where
+1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where
1 SIMPLE t1 ref i1 i1 4 test.t0.key1 1
explain
select * from t0,t1 where (t0.key1=t1.key1) and
=== added file 'mysql-test/r/range_vs_index_merge.result'
--- a/mysql-test/r/range_vs_index_merge.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/range_vs_index_merge.result 2009-10-12 04:59:34 +0000
@@ -0,0 +1,1328 @@
+DROP TABLE IF EXISTS t1,t2,t3,t4;
+DROP DATABASE IF EXISTS world;
+set names utf8;
+CREATE DATABASE world;
+use world;
+CREATE TABLE Country (
+Code char(3) NOT NULL default '',
+Name char(52) NOT NULL default '',
+SurfaceArea float(10,2) NOT NULL default '0.00',
+Population int(11) NOT NULL default '0',
+Capital int(11) default NULL,
+PRIMARY KEY (Code),
+UNIQUE INDEX (Name)
+);
+CREATE TABLE City (
+ID int(11) NOT NULL auto_increment,
+Name char(35) NOT NULL default '',
+Country char(3) NOT NULL default '',
+Population int(11) NOT NULL default '0',
+PRIMARY KEY (ID),
+INDEX (Population),
+INDEX (Country)
+);
+CREATE TABLE CountryLanguage (
+Country char(3) NOT NULL default '',
+Language char(30) NOT NULL default '',
+Percentage float(3,1) NOT NULL default '0.0',
+PRIMARY KEY (Country, Language),
+INDEX (Percentage)
+);
+SELECT COUNT(*) FROM Country;
+COUNT(*)
+239
+SELECT COUNT(*) FROM City;
+COUNT(*)
+4079
+SELECT COUNT(*) FROM CountryLanguage;
+COUNT(*)
+984
+CREATE INDEX Name ON City(Name);
+EXPLAIN
+SELECT * FROM City
+WHERE (Population >= 100000 OR Name LIKE 'P%' OR Population < 100000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ALL Population,Name NULL NULL NULL 4079 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Population >= 100000 OR Name LIKE 'P%') AND Country='CAN' OR
+(Population < 100000 OR Name Like 'T%') AND Country='ARG';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population,Country,Name Country 3 NULL 104 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE Population < 200000 AND Name LIKE 'P%' AND
+(Population > 300000 OR Name LIKE 'T%') AND
+(Population < 100000 OR Name LIKE 'Pa%');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population,Name Name 35 NULL 135 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE Population > 100000 AND Name LIKE 'Aba%' OR
+Country IN ('CAN', 'ARG') AND ID < 3800 OR
+Country < 'U' AND Name LIKE 'Zhu%' OR
+ID BETWEEN 3800 AND 3810;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name Name,Country,PRIMARY 35,3,4 NULL 132 Using sort_union(Name,Country,PRIMARY); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Population > 101000 AND Population < 115000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 459 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Population > 101000 AND Population < 103000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 81 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Country,Name Name,Country 35,3 NULL 172 Using sort_union(Name,Country); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 115000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name Name,Country 35,3 NULL 172 Using sort_union(Name,Country); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 103000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population,Country,Name Population 4 NULL 81 Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 115000);
+ID Name Country Population
+403 Catanduva BRA 107761
+412 Cachoeirinha BRA 103240
+636 Bilbays EGY 113608
+637 Mit Ghamr EGY 101801
+701 Tarragona ESP 113016
+702 Lleida (Lérida) ESP 112207
+703 Jaén ESP 109247
+704 Ourense (Orense) ESP 109120
+705 Mataró ESP 104095
+706 Algeciras ESP 103106
+707 Marbella ESP 101144
+759 Gonder ETH 112249
+869 Cabuyao PHL 106630
+870 Calapan PHL 105910
+873 Cauayan PHL 103952
+1844 Cape Breton CAN 114733
+1847 Cambridge CAN 109186
+2908 Cajamarca PER 108009
+3003 Caen FRA 113987
+3411 Ceyhan TUR 102412
+3571 Calabozo VEN 107146
+3786 Cam Ranh VNM 114041
+3792 Tartu EST 101246
+4002 Carrollton USA 109576
+4027 Cape Coral USA 102286
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 115000);
+ID Name Country Population
+403 Catanduva BRA 107761
+412 Cachoeirinha BRA 103240
+636 Bilbays EGY 113608
+637 Mit Ghamr EGY 101801
+701 Tarragona ESP 113016
+702 Lleida (Lérida) ESP 112207
+703 Jaén ESP 109247
+704 Ourense (Orense) ESP 109120
+705 Mataró ESP 104095
+706 Algeciras ESP 103106
+707 Marbella ESP 101144
+759 Gonder ETH 112249
+869 Cabuyao PHL 106630
+870 Calapan PHL 105910
+873 Cauayan PHL 103952
+1844 Cape Breton CAN 114733
+1847 Cambridge CAN 109186
+2908 Cajamarca PER 108009
+3003 Caen FRA 113987
+3411 Ceyhan TUR 102412
+3571 Calabozo VEN 107146
+3786 Cam Ranh VNM 114041
+3792 Tartu EST 101246
+4002 Carrollton USA 109576
+4027 Cape Coral USA 102286
+4032 Cambridge USA 101355
+SELECT * FROM City USE INDEX ()
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 103000);
+ID Name Country Population
+637 Mit Ghamr EGY 101801
+707 Marbella ESP 101144
+3411 Ceyhan TUR 102412
+3792 Tartu EST 101246
+4027 Cape Coral USA 102286
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 103000);
+ID Name Country Population
+707 Marbella ESP 101144
+3792 Tartu EST 101246
+4032 Cambridge USA 101355
+637 Mit Ghamr EGY 101801
+4027 Cape Coral USA 102286
+3411 Ceyhan TUR 102412
+EXPLAIN
+SELECT * FROM City WHERE (Name < 'Ac');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 13 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Name < 'C');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 325 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Country > 'A' AND Country < 'B');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Country Country 3 NULL 104 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Name BETWEEN 'P' AND 'Pb');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 39 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Name BETWEEN 'P' AND 'T');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 468 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 110000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 328 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 103000 AND Population < 104000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 37 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population,Country,Name Name 35 NULL 52 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name Name,Population 35,4 NULL 50 Using sort_union(Name,Population); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name Country,Name 3,35 NULL 143 Using sort_union(Country,Name); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name Country,Population 3,4 NULL 141 Using sort_union(Country,Population); Using where
+SELECT * FROM City USE INDEX ()
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+ID Name Country Population
+65 Abu Dhabi ARE 398695
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+SELECT * FROM City
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+ID Name Country Population
+65 Abu Dhabi ARE 398695
+750 Paarl ZAF 105768
+168 Pabna BGD 103277
+2865 Pak Pattan PAK 107800
+189 Parakou BEN 103577
+SELECT * FROM City USE INDEX ()
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+ID Name Country Population
+65 Abu Dhabi ARE 398695
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+914 Sekondi-Takoradi GHA 103653
+1003 Pemalang IDN 103500
+2663 Río Bravo MEX 103901
+SELECT * FROM City
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+ID Name Country Population
+65 Abu Dhabi ARE 398695
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+914 Sekondi-Takoradi GHA 103653
+1003 Pemalang IDN 103500
+2663 Río Bravo MEX 103901
+SELECT * FROM City USE INDEX ()
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+ID Name Country Population
+55 Andorra la Vella AND 21189
+59 Benguela AGO 128300
+65 Abu Dhabi ARE 398695
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+69 Buenos Aires ARG 2982146
+75 Almirante Brown ARG 538918
+85 Avellaneda ARG 353046
+93 Berazategui ARG 276916
+96 Bahía Blanca ARG 239810
+132 Brisbane AUS 1291117
+134 Adelaide AUS 978100
+144 Baku AZE 1787800
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+SELECT * FROM City
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+ID Name Country Population
+55 Andorra la Vella AND 21189
+59 Benguela AGO 128300
+65 Abu Dhabi ARE 398695
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+69 Buenos Aires ARG 2982146
+75 Almirante Brown ARG 538918
+85 Avellaneda ARG 353046
+93 Berazategui ARG 276916
+96 Bahía Blanca ARG 239810
+132 Brisbane AUS 1291117
+134 Adelaide AUS 978100
+144 Baku AZE 1787800
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+SELECT * FROM City USE INDEX ()
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+ID Name Country Population
+55 Andorra la Vella AND 21189
+59 Benguela AGO 128300
+65 Abu Dhabi ARE 398695
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+69 Buenos Aires ARG 2982146
+75 Almirante Brown ARG 538918
+85 Avellaneda ARG 353046
+93 Berazategui ARG 276916
+96 Bahía Blanca ARG 239810
+132 Brisbane AUS 1291117
+134 Adelaide AUS 978100
+144 Baku AZE 1787800
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+914 Sekondi-Takoradi GHA 103653
+1003 Pemalang IDN 103500
+2663 Río Bravo MEX 103901
+SELECT * FROM City
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+ID Name Country Population
+55 Andorra la Vella AND 21189
+59 Benguela AGO 128300
+65 Abu Dhabi ARE 398695
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+69 Buenos Aires ARG 2982146
+75 Almirante Brown ARG 538918
+85 Avellaneda ARG 353046
+93 Berazategui ARG 276916
+96 Bahía Blanca ARG 239810
+132 Brisbane AUS 1291117
+134 Adelaide AUS 978100
+144 Baku AZE 1787800
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+914 Sekondi-Takoradi GHA 103653
+1003 Pemalang IDN 103500
+2663 Río Bravo MEX 103901
+EXPLAIN
+SELECT * FROM City WHERE (ID < 50) OR (ID BETWEEN 100 AND 110);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 61 Using where
+EXPLAIN
+SELECT * FROM City WHERE (ID < 200) OR (ID BETWEEN 300 AND 600);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 501 Using where
+EXPLAIN
+SELECT * FROM City WHERE (ID < 600) OR (ID BETWEEN 900 AND 1800);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ALL PRIMARY NULL NULL NULL 4079 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country > 'A' AND Country < 'ARG';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Country Country 3 NULL 19 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'H%' OR Name LIKE 'P%' ;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 222 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'Ha%' OR Name LIKE 'Pa%' ;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 72 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((ID < 50) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 100 AND 110) AND
+(Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY,Population,Country,Name PRIMARY 4 NULL 61 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 900 AND 1800) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name Name,Country,Population 35,3,4 NULL 128 Using sort_union(Name,Country,Population); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((ID < 600) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 300 AND 600) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name Name,Country,Population 35,3,4 NULL 128 Using sort_union(Name,Country,Population); Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((ID < 50) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 100 AND 110) AND
+(Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+31 Heerlen NLD 95052
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+100 Paraná ARG 207041
+102 Posadas ARG 201273
+SELECT * FROM City
+WHERE ((ID < 50) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 100 AND 110) AND
+(Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+31 Heerlen NLD 95052
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+100 Paraná ARG 207041
+102 Posadas ARG 201273
+SELECT * FROM City USE INDEX()
+WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 900 AND 1800) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+55 Andorra la Vella AND 21189
+56 Luanda AGO 2022000
+57 Huambo AGO 163100
+58 Lobito AGO 130000
+59 Benguela AGO 128300
+60 Namibe AGO 118200
+61 South Hill AIA 961
+62 The Valley AIA 595
+64 Dubai ARE 669181
+65 Abu Dhabi ARE 398695
+66 Sharja ARE 320095
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+129 Oranjestad ABW 29034
+191 Hamilton BMU 1200
+528 Hartlepool GBR 92000
+529 Halifax GBR 91069
+914 Sekondi-Takoradi GHA 103653
+943 Palembang IDN 1222764
+950 Padang IDN 534474
+983 Palu IDN 142800
+984 Pasuruan IDN 134019
+991 Pangkal Pinang IDN 124000
+1003 Pemalang IDN 103500
+1004 Klaten IDN 103300
+1007 Palangka Raya IDN 99693
+1020 Padang Sidempuan IDN 91200
+1045 Patna IND 917243
+1114 Panihati IND 275990
+1129 Patiala IND 238368
+1142 Panipat IND 215218
+1159 Parbhani IND 190255
+1231 Pali IND 136842
+1263 Pathankot IND 123930
+1265 Palghat (Palakkad) IND 123289
+1293 Pallavaram IND 111866
+1319 Tellicherry (Thalassery) IND 103579
+1339 Palayankottai IND 97662
+1345 Patan IND 96109
+1436 Marv Dasht IRN 103579
+1468 Palermo ITA 683794
+1478 Padova ITA 211391
+1484 Parma ITA 168717
+1530 Kingston JAM 103962
+1747 Toda JPN 103969
+1748 Tajimi JPN 103171
+1785 Ibb YEM 103300
+SELECT * FROM City
+WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 900 AND 1800) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+55 Andorra la Vella AND 21189
+56 Luanda AGO 2022000
+57 Huambo AGO 163100
+58 Lobito AGO 130000
+59 Benguela AGO 128300
+60 Namibe AGO 118200
+61 South Hill AIA 961
+62 The Valley AIA 595
+64 Dubai ARE 669181
+65 Abu Dhabi ARE 398695
+66 Sharja ARE 320095
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+129 Oranjestad ABW 29034
+191 Hamilton BMU 1200
+528 Hartlepool GBR 92000
+529 Halifax GBR 91069
+914 Sekondi-Takoradi GHA 103653
+943 Palembang IDN 1222764
+950 Padang IDN 534474
+983 Palu IDN 142800
+984 Pasuruan IDN 134019
+991 Pangkal Pinang IDN 124000
+1003 Pemalang IDN 103500
+1004 Klaten IDN 103300
+1007 Palangka Raya IDN 99693
+1020 Padang Sidempuan IDN 91200
+1045 Patna IND 917243
+1114 Panihati IND 275990
+1129 Patiala IND 238368
+1142 Panipat IND 215218
+1159 Parbhani IND 190255
+1231 Pali IND 136842
+1263 Pathankot IND 123930
+1265 Palghat (Palakkad) IND 123289
+1293 Pallavaram IND 111866
+1319 Tellicherry (Thalassery) IND 103579
+1339 Palayankottai IND 97662
+1345 Patan IND 96109
+1436 Marv Dasht IRN 103579
+1468 Palermo ITA 683794
+1478 Padova ITA 211391
+1484 Parma ITA 168717
+1530 Kingston JAM 103962
+1747 Toda JPN 103969
+1748 Tajimi JPN 103171
+1785 Ibb YEM 103300
+SELECT * FROM City USE INDEX ()
+WHERE ((ID < 200) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 300 AND 600) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+55 Andorra la Vella AND 21189
+56 Luanda AGO 2022000
+57 Huambo AGO 163100
+58 Lobito AGO 130000
+59 Benguela AGO 128300
+60 Namibe AGO 118200
+61 South Hill AIA 961
+62 The Valley AIA 595
+64 Dubai ARE 669181
+65 Abu Dhabi ARE 398695
+66 Sharja ARE 320095
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+129 Oranjestad ABW 29034
+191 Hamilton BMU 1200
+339 Passo Fundo BRA 166343
+364 Parnaíba BRA 129756
+372 Paranaguá BRA 126076
+379 Palmas BRA 121919
+386 Patos de Minas BRA 119262
+411 Guaratinguetá BRA 103433
+412 Cachoeirinha BRA 103240
+413 Codó BRA 103153
+424 Passos BRA 98570
+430 Paulo Afonso BRA 97291
+435 Parnamirim BRA 96210
+448 Patos BRA 90519
+451 Palhoça BRA 89465
+517 Oldham GBR 103931
+SELECT * FROM City
+WHERE ((ID < 200) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 300 AND 600) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+55 Andorra la Vella AND 21189
+56 Luanda AGO 2022000
+57 Huambo AGO 163100
+58 Lobito AGO 130000
+59 Benguela AGO 128300
+60 Namibe AGO 118200
+61 South Hill AIA 961
+62 The Valley AIA 595
+64 Dubai ARE 669181
+65 Abu Dhabi ARE 398695
+66 Sharja ARE 320095
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+129 Oranjestad ABW 29034
+191 Hamilton BMU 1200
+339 Passo Fundo BRA 166343
+364 Parnaíba BRA 129756
+372 Paranaguá BRA 126076
+379 Palmas BRA 121919
+386 Patos de Minas BRA 119262
+411 Guaratinguetá BRA 103433
+412 Cachoeirinha BRA 103240
+413 Codó BRA 103153
+424 Passos BRA 98570
+430 Paulo Afonso BRA 97291
+435 Parnamirim BRA 96210
+448 Patos BRA 90519
+451 Palhoça BRA 89465
+517 Oldham GBR 103931
+EXPLAIN
+SELECT * FROM City WHERE Population > 101000 AND Population < 102000;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 39 Using where
+EXPLAIN
+SELECT * FROM City WHERE Population > 101000 AND Population < 110000;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 328 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country < 'C';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Country Country 3 NULL 436 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country < 'AGO';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Country Country 3 NULL 6 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name BETWEEN 'P' AND 'T';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 468 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name BETWEEN 'P' AND 'Pb';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 39 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3400 AND 3800;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 401 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'P%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 135 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) AND
+(Country < 'C' OR Name BETWEEN 'P' AND 'T')) OR
+((ID BETWEEN 3400 AND 3800) AND
+(Country < 'AGO' OR Name LIKE 'Pa%'));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name Country,Name,Population 3,35,4 NULL 84 Using sort_union(Country,Name,Population); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 110000) AND
+(Country < 'AGO' OR Name BETWEEN 'P' AND 'Pb')) OR
+((ID BETWEEN 3790 AND 3800) AND
+(Country < 'C' OR Name LIKE 'P%'));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name Country,Name,PRIMARY 3,35,4 NULL 56 Using sort_union(Country,Name,PRIMARY); Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 102000) AND
+(Country < 'C' OR Name BETWEEN 'P' AND 'T')) OR
+((ID BETWEEN 3400 AND 3800) AND
+(Country < 'AGO' OR Name LIKE 'Pa%'));
+ID Name Country Population
+169 Naogaon BGD 101266
+205 Francistown BWA 101805
+417 Itaituba BRA 101320
+418 Araras BRA 101046
+751 Potchefstroom ZAF 101817
+1752 Sakata JPN 101651
+1851 Saint John´s CAN 101936
+1853 Saanich CAN 101388
+2909 Puno PER 101578
+3463 Pavlograd UKR 127000
+4030 Sandy USA 101853
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) AND
+(Country < 'C' OR Name BETWEEN 'P' AND 'T')) OR
+((ID BETWEEN 3400 AND 3800) AND
+(Country < 'AGO' OR Name LIKE 'Pa%'));
+ID Name Country Population
+169 Naogaon BGD 101266
+205 Francistown BWA 101805
+417 Itaituba BRA 101320
+418 Araras BRA 101046
+751 Potchefstroom ZAF 101817
+1752 Sakata JPN 101651
+1851 Saint John´s CAN 101936
+1853 Saanich CAN 101388
+2909 Puno PER 101578
+3463 Pavlograd UKR 127000
+4030 Sandy USA 101853
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 110000) AND
+(Country < 'AGO' OR Name BETWEEN 'P' AND 'Pb')) OR
+((ID BETWEEN 3790 AND 3800) AND
+(Country < 'C' OR Name LIKE 'P%'));
+ID Name Country Population
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 110000) AND
+(Country < 'AGO' OR Name BETWEEN 'P' AND 'Pb')) OR
+((ID BETWEEN 3790 AND 3800) AND
+(Country < 'C' OR Name LIKE 'P%'));
+ID Name Country Population
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+CREATE INDEX CountryPopulation ON City(Country,Population);
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'Pas%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 5 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'P%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 135 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 103000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 81 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country='USA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref Country,CountryPopulation Country 3 const 267 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
+AND Country='USA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name,CountryPopulation CountryPopulation,Name 7,35 NULL 15 Using sort_union(CountryPopulation,Name); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
+AND Country='USA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref Population,Country,Name,CountryPopulation Country 3 const 267 Using where
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
+AND Country='USA';
+ID Name Country Population
+3943 Pasadena USA 141674
+3953 Pasadena USA 133936
+4023 Gary USA 102746
+4024 Berkeley USA 102743
+4025 Santa Clara USA 102361
+4026 Green Bay USA 102313
+4027 Cape Coral USA 102286
+4028 Arvada USA 102153
+4029 Pueblo USA 102121
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
+AND Country='USA';
+ID Name Country Population
+3943 Pasadena USA 141674
+3953 Pasadena USA 133936
+4023 Gary USA 102746
+4024 Berkeley USA 102743
+4025 Santa Clara USA 102361
+4026 Green Bay USA 102313
+4027 Cape Coral USA 102286
+4028 Arvada USA 102153
+4029 Pueblo USA 102121
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
+AND Country='USA';
+ID Name Country Population
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+3820 Portland USA 529121
+3844 Pittsburgh USA 334563
+3870 Plano USA 222030
+3912 Providence USA 173618
+3930 Pomona USA 149473
+3932 Paterson USA 149222
+3943 Pasadena USA 141674
+3951 Pembroke Pines USA 137427
+3953 Pasadena USA 133936
+3967 Paradise USA 124682
+3986 Palmdale USA 116670
+3996 Peoria USA 112936
+4007 Peoria USA 108364
+4016 Provo USA 105166
+4023 Gary USA 102746
+4024 Berkeley USA 102743
+4025 Santa Clara USA 102361
+4026 Green Bay USA 102313
+4027 Cape Coral USA 102286
+4028 Arvada USA 102153
+4029 Pueblo USA 102121
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+4035 Portsmouth USA 100565
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
+AND Country='USA';
+ID Name Country Population
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+3820 Portland USA 529121
+3844 Pittsburgh USA 334563
+3870 Plano USA 222030
+3912 Providence USA 173618
+3930 Pomona USA 149473
+3932 Paterson USA 149222
+3943 Pasadena USA 141674
+3951 Pembroke Pines USA 137427
+3953 Pasadena USA 133936
+3967 Paradise USA 124682
+3986 Palmdale USA 116670
+3996 Peoria USA 112936
+4007 Peoria USA 108364
+4016 Provo USA 105166
+4023 Gary USA 102746
+4024 Berkeley USA 102743
+4025 Santa Clara USA 102361
+4026 Green Bay USA 102313
+4027 Cape Coral USA 102286
+4028 Arvada USA 102153
+4029 Pueblo USA 102121
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+4035 Portsmouth USA 100565
+CREATE INDEX CountryName ON City(Country,Name);
+EXPLAIN
+SELECT * FROM City WHERE Country='USA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref Country,CountryPopulation,CountryName Country 3 const 267 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country='BRA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref Country,CountryPopulation,CountryName CountryName 3 const 221 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 4025 AND 4035;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 4028 AND 4032;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 5 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3500 AND 3800;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 301 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 4000 AND 4300;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 80 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 250 and 260 ;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 102000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 39 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 103000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 81 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'Pa%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 41 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryPopulation,PRIMARY 7,4 NULL 14 Using sort_union(CountryPopulation,PRIMARY); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4028 AND 4032);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryName,PRIMARY 38,4 NULL 11 Using sort_union(CountryName,PRIMARY); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 110000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name BETWEEN 'P' AND 'T' OR ID BETWEEN 4000 AND 4300);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref PRIMARY,Population,Country,Name,CountryPopulation,CountryName Country 3 const 267 Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4028 AND 4032);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4028 AND 4032);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 and Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryPopulation,PRIMARY,CountryName 7,4,38 NULL 35 Using sort_union(CountryPopulation,PRIMARY,CountryName); Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 and Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
+ID Name Country Population
+250 Mauá BRA 375055
+251 Carapicuíba BRA 357552
+252 Olinda BRA 354732
+253 Campina Grande BRA 352497
+254 São José do Rio Preto BRA 351944
+255 Caxias do Sul BRA 349581
+256 Moji das Cruzes BRA 339194
+257 Diadema BRA 335078
+258 Aparecida de Goiânia BRA 324662
+259 Piracicaba BRA 319104
+260 Cariacica BRA 319033
+285 Paulista BRA 248473
+339 Passo Fundo BRA 166343
+364 Parnaíba BRA 129756
+372 Paranaguá BRA 126076
+379 Palmas BRA 121919
+386 Patos de Minas BRA 119262
+424 Passos BRA 98570
+430 Paulo Afonso BRA 97291
+435 Parnamirim BRA 96210
+448 Patos BRA 90519
+451 Palhoça BRA 89465
+3793 New York USA 8008278
+3794 Los Angeles USA 3694820
+3795 Chicago USA 2896016
+3796 Houston USA 1953631
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+3799 San Diego USA 1223400
+3800 Dallas USA 1188580
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 and Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
+ID Name Country Population
+250 Mauá BRA 375055
+251 Carapicuíba BRA 357552
+252 Olinda BRA 354732
+253 Campina Grande BRA 352497
+254 São José do Rio Preto BRA 351944
+255 Caxias do Sul BRA 349581
+256 Moji das Cruzes BRA 339194
+257 Diadema BRA 335078
+258 Aparecida de Goiânia BRA 324662
+259 Piracicaba BRA 319104
+260 Cariacica BRA 319033
+285 Paulista BRA 248473
+339 Passo Fundo BRA 166343
+364 Parnaíba BRA 129756
+372 Paranaguá BRA 126076
+379 Palmas BRA 121919
+386 Patos de Minas BRA 119262
+424 Passos BRA 98570
+430 Paulo Afonso BRA 97291
+435 Parnamirim BRA 96210
+448 Patos BRA 90519
+451 Palhoça BRA 89465
+3793 New York USA 8008278
+3794 Los Angeles USA 3694820
+3795 Chicago USA 2896016
+3796 Houston USA 1953631
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+3799 San Diego USA 1223400
+3800 Dallas USA 1188580
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryName 38 NULL 23 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pho%' OR ID BETWEEN 4000 AND 4300);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY,Population,Country,Name,CountryPopulation,CountryName Name 35 NULL 1 Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
+ID Name Country Population
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
+ID Name Country Population
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pho%' OR ID BETWEEN 4000 AND 4300);
+ID Name Country Population
+3798 Phoenix USA 1321045
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pho%' OR ID BETWEEN 4000 AND 4300);
+ID Name Country Population
+3798 Phoenix USA 1321045
+DROP DATABASE world;
+use test;
+CREATE TABLE t1 (
+id int(10) unsigned NOT NULL auto_increment,
+account_id int(10) unsigned NOT NULL,
+first_name varchar(50) default NULL,
+middle_name varchar(50) default NULL,
+last_name varchar(100) default NULL,
+home_address_1 varchar(150) default NULL,
+home_city varchar(75) default NULL,
+home_state char(2) default NULL,
+home_postal_code varchar(50) default NULL,
+home_county varchar(75) default NULL,
+home_country char(3) default NULL,
+work_address_1 varchar(150) default NULL,
+work_city varchar(75) default NULL,
+work_state char(2) default NULL,
+work_postal_code varchar(50) default NULL,
+work_county varchar(75) default NULL,
+work_country char(3) default NULL,
+login varchar(50) NOT NULL,
+PRIMARY KEY (id),
+KEY login (login,account_id),
+KEY account_id (account_id),
+KEY user_home_country_indx (home_country),
+KEY user_work_country_indx (work_country),
+KEY user_home_state_indx (home_state),
+KEY user_work_state_indx (work_state),
+KEY user_home_city_indx (home_city),
+KEY user_work_city_indx (work_city),
+KEY user_first_name_indx (first_name),
+KEY user_last_name_indx (last_name)
+);
+insert into t1(account_id, login, home_state, work_state) values
+(1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia'),
+(1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia');
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+analyze table t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+select count(*) from t1 where account_id = 1;
+count(*)
+3072
+select * from t1
+where (home_state = 'ia' or work_state='ia') and account_id = 1;
+id account_id first_name middle_name last_name home_address_1 home_city home_state home_postal_code home_county home_country work_address_1 work_city work_state work_postal_code work_county work_country login
+1 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+2 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+3 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+4 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+5 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+6 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+explain
+select * from t1
+where (home_state = 'ia' or work_state='ia') and account_id = 1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge account_id,user_home_state_indx,user_work_state_indx user_home_state_indx,user_work_state_indx 3,3 NULL 6 Using union(user_home_state_indx,user_work_state_indx); Using where
+drop table t1;
+CREATE TABLE t1 (
+c1 int(11) NOT NULL auto_increment,
+c2 decimal(10,0) default NULL,
+c3 decimal(10,0) default NULL,
+c4 decimal(10,0) default NULL,
+c5 decimal(10,0) default NULL,
+cp decimal(1,0) default NULL,
+ce decimal(10,0) default NULL,
+cdata char(20),
+PRIMARY KEY (c1),
+KEY k1 (c2,c3,cp,ce),
+KEY k2 (c4,c5,cp,ce)
+);
+insert into t1 (c2, c3, c4, c5, cp) values(1,1,1,1,1);
+insert into t1 (c2, c3, c4, c5, cp) values(2,1,1,1,4);
+insert into t1 (c2, c3, c4, c5, cp) values(2,1,2,1,1);
+insert into t1 (c2, c3, c4, c5, cp) values(2,1,3,1,4);
+insert into t1 (c2, c3, c4, c5, cp) values(3,1,4,1,4);
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+analyze table t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+explain
+select * from t1 where (c2=1 and c3=1) or (c4=2 and c5=1);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2 k1,k2 12,12 NULL 2 Using sort_union(k1,k2); Using where
+explain
+select * from t1
+where (c2=1 and c3=1 and cp=1) or (c4=2 and c5=1 and cp=1);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2 k1,k2 14,14 NULL 2 Using sort_union(k1,k2); Using where
+explain
+select * from t1
+where ((c2=1 and c3=1) or (c4=2 and c5=1)) and cp=1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2 k1,k2 14,14 NULL 2 Using sort_union(k1,k2); Using where
+select * from t1
+where (c2=1 and c3=1 and cp=1) or (c4=2 and c5=1 and cp=1);
+c1 c2 c3 c4 c5 cp ce cdata
+1 1 1 1 1 1 NULL NULL
+3 2 1 2 1 1 NULL NULL
+select * from t1
+where ((c2=1 and c3=1) or (c4=2 and c5=1)) and cp=1;
+c1 c2 c3 c4 c5 cp ce cdata
+1 1 1 1 1 1 NULL NULL
+3 2 1 2 1 1 NULL NULL
+drop table t1;
+create table t1 (
+c1 int auto_increment primary key,
+c2 char(20),
+c3 char (20),
+c4 int
+);
+alter table t1 add key k1 (c2);
+alter table t1 add key k2 (c3);
+alter table t1 add key k3 (c4);
+insert into t1 values(null, 'a', 'b', 0);
+insert into t1 values(null, 'c', 'b', 0);
+insert into t1 values(null, 'a', 'd', 0);
+insert into t1 values(null, 'ccc', 'qqq', 0);
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,1 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,2 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,3 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,4 from t1 where c2 != 'a';
+analyze table t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+select count(*) from t1 where (c2='e' OR c3='q');
+count(*)
+0
+select count(*) from t1 where c4 != 0;
+count(*)
+3840
+explain
+select distinct c1 from t1 where (c2='e' OR c3='q');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2 k1,k2 21,21 NULL 2 Using union(k1,k2); Using where
+explain
+select distinct c1 from t1 where (c4!= 0) AND (c2='e' OR c3='q');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2,k3 k1,k2 21,21 NULL 2 Using union(k1,k2); Using where
+drop table t1;
+create table t1 (
+id int unsigned auto_increment primary key,
+c1 char(12),
+c2 char(15),
+c3 char(1)
+);
+insert into t1 (c3) values ('1'), ('2');
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+update t1 set c1=lpad(id+1000, 12, ' '), c2=lpad(id+10000, 15, ' ');
+alter table t1 add unique index (c1), add unique index (c2), add index (c3);
+analyze table t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+explain
+select * from t1 where (c1=' 100000' or c2=' 2000000');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge c1,c2 c1,c2 13,16 NULL 2 Using union(c1,c2); Using where
+explain
+select * from t1 where (c1=' 100000' or c2=' 2000000') and c3='2';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge c1,c2,c3 c1,c2 13,16 NULL 2 Using union(c1,c2); Using where
+select * from t1 where (c1=' 100000' or c2=' 2000000');
+id c1 c2 c3
+select * from t1 where (c1=' 100000' or c2=' 2000000') and c3='2';
+id c1 c2 c3
+drop table t1;
=== added file 'mysql-test/r/range_vs_index_merge_innodb.result'
--- a/mysql-test/r/range_vs_index_merge_innodb.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/range_vs_index_merge_innodb.result 2009-10-12 04:59:34 +0000
@@ -0,0 +1,1330 @@
+SET SESSION STORAGE_ENGINE='InnoDB';
+DROP TABLE IF EXISTS t1,t2,t3,t4;
+DROP DATABASE IF EXISTS world;
+set names utf8;
+CREATE DATABASE world;
+use world;
+CREATE TABLE Country (
+Code char(3) NOT NULL default '',
+Name char(52) NOT NULL default '',
+SurfaceArea float(10,2) NOT NULL default '0.00',
+Population int(11) NOT NULL default '0',
+Capital int(11) default NULL,
+PRIMARY KEY (Code),
+UNIQUE INDEX (Name)
+);
+CREATE TABLE City (
+ID int(11) NOT NULL auto_increment,
+Name char(35) NOT NULL default '',
+Country char(3) NOT NULL default '',
+Population int(11) NOT NULL default '0',
+PRIMARY KEY (ID),
+INDEX (Population),
+INDEX (Country)
+);
+CREATE TABLE CountryLanguage (
+Country char(3) NOT NULL default '',
+Language char(30) NOT NULL default '',
+Percentage float(3,1) NOT NULL default '0.0',
+PRIMARY KEY (Country, Language),
+INDEX (Percentage)
+);
+SELECT COUNT(*) FROM Country;
+COUNT(*)
+239
+SELECT COUNT(*) FROM City;
+COUNT(*)
+4079
+SELECT COUNT(*) FROM CountryLanguage;
+COUNT(*)
+984
+CREATE INDEX Name ON City(Name);
+EXPLAIN
+SELECT * FROM City
+WHERE (Population >= 100000 OR Name LIKE 'P%' OR Population < 100000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ALL Population,Name NULL NULL NULL 4249 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Population >= 100000 OR Name LIKE 'P%') AND Country='CAN' OR
+(Population < 100000 OR Name Like 'T%') AND Country='ARG';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population,Country,Name Country 3 NULL 106 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE Population < 200000 AND Name LIKE 'P%' AND
+(Population > 300000 OR Name LIKE 'T%') AND
+(Population < 100000 OR Name LIKE 'Pa%');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population,Name Name 35 NULL 235 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE Population > 100000 AND Name LIKE 'Aba%' OR
+Country IN ('CAN', 'ARG') AND ID < 3800 OR
+Country < 'U' AND Name LIKE 'Zhu%' OR
+ID BETWEEN 3800 AND 3810;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name Name,Country,PRIMARY 35,3,4 NULL 125 Using sort_union(Name,Country,PRIMARY); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Population > 101000 AND Population < 115000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 458 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Population > 101000 AND Population < 103000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 80 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Country,Name Name,Country 35,3 NULL 213 Using sort_union(Name,Country); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 115000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name Name,Country 35,3 NULL 213 Using sort_union(Name,Country); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 103000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population,Country,Name Population 4 NULL 80 Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 115000);
+ID Name Country Population
+403 Catanduva BRA 107761
+412 Cachoeirinha BRA 103240
+636 Bilbays EGY 113608
+637 Mit Ghamr EGY 101801
+701 Tarragona ESP 113016
+702 Lleida (Lérida) ESP 112207
+703 Jaén ESP 109247
+704 Ourense (Orense) ESP 109120
+705 Mataró ESP 104095
+706 Algeciras ESP 103106
+707 Marbella ESP 101144
+759 Gonder ETH 112249
+869 Cabuyao PHL 106630
+870 Calapan PHL 105910
+873 Cauayan PHL 103952
+1844 Cape Breton CAN 114733
+1847 Cambridge CAN 109186
+2908 Cajamarca PER 108009
+3003 Caen FRA 113987
+3411 Ceyhan TUR 102412
+3571 Calabozo VEN 107146
+3786 Cam Ranh VNM 114041
+3792 Tartu EST 101246
+4002 Carrollton USA 109576
+4027 Cape Coral USA 102286
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 115000);
+ID Name Country Population
+403 Catanduva BRA 107761
+412 Cachoeirinha BRA 103240
+636 Bilbays EGY 113608
+637 Mit Ghamr EGY 101801
+701 Tarragona ESP 113016
+702 Lleida (Lérida) ESP 112207
+703 Jaén ESP 109247
+704 Ourense (Orense) ESP 109120
+705 Mataró ESP 104095
+706 Algeciras ESP 103106
+707 Marbella ESP 101144
+759 Gonder ETH 112249
+869 Cabuyao PHL 106630
+870 Calapan PHL 105910
+873 Cauayan PHL 103952
+1844 Cape Breton CAN 114733
+1847 Cambridge CAN 109186
+2908 Cajamarca PER 108009
+3003 Caen FRA 113987
+3411 Ceyhan TUR 102412
+3571 Calabozo VEN 107146
+3786 Cam Ranh VNM 114041
+3792 Tartu EST 101246
+4002 Carrollton USA 109576
+4027 Cape Coral USA 102286
+4032 Cambridge USA 101355
+SELECT * FROM City USE INDEX ()
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 103000);
+ID Name Country Population
+637 Mit Ghamr EGY 101801
+707 Marbella ESP 101144
+3411 Ceyhan TUR 102412
+3792 Tartu EST 101246
+4027 Cape Coral USA 102286
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+AND (Population > 101000 AND Population < 103000);
+ID Name Country Population
+707 Marbella ESP 101144
+3792 Tartu EST 101246
+4032 Cambridge USA 101355
+637 Mit Ghamr EGY 101801
+4027 Cape Coral USA 102286
+3411 Ceyhan TUR 102412
+EXPLAIN
+SELECT * FROM City WHERE (Name < 'Ac');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 23 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Name < 'C');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ALL Name NULL NULL NULL 4249 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Country > 'A' AND Country < 'B');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Country Country 3 NULL 106 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Name BETWEEN 'P' AND 'Pb');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 71 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Name BETWEEN 'P' AND 'T');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ALL Name NULL NULL NULL 4249 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 110000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 327 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 103000 AND Population < 104000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 36 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population,Country,Name Name 35 NULL 94 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name Name,Population 35,4 NULL 59 Using sort_union(Name,Population); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name Country,Name 3,35 NULL 177 Using sort_union(Country,Name); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name Country,Population 3,4 NULL 142 Using sort_union(Country,Population); Using where
+SELECT * FROM City USE INDEX ()
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+ID Name Country Population
+65 Abu Dhabi ARE 398695
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+SELECT * FROM City
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+ID Name Country Population
+65 Abu Dhabi ARE 398695
+750 Paarl ZAF 105768
+168 Pabna BGD 103277
+2865 Pak Pattan PAK 107800
+189 Parakou BEN 103577
+SELECT * FROM City USE INDEX ()
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+ID Name Country Population
+65 Abu Dhabi ARE 398695
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+914 Sekondi-Takoradi GHA 103653
+1003 Pemalang IDN 103500
+2663 Río Bravo MEX 103901
+SELECT * FROM City
+WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+ID Name Country Population
+65 Abu Dhabi ARE 398695
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+914 Sekondi-Takoradi GHA 103653
+1003 Pemalang IDN 103500
+2663 Río Bravo MEX 103901
+SELECT * FROM City USE INDEX ()
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+ID Name Country Population
+55 Andorra la Vella AND 21189
+59 Benguela AGO 128300
+65 Abu Dhabi ARE 398695
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+69 Buenos Aires ARG 2982146
+75 Almirante Brown ARG 538918
+85 Avellaneda ARG 353046
+93 Berazategui ARG 276916
+96 Bahía Blanca ARG 239810
+132 Brisbane AUS 1291117
+134 Adelaide AUS 978100
+144 Baku AZE 1787800
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+SELECT * FROM City
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+ID Name Country Population
+55 Andorra la Vella AND 21189
+59 Benguela AGO 128300
+65 Abu Dhabi ARE 398695
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+69 Buenos Aires ARG 2982146
+75 Almirante Brown ARG 538918
+85 Avellaneda ARG 353046
+93 Berazategui ARG 276916
+96 Bahía Blanca ARG 239810
+132 Brisbane AUS 1291117
+134 Adelaide AUS 978100
+144 Baku AZE 1787800
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+SELECT * FROM City USE INDEX ()
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+ID Name Country Population
+55 Andorra la Vella AND 21189
+59 Benguela AGO 128300
+65 Abu Dhabi ARE 398695
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+69 Buenos Aires ARG 2982146
+75 Almirante Brown ARG 538918
+85 Avellaneda ARG 353046
+93 Berazategui ARG 276916
+96 Bahía Blanca ARG 239810
+132 Brisbane AUS 1291117
+134 Adelaide AUS 978100
+144 Baku AZE 1787800
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+914 Sekondi-Takoradi GHA 103653
+1003 Pemalang IDN 103500
+2663 Río Bravo MEX 103901
+SELECT * FROM City
+WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+(Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+ID Name Country Population
+55 Andorra la Vella AND 21189
+59 Benguela AGO 128300
+65 Abu Dhabi ARE 398695
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+69 Buenos Aires ARG 2982146
+75 Almirante Brown ARG 538918
+85 Avellaneda ARG 353046
+93 Berazategui ARG 276916
+96 Bahía Blanca ARG 239810
+132 Brisbane AUS 1291117
+134 Adelaide AUS 978100
+144 Baku AZE 1787800
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+914 Sekondi-Takoradi GHA 103653
+1003 Pemalang IDN 103500
+2663 Río Bravo MEX 103901
+EXPLAIN
+SELECT * FROM City WHERE (ID < 50) OR (ID BETWEEN 100 AND 110);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 60 Using where
+EXPLAIN
+SELECT * FROM City WHERE (ID < 200) OR (ID BETWEEN 300 AND 600);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 1142 Using where
+EXPLAIN
+SELECT * FROM City WHERE (ID < 600) OR (ID BETWEEN 900 AND 1800);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 2950 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country > 'A' AND Country < 'ARG';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Country Country 3 NULL 19 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'H%' OR Name LIKE 'P%' ;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 394 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'Ha%' OR Name LIKE 'Pa%' ;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 133 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((ID < 50) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 100 AND 110) AND
+(Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY,Population,Country,Name PRIMARY 4 NULL 60 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 900 AND 1800) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name Name,Country,Population 35,3,4 NULL 188 Using sort_union(Name,Country,Population); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((ID < 600) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 300 AND 600) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY,Population,Country,Name PRIMARY 4 NULL 1062 Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((ID < 50) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 100 AND 110) AND
+(Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+31 Heerlen NLD 95052
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+100 Paraná ARG 207041
+102 Posadas ARG 201273
+SELECT * FROM City
+WHERE ((ID < 50) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 100 AND 110) AND
+(Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+31 Heerlen NLD 95052
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+100 Paraná ARG 207041
+102 Posadas ARG 201273
+SELECT * FROM City USE INDEX()
+WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 900 AND 1800) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+55 Andorra la Vella AND 21189
+56 Luanda AGO 2022000
+57 Huambo AGO 163100
+58 Lobito AGO 130000
+59 Benguela AGO 128300
+60 Namibe AGO 118200
+61 South Hill AIA 961
+62 The Valley AIA 595
+64 Dubai ARE 669181
+65 Abu Dhabi ARE 398695
+66 Sharja ARE 320095
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+129 Oranjestad ABW 29034
+191 Hamilton BMU 1200
+528 Hartlepool GBR 92000
+529 Halifax GBR 91069
+914 Sekondi-Takoradi GHA 103653
+943 Palembang IDN 1222764
+950 Padang IDN 534474
+983 Palu IDN 142800
+984 Pasuruan IDN 134019
+991 Pangkal Pinang IDN 124000
+1003 Pemalang IDN 103500
+1004 Klaten IDN 103300
+1007 Palangka Raya IDN 99693
+1020 Padang Sidempuan IDN 91200
+1045 Patna IND 917243
+1114 Panihati IND 275990
+1129 Patiala IND 238368
+1142 Panipat IND 215218
+1159 Parbhani IND 190255
+1231 Pali IND 136842
+1263 Pathankot IND 123930
+1265 Palghat (Palakkad) IND 123289
+1293 Pallavaram IND 111866
+1319 Tellicherry (Thalassery) IND 103579
+1339 Palayankottai IND 97662
+1345 Patan IND 96109
+1436 Marv Dasht IRN 103579
+1468 Palermo ITA 683794
+1478 Padova ITA 211391
+1484 Parma ITA 168717
+1530 Kingston JAM 103962
+1747 Toda JPN 103969
+1748 Tajimi JPN 103171
+1785 Ibb YEM 103300
+SELECT * FROM City
+WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 900 AND 1800) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+55 Andorra la Vella AND 21189
+56 Luanda AGO 2022000
+57 Huambo AGO 163100
+58 Lobito AGO 130000
+59 Benguela AGO 128300
+60 Namibe AGO 118200
+61 South Hill AIA 961
+62 The Valley AIA 595
+64 Dubai ARE 669181
+65 Abu Dhabi ARE 398695
+66 Sharja ARE 320095
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+129 Oranjestad ABW 29034
+191 Hamilton BMU 1200
+528 Hartlepool GBR 92000
+529 Halifax GBR 91069
+914 Sekondi-Takoradi GHA 103653
+943 Palembang IDN 1222764
+950 Padang IDN 534474
+983 Palu IDN 142800
+984 Pasuruan IDN 134019
+991 Pangkal Pinang IDN 124000
+1003 Pemalang IDN 103500
+1004 Klaten IDN 103300
+1007 Palangka Raya IDN 99693
+1020 Padang Sidempuan IDN 91200
+1045 Patna IND 917243
+1114 Panihati IND 275990
+1129 Patiala IND 238368
+1142 Panipat IND 215218
+1159 Parbhani IND 190255
+1231 Pali IND 136842
+1263 Pathankot IND 123930
+1265 Palghat (Palakkad) IND 123289
+1293 Pallavaram IND 111866
+1319 Tellicherry (Thalassery) IND 103579
+1339 Palayankottai IND 97662
+1345 Patan IND 96109
+1436 Marv Dasht IRN 103579
+1468 Palermo ITA 683794
+1478 Padova ITA 211391
+1484 Parma ITA 168717
+1530 Kingston JAM 103962
+1747 Toda JPN 103969
+1748 Tajimi JPN 103171
+1785 Ibb YEM 103300
+SELECT * FROM City USE INDEX ()
+WHERE ((ID < 200) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 300 AND 600) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+55 Andorra la Vella AND 21189
+56 Luanda AGO 2022000
+57 Huambo AGO 163100
+58 Lobito AGO 130000
+59 Benguela AGO 128300
+60 Namibe AGO 118200
+61 South Hill AIA 961
+62 The Valley AIA 595
+64 Dubai ARE 669181
+65 Abu Dhabi ARE 398695
+66 Sharja ARE 320095
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+129 Oranjestad ABW 29034
+191 Hamilton BMU 1200
+339 Passo Fundo BRA 166343
+364 Parnaíba BRA 129756
+372 Paranaguá BRA 126076
+379 Palmas BRA 121919
+386 Patos de Minas BRA 119262
+411 Guaratinguetá BRA 103433
+412 Cachoeirinha BRA 103240
+413 Codó BRA 103153
+424 Passos BRA 98570
+430 Paulo Afonso BRA 97291
+435 Parnamirim BRA 96210
+448 Patos BRA 90519
+451 Palhoça BRA 89465
+517 Oldham GBR 103931
+SELECT * FROM City
+WHERE ((ID < 200) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+OR ((ID BETWEEN 300 AND 600) AND
+(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+ID Name Country Population
+1 Kabul AFG 1780000
+2 Qandahar AFG 237500
+3 Herat AFG 186800
+4 Mazar-e-Sharif AFG 127800
+7 Haag NLD 440900
+16 Haarlem NLD 148772
+25 Haarlemmermeer NLD 110722
+33 Willemstad ANT 2345
+34 Tirana ALB 270000
+55 Andorra la Vella AND 21189
+56 Luanda AGO 2022000
+57 Huambo AGO 163100
+58 Lobito AGO 130000
+59 Benguela AGO 128300
+60 Namibe AGO 118200
+61 South Hill AIA 961
+62 The Valley AIA 595
+64 Dubai ARE 669181
+65 Abu Dhabi ARE 398695
+66 Sharja ARE 320095
+67 al-Ayn ARE 225970
+68 Ajman ARE 114395
+129 Oranjestad ABW 29034
+191 Hamilton BMU 1200
+339 Passo Fundo BRA 166343
+364 Parnaíba BRA 129756
+372 Paranaguá BRA 126076
+379 Palmas BRA 121919
+386 Patos de Minas BRA 119262
+411 Guaratinguetá BRA 103433
+412 Cachoeirinha BRA 103240
+413 Codó BRA 103153
+424 Passos BRA 98570
+430 Paulo Afonso BRA 97291
+435 Parnamirim BRA 96210
+448 Patos BRA 90519
+451 Palhoça BRA 89465
+517 Oldham GBR 103931
+EXPLAIN
+SELECT * FROM City WHERE Population > 101000 AND Population < 102000;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 38 Using where
+EXPLAIN
+SELECT * FROM City WHERE Population > 101000 AND Population < 110000;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 327 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country < 'C';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Country Country 3 NULL 446 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country < 'AGO';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Country Country 3 NULL 5 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name BETWEEN 'P' AND 'T';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ALL Name NULL NULL NULL 4249 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name BETWEEN 'P' AND 'Pb';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 71 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3400 AND 3800;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 944 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'P%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 235 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) AND
+(Country < 'C' OR Name BETWEEN 'P' AND 'T')) OR
+((ID BETWEEN 3400 AND 3800) AND
+(Country < 'AGO' OR Name LIKE 'Pa%'));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name Country,Name,Population 3,35,4 NULL 114 Using sort_union(Country,Name,Population); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 110000) AND
+(Country < 'AGO' OR Name BETWEEN 'P' AND 'Pb')) OR
+((ID BETWEEN 3790 AND 3800) AND
+(Country < 'C' OR Name LIKE 'P%'));
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name Country,Name,PRIMARY 3,35,4 NULL 87 Using sort_union(Country,Name,PRIMARY); Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 102000) AND
+(Country < 'C' OR Name BETWEEN 'P' AND 'T')) OR
+((ID BETWEEN 3400 AND 3800) AND
+(Country < 'AGO' OR Name LIKE 'Pa%'));
+ID Name Country Population
+169 Naogaon BGD 101266
+205 Francistown BWA 101805
+417 Itaituba BRA 101320
+418 Araras BRA 101046
+751 Potchefstroom ZAF 101817
+1752 Sakata JPN 101651
+1851 Saint John´s CAN 101936
+1853 Saanich CAN 101388
+2909 Puno PER 101578
+3463 Pavlograd UKR 127000
+4030 Sandy USA 101853
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) AND
+(Country < 'C' OR Name BETWEEN 'P' AND 'T')) OR
+((ID BETWEEN 3400 AND 3800) AND
+(Country < 'AGO' OR Name LIKE 'Pa%'));
+ID Name Country Population
+169 Naogaon BGD 101266
+205 Francistown BWA 101805
+417 Itaituba BRA 101320
+418 Araras BRA 101046
+751 Potchefstroom ZAF 101817
+1752 Sakata JPN 101651
+1851 Saint John´s CAN 101936
+1853 Saanich CAN 101388
+2909 Puno PER 101578
+3463 Pavlograd UKR 127000
+4030 Sandy USA 101853
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 110000) AND
+(Country < 'AGO' OR Name BETWEEN 'P' AND 'Pb')) OR
+((ID BETWEEN 3790 AND 3800) AND
+(Country < 'C' OR Name LIKE 'P%'));
+ID Name Country Population
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 110000) AND
+(Country < 'AGO' OR Name BETWEEN 'P' AND 'Pb')) OR
+((ID BETWEEN 3790 AND 3800) AND
+(Country < 'C' OR Name LIKE 'P%'));
+ID Name Country Population
+168 Pabna BGD 103277
+189 Parakou BEN 103577
+750 Paarl ZAF 105768
+2865 Pak Pattan PAK 107800
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+CREATE INDEX CountryPopulation ON City(Country,Population);
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'Pas%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 8 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'P%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 235 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 103000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 80 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country='USA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref Country,CountryPopulation Country 3 const 274 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
+AND Country='USA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge Population,Country,Name,CountryPopulation CountryPopulation,Name 7,35 NULL 17 Using sort_union(CountryPopulation,Name); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
+AND Country='USA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref Population,Country,Name,CountryPopulation Country 3 const 274 Using where
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
+AND Country='USA';
+ID Name Country Population
+3943 Pasadena USA 141674
+3953 Pasadena USA 133936
+4023 Gary USA 102746
+4024 Berkeley USA 102743
+4025 Santa Clara USA 102361
+4026 Green Bay USA 102313
+4027 Cape Coral USA 102286
+4028 Arvada USA 102153
+4029 Pueblo USA 102121
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
+AND Country='USA';
+ID Name Country Population
+3943 Pasadena USA 141674
+3953 Pasadena USA 133936
+4023 Gary USA 102746
+4024 Berkeley USA 102743
+4025 Santa Clara USA 102361
+4026 Green Bay USA 102313
+4027 Cape Coral USA 102286
+4028 Arvada USA 102153
+4029 Pueblo USA 102121
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
+AND Country='USA';
+ID Name Country Population
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+3820 Portland USA 529121
+3844 Pittsburgh USA 334563
+3870 Plano USA 222030
+3912 Providence USA 173618
+3930 Pomona USA 149473
+3932 Paterson USA 149222
+3943 Pasadena USA 141674
+3951 Pembroke Pines USA 137427
+3953 Pasadena USA 133936
+3967 Paradise USA 124682
+3986 Palmdale USA 116670
+3996 Peoria USA 112936
+4007 Peoria USA 108364
+4016 Provo USA 105166
+4023 Gary USA 102746
+4024 Berkeley USA 102743
+4025 Santa Clara USA 102361
+4026 Green Bay USA 102313
+4027 Cape Coral USA 102286
+4028 Arvada USA 102153
+4029 Pueblo USA 102121
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+4035 Portsmouth USA 100565
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
+AND Country='USA';
+ID Name Country Population
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+3820 Portland USA 529121
+3844 Pittsburgh USA 334563
+3870 Plano USA 222030
+3912 Providence USA 173618
+3930 Pomona USA 149473
+3932 Paterson USA 149222
+3943 Pasadena USA 141674
+3951 Pembroke Pines USA 137427
+3953 Pasadena USA 133936
+3967 Paradise USA 124682
+3986 Palmdale USA 116670
+3996 Peoria USA 112936
+4007 Peoria USA 108364
+4016 Provo USA 105166
+4023 Gary USA 102746
+4024 Berkeley USA 102743
+4025 Santa Clara USA 102361
+4026 Green Bay USA 102313
+4027 Cape Coral USA 102286
+4028 Arvada USA 102153
+4029 Pueblo USA 102121
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+4035 Portsmouth USA 100565
+CREATE INDEX CountryName ON City(Country,Name);
+EXPLAIN
+SELECT * FROM City WHERE Country='USA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref Country,CountryPopulation,CountryName Country 3 const 274 Using where
+EXPLAIN
+SELECT * FROM City WHERE Country='BRA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref Country,CountryPopulation,CountryName Country 3 const 250 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 4025 AND 4035;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 4028 AND 4032;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 5 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3500 AND 3800;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 300 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 4000 AND 4300;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 80 Using where
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 250 and 260 ;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 102000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 38 Using where
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 103000);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Population Population 4 NULL 80 Using where
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'Pa%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range Name Name 35 NULL 71 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryPopulation,PRIMARY 7,4 NULL 13 Using sort_union(CountryPopulation,PRIMARY); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 103000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4028 AND 4032);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryName,PRIMARY 38,4 NULL 10 Using sort_union(CountryName,PRIMARY); Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 110000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name BETWEEN 'P' AND 'T' OR ID BETWEEN 4000 AND 4300);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City ref PRIMARY,Population,Country,Name,CountryPopulation,CountryName Country 3 const 274 Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4028 AND 4032);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4028 AND 4032);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+ID Name Country Population
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 and Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City index_merge PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryPopulation,CountryName,PRIMARY 7,38,4 NULL 35 Using sort_union(CountryPopulation,CountryName,PRIMARY); Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 and Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
+ID Name Country Population
+250 Mauá BRA 375055
+251 Carapicuíba BRA 357552
+252 Olinda BRA 354732
+253 Campina Grande BRA 352497
+254 São José do Rio Preto BRA 351944
+255 Caxias do Sul BRA 349581
+256 Moji das Cruzes BRA 339194
+257 Diadema BRA 335078
+258 Aparecida de Goiânia BRA 324662
+259 Piracicaba BRA 319104
+260 Cariacica BRA 319033
+285 Paulista BRA 248473
+339 Passo Fundo BRA 166343
+364 Parnaíba BRA 129756
+372 Paranaguá BRA 126076
+379 Palmas BRA 121919
+386 Patos de Minas BRA 119262
+424 Passos BRA 98570
+430 Paulo Afonso BRA 97291
+435 Parnamirim BRA 96210
+448 Patos BRA 90519
+451 Palhoça BRA 89465
+3793 New York USA 8008278
+3794 Los Angeles USA 3694820
+3795 Chicago USA 2896016
+3796 Houston USA 1953631
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+3799 San Diego USA 1223400
+3800 Dallas USA 1188580
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+SELECT * FROM City
+WHERE ((Population > 101000 and Population < 102000) OR
+ID BETWEEN 3790 AND 3800) AND Country='USA'
+ OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
+ID Name Country Population
+285 Paulista BRA 248473
+339 Passo Fundo BRA 166343
+364 Parnaíba BRA 129756
+372 Paranaguá BRA 126076
+379 Palmas BRA 121919
+386 Patos de Minas BRA 119262
+424 Passos BRA 98570
+430 Paulo Afonso BRA 97291
+435 Parnamirim BRA 96210
+448 Patos BRA 90519
+451 Palhoça BRA 89465
+4030 Sandy USA 101853
+4031 Athens-Clarke County USA 101489
+4032 Cambridge USA 101355
+250 Mauá BRA 375055
+251 Carapicuíba BRA 357552
+252 Olinda BRA 354732
+253 Campina Grande BRA 352497
+254 São José do Rio Preto BRA 351944
+255 Caxias do Sul BRA 349581
+256 Moji das Cruzes BRA 339194
+257 Diadema BRA 335078
+258 Aparecida de Goiânia BRA 324662
+259 Piracicaba BRA 319104
+260 Cariacica BRA 319033
+3793 New York USA 8008278
+3794 Los Angeles USA 3694820
+3795 Chicago USA 2896016
+3796 Houston USA 1953631
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+3799 San Diego USA 1223400
+3800 Dallas USA 1188580
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY,Population,Country,Name,CountryPopulation,CountryName CountryName 38 NULL 18 Using where
+EXPLAIN
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pho%' OR ID BETWEEN 4000 AND 4300);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE City range PRIMARY,Population,Country,Name,CountryPopulation,CountryName Name 35 NULL 1 Using where
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
+ID Name Country Population
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
+ID Name Country Population
+3797 Philadelphia USA 1517550
+3798 Phoenix USA 1321045
+SELECT * FROM City USE INDEX ()
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pho%' OR ID BETWEEN 4000 AND 4300);
+ID Name Country Population
+3798 Phoenix USA 1321045
+SELECT * FROM City
+WHERE ((Population > 101000 AND Population < 11000) OR
+ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pho%' OR ID BETWEEN 4000 AND 4300);
+ID Name Country Population
+3798 Phoenix USA 1321045
+DROP DATABASE world;
+use test;
+CREATE TABLE t1 (
+id int(10) unsigned NOT NULL auto_increment,
+account_id int(10) unsigned NOT NULL,
+first_name varchar(50) default NULL,
+middle_name varchar(50) default NULL,
+last_name varchar(100) default NULL,
+home_address_1 varchar(150) default NULL,
+home_city varchar(75) default NULL,
+home_state char(2) default NULL,
+home_postal_code varchar(50) default NULL,
+home_county varchar(75) default NULL,
+home_country char(3) default NULL,
+work_address_1 varchar(150) default NULL,
+work_city varchar(75) default NULL,
+work_state char(2) default NULL,
+work_postal_code varchar(50) default NULL,
+work_county varchar(75) default NULL,
+work_country char(3) default NULL,
+login varchar(50) NOT NULL,
+PRIMARY KEY (id),
+KEY login (login,account_id),
+KEY account_id (account_id),
+KEY user_home_country_indx (home_country),
+KEY user_work_country_indx (work_country),
+KEY user_home_state_indx (home_state),
+KEY user_work_state_indx (work_state),
+KEY user_home_city_indx (home_city),
+KEY user_work_city_indx (work_city),
+KEY user_first_name_indx (first_name),
+KEY user_last_name_indx (last_name)
+);
+insert into t1(account_id, login, home_state, work_state) values
+(1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia'),
+(1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia');
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+select 1, 'pw', 'ak', 'ak' from t1;
+analyze table t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+select count(*) from t1 where account_id = 1;
+count(*)
+3072
+select * from t1
+where (home_state = 'ia' or work_state='ia') and account_id = 1;
+id account_id first_name middle_name last_name home_address_1 home_city home_state home_postal_code home_county home_country work_address_1 work_city work_state work_postal_code work_county work_country login
+1 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+2 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+3 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+4 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+5 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+6 1 NULL NULL NULL NULL NULL ia NULL NULL NULL NULL NULL ia NULL NULL NULL pw
+explain
+select * from t1
+where (home_state = 'ia' or work_state='ia') and account_id = 1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge account_id,user_home_state_indx,user_work_state_indx user_home_state_indx,user_work_state_indx 3,3 NULL 10 Using union(user_home_state_indx,user_work_state_indx); Using where
+drop table t1;
+CREATE TABLE t1 (
+c1 int(11) NOT NULL auto_increment,
+c2 decimal(10,0) default NULL,
+c3 decimal(10,0) default NULL,
+c4 decimal(10,0) default NULL,
+c5 decimal(10,0) default NULL,
+cp decimal(1,0) default NULL,
+ce decimal(10,0) default NULL,
+cdata char(20),
+PRIMARY KEY (c1),
+KEY k1 (c2,c3,cp,ce),
+KEY k2 (c4,c5,cp,ce)
+);
+insert into t1 (c2, c3, c4, c5, cp) values(1,1,1,1,1);
+insert into t1 (c2, c3, c4, c5, cp) values(2,1,1,1,4);
+insert into t1 (c2, c3, c4, c5, cp) values(2,1,2,1,1);
+insert into t1 (c2, c3, c4, c5, cp) values(2,1,3,1,4);
+insert into t1 (c2, c3, c4, c5, cp) values(3,1,4,1,4);
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+select c2, c3, c4, c5, cp from t1 where cp = 4;
+analyze table t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+explain
+select * from t1 where (c2=1 and c3=1) or (c4=2 and c5=1);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2 k1,k2 12,12 NULL 2 Using sort_union(k1,k2); Using where
+explain
+select * from t1
+where (c2=1 and c3=1 and cp=1) or (c4=2 and c5=1 and cp=1);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2 k1,k2 14,14 NULL 2 Using sort_union(k1,k2); Using where
+explain
+select * from t1
+where ((c2=1 and c3=1) or (c4=2 and c5=1)) and cp=1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2 k1,k2 14,14 NULL 2 Using sort_union(k1,k2); Using where
+select * from t1
+where (c2=1 and c3=1 and cp=1) or (c4=2 and c5=1 and cp=1);
+c1 c2 c3 c4 c5 cp ce cdata
+1 1 1 1 1 1 NULL NULL
+3 2 1 2 1 1 NULL NULL
+select * from t1
+where ((c2=1 and c3=1) or (c4=2 and c5=1)) and cp=1;
+c1 c2 c3 c4 c5 cp ce cdata
+1 1 1 1 1 1 NULL NULL
+3 2 1 2 1 1 NULL NULL
+drop table t1;
+create table t1 (
+c1 int auto_increment primary key,
+c2 char(20),
+c3 char (20),
+c4 int
+);
+alter table t1 add key k1 (c2);
+alter table t1 add key k2 (c3);
+alter table t1 add key k3 (c4);
+insert into t1 values(null, 'a', 'b', 0);
+insert into t1 values(null, 'c', 'b', 0);
+insert into t1 values(null, 'a', 'd', 0);
+insert into t1 values(null, 'ccc', 'qqq', 0);
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,1 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,2 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,3 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,4 from t1 where c2 != 'a';
+analyze table t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+select count(*) from t1 where (c2='e' OR c3='q');
+count(*)
+0
+select count(*) from t1 where c4 != 0;
+count(*)
+3840
+explain
+select distinct c1 from t1 where (c2='e' OR c3='q');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2 k1,k2 21,21 NULL 2 Using union(k1,k2); Using where
+explain
+select distinct c1 from t1 where (c4!= 0) AND (c2='e' OR c3='q');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge k1,k2,k3 k1,k2 21,21 NULL 2 Using union(k1,k2); Using where
+drop table t1;
+create table t1 (
+id int unsigned auto_increment primary key,
+c1 char(12),
+c2 char(15),
+c3 char(1)
+);
+insert into t1 (c3) values ('1'), ('2');
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+update t1 set c1=lpad(id+1000, 12, ' '), c2=lpad(id+10000, 15, ' ');
+alter table t1 add unique index (c1), add unique index (c2), add index (c3);
+analyze table t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+explain
+select * from t1 where (c1=' 100000' or c2=' 2000000');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge c1,c2 c1,c2 13,16 NULL 2 Using union(c1,c2); Using where
+explain
+select * from t1 where (c1=' 100000' or c2=' 2000000') and c3='2';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge c1,c2,c3 c1,c2 13,16 NULL 2 Using union(c1,c2); Using where
+select * from t1 where (c1=' 100000' or c2=' 2000000');
+id c1 c2 c3
+select * from t1 where (c1=' 100000' or c2=' 2000000') and c3='2';
+id c1 c2 c3
+drop table t1;
+SET SESSION STORAGE_ENGINE=DEFAULT;
=== added file 'mysql-test/t/range_vs_index_merge.test'
--- a/mysql-test/t/range_vs_index_merge.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/range_vs_index_merge.test 2009-10-12 04:59:34 +0000
@@ -0,0 +1,805 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2,t3,t4;
+DROP DATABASE IF EXISTS world;
+--enable_warnings
+
+set names utf8;
+
+CREATE DATABASE world;
+
+use world;
+
+--source include/world_schema.inc
+
+--disable_query_log
+--disable_result_log
+--disable_warnings
+--source include/world.inc
+--enable_warnings
+--enable_result_log
+--enable_query_log
+
+SELECT COUNT(*) FROM Country;
+SELECT COUNT(*) FROM City;
+SELECT COUNT(*) FROM CountryLanguage;
+
+CREATE INDEX Name ON City(Name);
+
+--disable_query_log
+--disable_result_log
+--disable_warnings
+ANALYZE TABLE City;
+--enable_warnings
+--enable_result_log
+--enable_query_log
+
+# The following 4 queries are added for code coverage
+
+EXPLAIN
+SELECT * FROM City
+ WHERE (Population >= 100000 OR Name LIKE 'P%' OR Population < 100000);
+
+EXPLAIN
+SELECT * FROM City
+ WHERE (Population >= 100000 OR Name LIKE 'P%') AND Country='CAN' OR
+ (Population < 100000 OR Name Like 'T%') AND Country='ARG';
+
+EXPLAIN
+SELECT * FROM City
+ WHERE Population < 200000 AND Name LIKE 'P%' AND
+ (Population > 300000 OR Name LIKE 'T%') AND
+ (Population < 100000 OR Name LIKE 'Pa%');
+
+EXPLAIN
+SELECT * FROM City
+ WHERE Population > 100000 AND Name LIKE 'Aba%' OR
+ Country IN ('CAN', 'ARG') AND ID < 3800 OR
+ Country < 'U' AND Name LIKE 'Zhu%' OR
+ ID BETWEEN 3800 AND 3810;
+
+# The output of the next 3 commands tells us about selectivities
+# of the conditions utilized in 2 queries following after them
+
+EXPLAIN
+SELECT * FROM City
+ WHERE (Population > 101000 AND Population < 115000);
+
+EXPLAIN
+SELECT * FROM City
+ WHERE (Population > 101000 AND Population < 103000);
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'));
+
+# The pattern of the WHERE condition used in the following 2 queries is
+# (range(key1) OR range(key2)) AND range(key3)
+# Varying values of the constants in the second conjunct of the condition
+# we can get either a plan with range index scan for key3 or a plan with
+# an index merge retrieval over key2 and key3
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+ AND (Population > 101000 AND Population < 115000);
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+ AND (Population > 101000 AND Population < 103000);
+
+# The following 4 queries check that the plans
+# for the previous 2 plans are valid
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+ AND (Population > 101000 AND Population < 115000);
+
+SELECT * FROM City
+ WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+ AND (Population > 101000 AND Population < 115000);
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+ AND (Population > 101000 AND Population < 103000);
+
+SELECT * FROM City
+ WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'F'))
+ AND (Population > 101000 AND Population < 103000);
+
+# The output of the next 7 commands tells us about selectivities
+# of the conditions utilized in 4 queries following after them
+
+EXPLAIN
+SELECT * FROM City WHERE (Name < 'Ac');
+EXPLAIN
+SELECT * FROM City WHERE (Name < 'C');
+EXPLAIN
+SELECT * FROM City WHERE (Country > 'A' AND Country < 'B');
+EXPLAIN
+SELECT * FROM City WHERE (Name BETWEEN 'P' AND 'Pb');
+EXPLAIN
+SELECT * FROM City WHERE (Name BETWEEN 'P' AND 'T');
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 110000);
+EXPLAIN
+SELECT * FROM City WHERE (Population > 103000 AND Population < 104000);
+
+# The pattern of the WHERE condition used in the following 4 queries is
+# (range1(key1) AND range(key2)) OR (range2(key1) AND range(key3)
+# Varying values of the constants in the range conjuncts of the condition
+# we can get:
+# 1. a plan with range index over key1
+# index merge retrievals over:
+# 2. key1 and key3
+# 3. key2 and key1
+# 4. key2 and key3
+
+EXPLAIN
+SELECT * FROM City
+ WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+
+EXPLAIN
+SELECT * FROM City
+ WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+
+EXPLAIN
+SELECT * FROM City
+ WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+
+EXPLAIN
+SELECT * FROM City
+ WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+
+# The following 8 queries check that the plans
+# for the previous 4 plans are valid
+
+SELECT * FROM City USE INDEX ()
+ WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+
+SELECT * FROM City
+ WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+
+SELECT * FROM City USE INDEX ()
+ WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+
+SELECT * FROM City
+ WHERE (Name < 'Ac' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+
+SELECT * FROM City USE INDEX ()
+ WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+
+SELECT * FROM City
+ WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'Pb' AND (Population > 101000 AND Population < 110000));
+
+SELECT * FROM City USE INDEX ()
+ WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+
+SELECT * FROM City
+ WHERE (Name < 'C' AND (Country > 'A' AND Country < 'B')) OR
+ (Name BETWEEN 'P' AND 'T' AND (Population > 103000 AND Population < 104000));
+
+
+# The output of the next 6 commands tells us about selectivities
+# of the conditions utilized in 3 queries following after them
+
+EXPLAIN
+SELECT * FROM City WHERE (ID < 50) OR (ID BETWEEN 100 AND 110);
+EXPLAIN
+SELECT * FROM City WHERE (ID < 200) OR (ID BETWEEN 300 AND 600);
+EXPLAIN
+SELECT * FROM City WHERE (ID < 600) OR (ID BETWEEN 900 AND 1800);
+EXPLAIN
+SELECT * FROM City WHERE Country > 'A' AND Country < 'ARG';
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'H%' OR Name LIKE 'P%' ;
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'Ha%' OR Name LIKE 'Pa%' ;
+
+# The pattern of the WHERE condition used in the following 3 queries is
+# (range1(key1) AND (range1(key2) OR range(key3)) OR
+# (range2(key1) AND (range2(key2) OR range(key4))
+# Varying values of the constants in the range predicates of the condition
+# we can get:
+# 1. a plan with range index over key1
+# 2. an index merge retrieval over key1, key2 and key3
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((ID < 50) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
+ OR ((ID BETWEEN 100 AND 110) AND
+ (Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+ OR ((ID BETWEEN 900 AND 1800) AND
+ (Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((ID < 600) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+ OR ((ID BETWEEN 300 AND 600) AND
+ (Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+
+
+# The following 6 queries check that the plans
+# for the previous 3 plans are valid
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((ID < 50) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
+ OR ((ID BETWEEN 100 AND 110) AND
+ (Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
+
+SELECT * FROM City
+ WHERE ((ID < 50) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
+ OR ((ID BETWEEN 100 AND 110) AND
+ (Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
+
+SELECT * FROM City USE INDEX()
+ WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+ OR ((ID BETWEEN 900 AND 1800) AND
+ (Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+
+SELECT * FROM City
+ WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+ OR ((ID BETWEEN 900 AND 1800) AND
+ (Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((ID < 200) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+ OR ((ID BETWEEN 300 AND 600) AND
+ (Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+
+SELECT * FROM City
+ WHERE ((ID < 200) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
+ OR ((ID BETWEEN 300 AND 600) AND
+ (Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
+
+
+# The output of the next 8 commands tells us about selectivities
+# of the conditions utilized in 2 queries following after them
+
+EXPLAIN
+SELECT * FROM City WHERE Population > 101000 AND Population < 102000;
+EXPLAIN
+SELECT * FROM City WHERE Population > 101000 AND Population < 110000;
+EXPLAIN
+SELECT * FROM City WHERE Country < 'C';
+EXPLAIN
+SELECT * FROM City WHERE Country < 'AGO';
+EXPLAIN
+SELECT * FROM City WHERE Name BETWEEN 'P' AND 'T';
+EXPLAIN
+SELECT * FROM City WHERE Name BETWEEN 'P' AND 'Pb';
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3400 AND 3800;
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'P%';
+
+# The pattern of the WHERE condition used in the following 2 queries is
+# (range(key1) AND (range1(key2) OR range1(key3)) OR
+# (range(key4) AND (range2(key2) OR range2(key3))
+# Varying values of the constants in the range predicates of the condition
+# we can get:
+# index merge retrievals over:
+# 1. key1, key2 and key3
+# 2. key4, key2 and key3
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 102000) AND
+ (Country < 'C' OR Name BETWEEN 'P' AND 'T')) OR
+ ((ID BETWEEN 3400 AND 3800) AND
+ (Country < 'AGO' OR Name LIKE 'Pa%'));
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 110000) AND
+ (Country < 'AGO' OR Name BETWEEN 'P' AND 'Pb')) OR
+ ((ID BETWEEN 3790 AND 3800) AND
+ (Country < 'C' OR Name LIKE 'P%'));
+
+# The following 4 queries check that the plans
+# for the previous 2 plans are valid
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 AND Population < 102000) AND
+ (Country < 'C' OR Name BETWEEN 'P' AND 'T')) OR
+ ((ID BETWEEN 3400 AND 3800) AND
+ (Country < 'AGO' OR Name LIKE 'Pa%'));
+
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 102000) AND
+ (Country < 'C' OR Name BETWEEN 'P' AND 'T')) OR
+ ((ID BETWEEN 3400 AND 3800) AND
+ (Country < 'AGO' OR Name LIKE 'Pa%'));
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 AND Population < 110000) AND
+ (Country < 'AGO' OR Name BETWEEN 'P' AND 'Pb')) OR
+ ((ID BETWEEN 3790 AND 3800) AND
+ (Country < 'C' OR Name LIKE 'P%'));
+
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 110000) AND
+ (Country < 'AGO' OR Name BETWEEN 'P' AND 'Pb')) OR
+ ((ID BETWEEN 3790 AND 3800) AND
+ (Country < 'C' OR Name LIKE 'P%'));
+
+
+CREATE INDEX CountryPopulation ON City(Country,Population);
+
+--disable_query_log
+--disable_result_log
+--disable_warnings
+ANALYZE TABLE City;
+--enable_warnings
+--enable_result_log
+--enable_query_log
+
+# The output of the next 4 commands tells us about selectivities
+# of the conditions utilized in 2 queries following after them
+
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'Pas%';
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'P%';
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 103000);
+EXPLAIN
+SELECT * FROM City WHERE Country='USA';
+
+# The pattern of the WHERE condition used in the following 3 queries is
+# (range(key1_p2) OR (range(key2)) AND key1_p1=c
+# Varying values of the constants in the range predicates of the condition
+# we can get:
+# 1. a plan with range index over key1_p1
+# 2. an index merge retrieval over: key1 and key2
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
+ AND Country='USA';
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
+ AND Country='USA';
+
+# The following 4 queries check that the plans
+# for the previous 2 plans are valid
+
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
+ AND Country='USA';
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'Pas%')
+ AND Country='USA';
+
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
+ AND Country='USA';
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 AND Population < 103000) OR Name LIKE 'P%')
+ AND Country='USA';
+
+
+CREATE INDEX CountryName ON City(Country,Name);
+
+--disable_query_log
+--disable_result_log
+--disable_warnings
+ANALYZE TABLE City;
+--enable_warnings
+--enable_result_log
+--enable_query_log
+
+# The output of the next 11 commands tells us about selectivities
+# of the conditions utilized in 3 queries following after them
+
+EXPLAIN
+SELECT * FROM City WHERE Country='USA';
+EXPLAIN
+SELECT * FROM City WHERE Country='BRA';
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 4025 AND 4035;
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 4028 AND 4032;
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 3500 AND 3800;
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 4000 AND 4300;
+EXPLAIN
+SELECT * FROM City WHERE ID BETWEEN 250 and 260 ;
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 102000);
+EXPLAIN
+SELECT * FROM City WHERE (Population > 101000 AND Population < 103000);
+EXPLAIN
+SELECT * FROM City WHERE Name LIKE 'Pa%';
+
+# The pattern of the WHERE condition used in the following 3 queries is
+# (range(key1_p2) OR range1(key3)) AND
+# range(key1|2_p1=c) AND
+# (range(key2_p2) OR range2(key3))
+# Varying values of the constants in the range conjuncts of the condition
+# we can get:
+# 1. a plan with range index over key1|2_p1
+# index merge retrievals over:
+# 2. key1 and key3
+# 3. key2 and key3
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 103000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4028 AND 4032);
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 110000) OR
+ ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name BETWEEN 'P' AND 'T' OR ID BETWEEN 4000 AND 4300);
+
+# The following 6 queries check that the plans
+# for the previous 3 plans are valid
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 AND Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 AND Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4028 AND 4032);
+
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4028 AND 4032);
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 AND Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pa%' OR ID BETWEEN 4025 AND 4035);
+
+
+# The pattern of the WHERE condition used in the following query is
+# (range(key1_p2) OR range1(key3)) AND range(key1|2_p1=c1) AND
+# (range(key2_p2) OR range1(key3)) AND range(key1|2_p1=c2)
+# We get an index merge retrieval over key1, key2 and key3 for it
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 and Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
+
+# The following 2 queries check that the plans
+# for the previous plan is valid
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 and Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
+
+SELECT * FROM City
+ WHERE ((Population > 101000 and Population < 102000) OR
+ ID BETWEEN 3790 AND 3800) AND Country='USA'
+ OR (Name LIKE 'Pa%' OR ID BETWEEN 250 AND 260) AND Country='BRA';
+
+# The pattern of the WHERE condition used in the following query is
+# (impossible_range(key1_p2) OR range1(key3)) AND
+# range(key1|2_p1=c1) AND
+# (range(key2_p2) OR range2(key3))
+# where range1(key3) and range2(key3) are disjoint
+# Varying values of the constant in range predicates we get plans:
+# 1. with an index scan over key2
+# 2. with an index scan over key4=key2_p2
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 11000) OR
+ ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
+
+EXPLAIN
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 11000) OR
+ ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pho%' OR ID BETWEEN 4000 AND 4300);
+
+# The following 4 queries check that the plans
+# for the previous 2 plans are valid
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 AND Population < 11000) OR
+ ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
+
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 11000) OR
+ ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'P%' OR ID BETWEEN 4000 AND 4300);
+
+SELECT * FROM City USE INDEX ()
+ WHERE ((Population > 101000 AND Population < 11000) OR
+ ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pho%' OR ID BETWEEN 4000 AND 4300);
+
+SELECT * FROM City
+ WHERE ((Population > 101000 AND Population < 11000) OR
+ ID BETWEEN 3500 AND 3800) AND Country='USA'
+ AND (Name LIKE 'Pho%' OR ID BETWEEN 4000 AND 4300);
+
+
+DROP DATABASE world;
+
+use test;
+
+#
+# Bug #17259: a bad range scan and a good index merge plan
+#
+
+CREATE TABLE t1 (
+ id int(10) unsigned NOT NULL auto_increment,
+ account_id int(10) unsigned NOT NULL,
+ first_name varchar(50) default NULL,
+ middle_name varchar(50) default NULL,
+ last_name varchar(100) default NULL,
+ home_address_1 varchar(150) default NULL,
+ home_city varchar(75) default NULL,
+ home_state char(2) default NULL,
+ home_postal_code varchar(50) default NULL,
+ home_county varchar(75) default NULL,
+ home_country char(3) default NULL,
+ work_address_1 varchar(150) default NULL,
+ work_city varchar(75) default NULL,
+ work_state char(2) default NULL,
+ work_postal_code varchar(50) default NULL,
+ work_county varchar(75) default NULL,
+ work_country char(3) default NULL,
+ login varchar(50) NOT NULL,
+ PRIMARY KEY (id),
+ KEY login (login,account_id),
+ KEY account_id (account_id),
+ KEY user_home_country_indx (home_country),
+ KEY user_work_country_indx (work_country),
+ KEY user_home_state_indx (home_state),
+ KEY user_work_state_indx (work_state),
+ KEY user_home_city_indx (home_city),
+ KEY user_work_city_indx (work_city),
+ KEY user_first_name_indx (first_name),
+ KEY user_last_name_indx (last_name)
+);
+
+insert into t1(account_id, login, home_state, work_state) values
+ (1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia'),
+ (1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia'), (1, 'pw', 'ia', 'ia');
+insert into t1(account_id, login, home_state, work_state)
+ select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+ select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+ select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+ select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+ select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+ select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+ select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+ select 1, 'pw', 'ak', 'ak' from t1;
+insert into t1(account_id, login, home_state, work_state)
+ select 1, 'pw', 'ak', 'ak' from t1;
+
+analyze table t1;
+
+select count(*) from t1 where account_id = 1;
+
+select * from t1
+ where (home_state = 'ia' or work_state='ia') and account_id = 1;
+
+explain
+select * from t1
+ where (home_state = 'ia' or work_state='ia') and account_id = 1;
+
+drop table t1;
+
+#
+# Bug #17673: no index merge plan if the condition for the last used
+# index component is factored out of the or formula
+#
+
+CREATE TABLE t1 (
+ c1 int(11) NOT NULL auto_increment,
+ c2 decimal(10,0) default NULL,
+ c3 decimal(10,0) default NULL,
+ c4 decimal(10,0) default NULL,
+ c5 decimal(10,0) default NULL,
+ cp decimal(1,0) default NULL,
+ ce decimal(10,0) default NULL,
+ cdata char(20),
+ PRIMARY KEY (c1),
+ KEY k1 (c2,c3,cp,ce),
+ KEY k2 (c4,c5,cp,ce)
+);
+
+insert into t1 (c2, c3, c4, c5, cp) values(1,1,1,1,1);
+insert into t1 (c2, c3, c4, c5, cp) values(2,1,1,1,4);
+insert into t1 (c2, c3, c4, c5, cp) values(2,1,2,1,1);
+insert into t1 (c2, c3, c4, c5, cp) values(2,1,3,1,4);
+insert into t1 (c2, c3, c4, c5, cp) values(3,1,4,1,4);
+
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+insert into t1 (c2, c3, c4, c5, cp)
+ select c2, c3, c4, c5, cp from t1 where cp = 4;
+
+analyze table t1;
+
+explain
+ select * from t1 where (c2=1 and c3=1) or (c4=2 and c5=1);
+
+explain
+ select * from t1
+ where (c2=1 and c3=1 and cp=1) or (c4=2 and c5=1 and cp=1);
+
+explain
+ select * from t1
+ where ((c2=1 and c3=1) or (c4=2 and c5=1)) and cp=1;
+
+select * from t1
+ where (c2=1 and c3=1 and cp=1) or (c4=2 and c5=1 and cp=1);
+
+select * from t1
+ where ((c2=1 and c3=1) or (c4=2 and c5=1)) and cp=1;
+
+drop table t1;
+
+#
+# Bug #23322: a bad range scan and a good index merge plan
+#
+
+create table t1 (
+ c1 int auto_increment primary key,
+ c2 char(20),
+ c3 char (20),
+ c4 int
+);
+alter table t1 add key k1 (c2);
+alter table t1 add key k2 (c3);
+alter table t1 add key k3 (c4);
+
+insert into t1 values(null, 'a', 'b', 0);
+insert into t1 values(null, 'c', 'b', 0);
+insert into t1 values(null, 'a', 'd', 0);
+insert into t1 values(null, 'ccc', 'qqq', 0);
+
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+insert into t1 (c2,c3) select c2,c3 from t1 where c2 != 'a';
+
+insert into t1 (c2,c3,c4) select c2,c3,1 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,2 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,3 from t1 where c2 != 'a';
+insert into t1 (c2,c3,c4) select c2,c3,4 from t1 where c2 != 'a';
+
+analyze table t1;
+
+select count(*) from t1 where (c2='e' OR c3='q');
+select count(*) from t1 where c4 != 0;
+
+explain
+ select distinct c1 from t1 where (c2='e' OR c3='q');
+
+explain
+ select distinct c1 from t1 where (c4!= 0) AND (c2='e' OR c3='q');
+
+drop table t1;
+
+#
+# Bug #30151: a bad range scan and a good index merge plan
+#
+
+create table t1 (
+ id int unsigned auto_increment primary key,
+ c1 char(12),
+ c2 char(15),
+ c3 char(1)
+);
+
+insert into t1 (c3) values ('1'), ('2');
+
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+insert into t1 (c3) select c3 from t1;
+
+update t1 set c1=lpad(id+1000, 12, ' '), c2=lpad(id+10000, 15, ' ');
+
+alter table t1 add unique index (c1), add unique index (c2), add index (c3);
+
+analyze table t1;
+
+explain
+ select * from t1 where (c1=' 100000' or c2=' 2000000');
+explain
+ select * from t1 where (c1=' 100000' or c2=' 2000000') and c3='2';
+
+select * from t1 where (c1=' 100000' or c2=' 2000000');
+select * from t1 where (c1=' 100000' or c2=' 2000000') and c3='2';
+
+drop table t1;
+
+
+
+
+
=== added file 'mysql-test/t/range_vs_index_merge_innodb.test'
--- a/mysql-test/t/range_vs_index_merge_innodb.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/range_vs_index_merge_innodb.test 2009-10-12 04:59:34 +0000
@@ -0,0 +1,7 @@
+--source include/have_innodb.inc
+
+SET SESSION STORAGE_ENGINE='InnoDB';
+
+--source t/range_vs_index_merge.test
+
+SET SESSION STORAGE_ENGINE=DEFAULT;
=== modified file 'sql/opt_range.cc'
--- a/sql/opt_range.cc 2009-09-09 21:59:28 +0000
+++ b/sql/opt_range.cc 2009-10-12 04:59:34 +0000
@@ -497,6 +497,11 @@ public:
pos->increment_use_count(count);
}
}
+ void incr_refs()
+ {
+ increment_use_count(1);
+ use_count++;
+ }
void free_tree()
{
for (SEL_ARG *pos=first(); pos ; pos=pos->next)
@@ -558,7 +563,100 @@ public:
class SEL_IMERGE;
+#define CLONE_KEY1_MAYBE 1
+#define CLONE_KEY2_MAYBE 2
+#define swap_clone_flag(A) ((A & 1) << 1) | ((A & 2) >> 1)
+
+/*
+ While objects of the class SEL_ARG represent ranges for indexes or
+ index infixes (including ranges for index prefixes and index suffixes),
+ objects of the class SEL_TREE represent AND/OR formulas of such ranges.
+ Currently an AND/OR formula represented by a SEL_TREE object can have
+ at most three levels:
+
+ <SEL_TREE formula> ::=
+ [ <SEL_RANGE_TREE formula> AND ]
+ [ <SEL_IMERGE formula> [ AND <SEL_IMERGE formula> ...] ]
+
+ <SEL_RANGE_TREE formula> ::=
+ <SEL_ARG formula> [ AND <SEL_ARG_formula> ... ]
+
+ <SEL_IMERGE formula> ::=
+ <SEL_RANGE_TREE formula> [ OR <SEL_RANGE_TREE formula> ]
+
+ As we can see from the above definitions:
+ - SEL_RANGE_TREE formula is a conjunction of SEL_ARG formulas
+ - SEL_IMERGE formula is a disjunction of SEL_RANGE_TREE formulas
+ - SEL_TREE formula is a conjunction of a SEL_RANGE_TREE formula
+ and SEL_IMERGE formulas.
+ It's required above that a SEL_TREE formula has at least one conjunct.
+
+ Usually we will consider normalized SEL_RANGE_TREE formulas where we use
+ TRUE as conjunct members for those indexes whose SEL_ARG trees are empty.
+
+ We will call an SEL_TREE object simply 'tree'.
+ The part of a tree that represents SEL_RANGE_TREE formula is called
+ 'range part' of the tree while the remaining part is called 'imerge part'.
+ If a tree contains only a range part then we call such a tree 'range tree'.
+ Components of a range tree that represent SEL_ARG formulas are called ranges.
+ If a tree does not contain any range part we call such a tree 'imerge tree'.
+ Components of the imerge part of a tree that represent SEL_IMERGE formula
+ are called imerges.
+
+ Usually we'll designate:
+ SEL_TREE formulas by T_1,...,T_k
+ SEL_ARG formulas by R_1,...,R_k
+ SEL_RANGE_TREE formulas by RT_1,...,RT_k
+ SEL_IMERGE formulas by M_1,...,M_k
+ Accordingly we'll use:
+ t_1,...,t_k - to designate trees representing T_1,...,T_k
+ r_1,...,r_k - to designate ranges representing R_1,...,R_k
+ rt_1,...,r_tk - to designate range trees representing RT_1,...,RT_k
+ m_1,...,m_k - to designate imerges representing M_1,...,M_k
+
+ SEL_TREE objects are usually built from WHERE conditions or
+ ON expressions.
+ A SEL_TREE object always represents an inference of the condition it is
+ built from. Therefore, if a row satisfies a SEL_TREE formula it also
+ satisfies the condition it is built from.
+
+ The following transformations of tree t representing SEL_TREE formula T
+ yield a new tree t1 thar represents an inference of T: T=>T1.
+ (1) remove any of SEL_ARG tree from the range part of t
+ (2) remove any imerge from the tree t
+ (3) remove any of SEL_ARG tree from any range tree contained
+ in any imerge of tree
+
+ Since the basic blocks of any SEL_TREE objects are ranges, SEL_TREE
+ objects in many cases can be effectively used to filter out a big part
+ of table rows that do not satisfy WHERE/IN conditions utilizing
+ only single or multiple range index scans.
+
+ A single range index scan is constructed for a range tree that contains
+ only one SEL_ARG object for an index or an index prefix.
+ An index intersection scan can be constructed for a range tree
+ that contains several SEL_ARG objects. Currently index intersection
+ scans are constructed only for single-point ranges.
+ An index merge scan is constructed for a imerge tree that contains only
+ one imerge. If range trees of this imerge contain only single-point merges
+ than a union of index intersections can be built.
+
+ Usually the tree built by the range optimizer for a query table contains
+ more than one range in the range part, and additionally may contain some
+ imerges in the imerge part. The range optimizer evaluates all of them one
+ by one and chooses the range or the imerge that provides the cheapest
+ single or multiple range index scan of the table. According to rules
+ (1)-(3) this scan always filter out only those rows that do not satisfy
+ the query conditions.
+
+ For any condition the SEL_TREE object for it is built in a bottom up
+ manner starting from the range trees for the predicates. The tree_and
+ function builds a tree for any conjunction of formulas from the trees
+ for its conjuncts. The tree_or function builds a tree for any disjunction
+ of formulas from the trees for its disjuncts.
+*/
+
class SEL_TREE :public Sql_alloc
{
public:
@@ -574,7 +672,7 @@ public:
keys_map.clear_all();
bzero((char*) keys,sizeof(keys));
}
- SEL_TREE(SEL_TREE *arg, RANGE_OPT_PARAM *param);
+ SEL_TREE(SEL_TREE *arg, bool without_merges, RANGE_OPT_PARAM *param);
/*
Note: there may exist SEL_TREE objects with sel_tree->type=KEY and
keys[i]=0 for all i. (SergeyP: it is not clear whether there is any
@@ -597,6 +695,9 @@ public:
struct st_ror_scan_info **ror_scans; /* list of ROR key scans */
struct st_ror_scan_info **ror_scans_end; /* last ROR scan */
/* Note that #records for each key scan is stored in table->quick_rows */
+
+ bool without_ranges() { return keys_map.is_clear_all(); }
+ bool without_imerges() { return merges.is_empty(); }
};
class RANGE_OPT_PARAM
@@ -642,6 +743,7 @@ class PARAM : public RANGE_OPT_PARAM
{
public:
KEY_PART *key[MAX_KEY]; /* First key parts of keys used in the query */
+ ha_rows quick_rows[MAX_KEY];
longlong baseflag;
uint max_key_part, range_count;
@@ -669,7 +771,7 @@ class TABLE_READ_PLAN;
class TRP_RANGE;
class TRP_ROR_INTERSECT;
class TRP_ROR_UNION;
- class TRP_ROR_INDEX_MERGE;
+ class TRP_INDEX_MERGE;
class TRP_GROUP_MIN_MAX;
struct st_ror_scan_info;
@@ -708,6 +810,10 @@ static
TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
double read_time);
static
+TABLE_READ_PLAN *merge_same_index_scans(PARAM *param, SEL_IMERGE *imerge,
+ TRP_INDEX_MERGE *imerge_trp,
+ double read_time);
+static
TRP_GROUP_MIN_MAX *get_best_group_min_max(PARAM *param, SEL_TREE *tree);
static double get_index_only_read_time(const PARAM* param, ha_rows records,
int keynr);
@@ -721,11 +827,15 @@ static void print_ror_scans_arr(TABLE *t
static void print_quick(QUICK_SELECT_I *quick, const key_map *needed_reg);
#endif
-static SEL_TREE *tree_and(RANGE_OPT_PARAM *param,SEL_TREE *tree1,SEL_TREE *tree2);
-static SEL_TREE *tree_or(RANGE_OPT_PARAM *param,SEL_TREE *tree1,SEL_TREE *tree2);
+static SEL_TREE *tree_and(RANGE_OPT_PARAM *param,
+ SEL_TREE *tree1, SEL_TREE *tree2);
+static SEL_TREE *tree_or(RANGE_OPT_PARAM *param,
+ SEL_TREE *tree1,SEL_TREE *tree2);
static SEL_ARG *sel_add(SEL_ARG *key1,SEL_ARG *key2);
-static SEL_ARG *key_or(RANGE_OPT_PARAM *param, SEL_ARG *key1, SEL_ARG *key2);
-static SEL_ARG *key_and(RANGE_OPT_PARAM *param, SEL_ARG *key1, SEL_ARG *key2,
+static SEL_ARG *key_or(RANGE_OPT_PARAM *param,
+ SEL_ARG *key1, SEL_ARG *key2);
+static SEL_ARG *key_and(RANGE_OPT_PARAM *param,
+ SEL_ARG *key1, SEL_ARG *key2,
uint clone_flag);
static bool get_range(SEL_ARG **e1,SEL_ARG **e2,SEL_ARG *root1);
bool get_quick_keys(PARAM *param,QUICK_RANGE_SELECT *quick,KEY_PART *key,
@@ -736,22 +846,24 @@ static bool eq_tree(SEL_ARG* a,SEL_ARG *
static SEL_ARG null_element(SEL_ARG::IMPOSSIBLE);
static bool null_part_in_key(KEY_PART *key_part, const uchar *key,
uint length);
-bool sel_trees_can_be_ored(SEL_TREE *tree1, SEL_TREE *tree2, RANGE_OPT_PARAM* param);
+static bool sel_trees_have_common_keys(RANGE_OPT_PARAM* param,
+ SEL_TREE *tree1, SEL_TREE *tree2,
+ key_map *common_keys);
+static void eliminate_single_tree_imerges(RANGE_OPT_PARAM *param,
+ SEL_TREE *tree);
+
+static bool sel_trees_can_be_ored(RANGE_OPT_PARAM* param,
+ SEL_TREE *tree1, SEL_TREE *tree2,
+ key_map *common_keys);
+static bool sel_trees_must_be_ored(RANGE_OPT_PARAM* param,
+ SEL_TREE *tree1, SEL_TREE *tree2,
+ key_map common_keys);
+static int and_range_trees(RANGE_OPT_PARAM *param,
+ SEL_TREE *tree1, SEL_TREE *tree2,
+ SEL_TREE *result);
+static bool remove_nonrange_trees(RANGE_OPT_PARAM *param, SEL_TREE *tree);
-/*
- SEL_IMERGE is a list of possible ways to do index merge, i.e. it is
- a condition in the following form:
- (t_1||t_2||...||t_N) && (next)
-
- where all t_i are SEL_TREEs, next is another SEL_IMERGE and no pair
- (t_i,t_j) contains SEL_ARGS for the same index.
-
- SEL_TREE contained in SEL_IMERGE always has merges=NULL.
-
- This class relies on memory manager to do the cleanup.
-*/
-
class SEL_IMERGE : public Sql_alloc
{
enum { PREALLOCED_TREES= 10};
@@ -768,23 +880,37 @@ public:
trees_next(trees),
trees_end(trees + PREALLOCED_TREES)
{}
- SEL_IMERGE (SEL_IMERGE *arg, RANGE_OPT_PARAM *param);
+ SEL_IMERGE (SEL_IMERGE *arg, uint cnt, RANGE_OPT_PARAM *param);
int or_sel_tree(RANGE_OPT_PARAM *param, SEL_TREE *tree);
- int or_sel_tree_with_checks(RANGE_OPT_PARAM *param, SEL_TREE *new_tree);
- int or_sel_imerge_with_checks(RANGE_OPT_PARAM *param, SEL_IMERGE* imerge);
+ bool have_common_keys(RANGE_OPT_PARAM *param, SEL_TREE *tree);
+ int and_sel_tree(RANGE_OPT_PARAM *param, SEL_TREE *tree,
+ SEL_IMERGE *new_imerge);
+ int or_sel_tree_with_checks(RANGE_OPT_PARAM *param,
+ SEL_TREE *new_tree,
+ bool is_first_check_pass,
+ bool *is_last_check_pass);
+ int or_sel_imerge_with_checks(RANGE_OPT_PARAM *param,
+ SEL_IMERGE* imerge,
+ bool is_first_check_pass,
+ bool *is_last_check_pass);
};
/*
- Add SEL_TREE to this index_merge without any checks,
+ Add a range tree to the range trees of this imerge
- NOTES
- This function implements the following:
- (x_1||...||x_N) || t = (x_1||...||x_N||t), where x_i, t are SEL_TREEs
+ SYNOPSIS
+ or_sel_tree()
+ param Context info for the operation
+ tree SEL_TREE to add to this imerge
+
+ DESCRIPTION
+ The function just adds the range tree 'tree' to the range trees
+ of this imerge.
RETURN
- 0 - OK
- -1 - Out of memory.
+ 0 if the operation is success
+ -1 if the function runs out memory
*/
int SEL_IMERGE::or_sel_tree(RANGE_OPT_PARAM *param, SEL_TREE *tree)
@@ -809,96 +935,294 @@ int SEL_IMERGE::or_sel_tree(RANGE_OPT_PA
/*
- Perform OR operation on this SEL_IMERGE and supplied SEL_TREE new_tree,
- combining new_tree with one of the trees in this SEL_IMERGE if they both
- have SEL_ARGs for the same key.
+ Check if any of the range trees of this imerge intersects with a given tree
SYNOPSIS
- or_sel_tree_with_checks()
- param PARAM from SQL_SELECT::test_quick_select
- new_tree SEL_TREE with type KEY or KEY_SMALLER.
+ have_common_keys()
+ param Context info for the function
+ tree SEL_TREE intersection with the imerge range trees is checked for
- NOTES
- This does the following:
- (t_1||...||t_k)||new_tree =
- either
- = (t_1||...||t_k||new_tree)
- or
- = (t_1||....||(t_j|| new_tree)||...||t_k),
+ DESCRIPTION
+ The function checks whether there is any range tree rt_i in this imerge
+ such that there are some indexes for which ranges are defined in both
+ rt_i and the range part of the SEL_TREE tree.
+ To check this the function calls the function sel_trees_have_common_keys.
- where t_i, y are SEL_TREEs.
- new_tree is combined with the first t_j it has a SEL_ARG on common
- key with. As a consequence of this, choice of keys to do index_merge
- read may depend on the order of conditions in WHERE part of the query.
+ RETURN
+ TRUE if there are such range trees in this imerge
+ FALSE otherwise
+*/
+
+bool SEL_IMERGE::have_common_keys(RANGE_OPT_PARAM *param, SEL_TREE *tree)
+{
+ for (SEL_TREE** or_tree= trees, **bound= trees_next;
+ or_tree != bound; or_tree++)
+ {
+ key_map common_keys;
+ if (sel_trees_have_common_keys(param, *or_tree, tree, &common_keys))
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+/*
+ Perform AND operation for this imerge and the range part of a tree
+
+ SYNOPSIS
+ and_sel_tree()
+ param Context info for the operation
+ tree SEL_TREE for the second operand of the operation
+ new_imerge OUT imerge for the result of the operation
+ DESCRIPTION
+ This function performs AND operation for this imerge m and the
+ range part of the SEL_TREE tree rt. In other words the function
+ pushes rt into this imerge. The resulting imerge is returned in
+ the parameter new_imerge.
+ If this imerge m represent the formula
+ RT_1 OR ... OR RT_k
+ then the resulting imerge of the function represents the formula
+ (RT_1 AND RT) OR ... (RT_k AND RT)
+ The function calls the function and_range_trees to construct the
+ range tree representing (RT_i AND RT).
+
+ NOTE
+ The function may return an empty imerge without any range trees
+
RETURN
- 0 OK
- 1 One of the trees was combined with new_tree to SEL_TREE::ALWAYS,
- and (*this) should be discarded.
- -1 An error occurred.
+ 0 if the operation is a success
+ -1 otherwise: there is not enough memory to perform the operation
*/
-int SEL_IMERGE::or_sel_tree_with_checks(RANGE_OPT_PARAM *param, SEL_TREE *new_tree)
+int SEL_IMERGE::and_sel_tree(RANGE_OPT_PARAM *param, SEL_TREE *tree,
+ SEL_IMERGE *new_imerge)
{
- for (SEL_TREE** tree = trees;
- tree != trees_next;
- tree++)
+ for (SEL_TREE** or_tree= trees; or_tree != trees_next; or_tree++)
{
- if (sel_trees_can_be_ored(*tree, new_tree, param))
+ SEL_TREE *result= 0;
+ key_map result_keys;
+ if (!(result= new SEL_TREE()))
+ return (-1);
+ if (!and_range_trees(param, *or_tree, tree, result))
{
- *tree = tree_or(param, *tree, new_tree);
- if (!*tree)
- return 1;
- if (((*tree)->type == SEL_TREE::MAYBE) ||
- ((*tree)->type == SEL_TREE::ALWAYS))
+ if (new_imerge->or_sel_tree(param, result))
+ return (-1);
+ }
+ }
+ return 0;
+}
+
+
+/*
+ Perform OR operation on this imerge and the range part of a tree
+
+ SYNOPSIS
+ or_sel_tree_with_checks()
+ param Context info for the operation
+ tree SEL_TREE whose range part is to be ored
+ is_first_check_pass <=> the first call of the function for this imerge
+ is_last_check_pass OUT <=> no more calls of the function for this imerge
+
+ DESCRIPTION
+ The functions performs OR operation on this imerge m and the range part
+ of the SEL_TREE tree rt. It always replaces this imerge with the result
+ of the operation.
+
+ The operation can be performed in two different modes: with
+ is_first_check_pass==TRUE and is_first_check_pass==FALSE, transforming
+ this imerge differently.
+
+ Given this imerge represents the formula
+ RT_1 OR ... OR RT_k:
+
+ 1. In the first mode, when is_first_check_pass==TRUE :
+ 1.1. If rt must be ored(see the function sel_trees_must_be_ored) with
+ some rt_j (there may be only one such range tree in the imerge)
+ then the function produces the imerge representing the formula
+ RT_1 OR ... OR (RT_j OR RT) OR ... OR RT_k,
+ where the tree for (RT_j OR RT) is built by oring the pairs
+ of SEL_ARG trees for the corresponding indexes
+ 1.2. Otherwise the function produces the imerge representing the formula:
+ RT_1 OR ... OR RT_k OR RT.
+
+ 2. In the second mode, when is_first_check_pass==FALSE :
+ 2.1. For each rt_j in the imerge that can be ored (see the function
+ sel_trees_can_be_ored), but not must be ored, with rt the function
+ replaces rt_j for a range tree such that for each index for which
+ ranges are defined in both in rt_j and rt the tree contains the
+ result of oring of these ranges.
+ 2.2. In other cases the function does not produce any imerge.
+
+ When is_first_check==TRUE the function returns FALSE in the parameter
+ is_last_check_pass if there is no rt_j such that rt_j can be ored with rt,
+ but, at the same time, it's not true that rt_j must be ored with rt.
+ When is_first_check==FALSE the function always returns FALSE in the
+ parameter is_last_check_pass.
+
+ RETURN
+ 1 The result of oring of rt_j and rt that must be ored returns the
+ the range tree with type==SEL_TREE::ALWAYS
+ (in this case the imerge m should be discarded)
+ -1 The function runs out of memory
+ 0 in all other cases
+*/
+
+int SEL_IMERGE::or_sel_tree_with_checks(RANGE_OPT_PARAM *param,
+ SEL_TREE *tree,
+ bool is_first_check_pass,
+ bool *is_last_check_pass)
+{
+ *is_last_check_pass= TRUE;
+ for (SEL_TREE** or_tree = trees;
+ or_tree != trees_next;
+ or_tree++)
+ {
+ SEL_TREE *result= 0;
+ key_map result_keys;
+ key_map ored_keys;
+ if (sel_trees_can_be_ored(param, *or_tree, tree, &ored_keys))
+ {
+ bool must_be_ored= sel_trees_must_be_ored(param, *or_tree, tree,
+ ored_keys);
+ if (must_be_ored == is_first_check_pass) {
+ result_keys.clear_all();
+ result= *or_tree;
+ for (uint key_no= 0; key_no < param->keys; key_no++)
+ {
+ if (!ored_keys.is_set(key_no))
+ {
+ result->keys[key_no]= 0;
+ continue;
+ }
+ SEL_ARG *key1= (*or_tree)->keys[key_no];
+ SEL_ARG *key2= tree->keys[key_no];
+ key2->incr_refs();
+ if ((result->keys[key_no]= key_or(param, key1, key2)))
+ {
+
+ result_keys.set_bit(key_no);
+#ifdef EXTRA_DEBUG
+ if (param->alloced_sel_args < SEL_ARG::MAX_SEL_ARGS)
+ {
+ key1= result->keys[key_no];
+ (key1)->test_use_count(key1);
+ }
+#endif
+ }
+ }
+ }
+ else if(is_first_check_pass)
+ *is_last_check_pass= FALSE;
+ }
+
+ if (result)
+ {
+ if (result_keys.is_clear_all())
+ result->type= SEL_TREE::ALWAYS;
+ *is_last_check_pass= TRUE;
+ if ((result->type == SEL_TREE::MAYBE) ||
+ (result->type == SEL_TREE::ALWAYS))
return 1;
/* SEL_TREE::IMPOSSIBLE is impossible here */
- return 0;
+ result->keys_map= result_keys;
+ *or_tree= result;
+ if (is_first_check_pass)
+ return 0;
}
}
+ if (!is_first_check_pass)
+ return 0;
- /* New tree cannot be combined with any of existing trees. */
- return or_sel_tree(param, new_tree);
+ if (!*is_last_check_pass &&
+ !(tree= new SEL_TREE(tree, FALSE, param)))
+ return (-1);
+ return or_sel_tree(param, tree);
}
/*
- Perform OR operation on this index_merge and supplied index_merge list.
+ Perform OR operation on this imerge and and another imerge
+
+ SYNOPSIS
+ or_sel_tree_with_checks()
+ param Context info for the operation
+ imerge The second operand of the operation
+ is_first_check_pass <=> the first call of the function for this imerge
+ is_last_check_pass OUT <=> no more calls of the function for this imerge
+ DESCRIPTION
+ For each range tree rt from 'imerge' the function calls the method
+ SEL_IMERGE::or_sel_tree_with_checks that performs OR operation on this
+ SEL_IMERGE object m and the tree rt. The mode of the operation is
+ specified by the parameter is_first_check_pass. Each call of
+ SEL_IMERGE::or_sel_tree_with_checks transforms this SEL_IMERGE object m.
+ The function returns FALSE in the prameter is_last_check_pass if
+ at least one of the calls of SEL_IMERGE::or_sel_tree_with_checks
+ returns FALSE as the value of its last parameter.
+
RETURN
- 0 - OK
- 1 - One of conditions in result is always TRUE and this SEL_IMERGE
- should be discarded.
- -1 - An error occurred
+ 1 One of the calls of SEL_IMERGE::or_sel_tree_with_checks returns 1.
+ (in this case the imerge m should be discarded)
+ -1 The function runs out of memory
+ 0 in all other cases
*/
-int SEL_IMERGE::or_sel_imerge_with_checks(RANGE_OPT_PARAM *param, SEL_IMERGE* imerge)
+int SEL_IMERGE::or_sel_imerge_with_checks(RANGE_OPT_PARAM *param,
+ SEL_IMERGE* imerge,
+ bool is_first_check_pass,
+ bool *is_last_check_pass)
{
+ *is_last_check_pass= TRUE;
for (SEL_TREE** tree= imerge->trees;
tree != imerge->trees_next;
tree++)
{
- if (or_sel_tree_with_checks(param, *tree))
- return 1;
+ uint rc;
+ bool is_last;
+ rc= or_sel_tree_with_checks(param, *tree, is_first_check_pass, &is_last);
+ if (!is_last)
+ *is_last_check_pass= FALSE;
+ if (rc)
+ return rc;
}
return 0;
}
-SEL_TREE::SEL_TREE(SEL_TREE *arg, RANGE_OPT_PARAM *param): Sql_alloc()
+/*
+ Copy constructor for SEL_TREE objects
+
+ SYNOPSIS
+ SEL_TREE
+ arg The source tree for the constructor
+ without_merges <=> only the range part of the tree arg is copied
+ param Context info for the operation
+
+ DESCRIPTION
+ The constructor creates a full copy of the SEL_TREE arg if
+ the prameter without_merges==FALSE. Otherwise a tree is created
+ that contains the copy only of the range part of the tree arg.
+*/
+
+SEL_TREE::SEL_TREE(SEL_TREE *arg, bool without_merges,
+ RANGE_OPT_PARAM *param): Sql_alloc()
{
keys_map= arg->keys_map;
type= arg->type;
- for (int idx= 0; idx < MAX_KEY; idx++)
+ for (uint idx= 0; idx < param->keys; idx++)
{
if ((keys[idx]= arg->keys[idx]))
- keys[idx]->increment_use_count(1);
+ keys[idx]->incr_refs();
}
+ if (without_merges)
+ return;
+
List_iterator<SEL_IMERGE> it(arg->merges);
for (SEL_IMERGE *el= it++; el; el= it++)
{
- SEL_IMERGE *merge= new SEL_IMERGE(el, param);
+ SEL_IMERGE *merge= new SEL_IMERGE(el, 0, param);
if (!merge || merge->trees == merge->trees_next)
{
merges.empty();
@@ -909,7 +1233,23 @@ SEL_TREE::SEL_TREE(SEL_TREE *arg, RANGE_
}
-SEL_IMERGE::SEL_IMERGE (SEL_IMERGE *arg, RANGE_OPT_PARAM *param) : Sql_alloc()
+/*
+ Copy constructor for SEL_IMERGE objects
+
+ SYNOPSIS
+ SEL_IMERGE
+ arg The source imerge for the constructor
+ cnt How many trees from arg are to be copied
+ param Context info for the operation
+
+ DESCRIPTION
+ The cnt==0 then the constructor creates a full copy of the
+ imerge arg. Otherwise only the first cnt trees of the imerge
+ are copied.
+*/
+
+SEL_IMERGE::SEL_IMERGE(SEL_IMERGE *arg, uint cnt,
+ RANGE_OPT_PARAM *param) : Sql_alloc()
{
uint elements= (arg->trees_end - arg->trees);
if (elements > PREALLOCED_TREES)
@@ -921,13 +1261,13 @@ SEL_IMERGE::SEL_IMERGE (SEL_IMERGE *arg,
else
trees= &trees_prealloced[0];
- trees_next= trees;
+ trees_next= trees + (cnt ? cnt : arg->trees_next-arg->trees);
trees_end= trees + elements;
- for (SEL_TREE **tree = trees, **arg_tree= arg->trees; tree < trees_end;
+ for (SEL_TREE **tree = trees, **arg_tree= arg->trees; tree < trees_next;
tree++, arg_tree++)
{
- if (!(*tree= new SEL_TREE(*arg_tree, param)))
+ if (!(*tree= new SEL_TREE(*arg_tree, FALSE, param)))
goto mem_err;
}
@@ -941,7 +1281,19 @@ mem_err:
/*
- Perform AND operation on two index_merge lists and store result in *im1.
+ Perform AND operation on two imerge lists
+
+ SYNOPSIS
+ imerge_list_and_list()
+ param Context info for the operation
+ im1 The first imerge list for the operation
+ im2 The second imerge list for the operation
+
+ DESCRIPTION
+ The function just appends the imerge list im2 to the imerge list im1
+
+ RETURN VALUE
+ none
*/
inline void imerge_list_and_list(List<SEL_IMERGE> *im1, List<SEL_IMERGE> *im2)
@@ -951,73 +1303,242 @@ inline void imerge_list_and_list(List<SE
/*
- Perform OR operation on 2 index_merge lists, storing result in first list.
-
- NOTES
- The following conversion is implemented:
- (a_1 &&...&& a_N)||(b_1 &&...&& b_K) = AND_i,j(a_i || b_j) =>
- => (a_1||b_1).
-
- i.e. all conjuncts except the first one are currently dropped.
- This is done to avoid producing N*K ways to do index_merge.
+ Perform OR operation on two imerge lists
- If (a_1||b_1) produce a condition that is always TRUE, NULL is returned
- and index_merge is discarded (while it is actually possible to try
- harder).
-
- As a consequence of this, choice of keys to do index_merge read may depend
- on the order of conditions in WHERE part of the query.
+ SYNOPSIS
+ imerge_list_or_list()
+ param Context info for the operation
+ im1 The first imerge list for the operation
+ im2 The second imerge list for the operation
+
+ DESCRIPTION
+ Assuming that the first imerge list represents the formula
+ F1= M1_1 AND ... AND M1_k1
+ while the second imerge list represents the formula
+ F2= M2_1 AND ... AND M2_k2,
+ where M1_i= RT1_i_1 OR ... OR RT1_i_l1i (i in [1..k1])
+ and M2_i = RT2_i_1 OR ... OR RT2_i_l2i (i in [1..k2]),
+ the function builds a list of imerges for some formula that can be
+ inferred from the formula (F1 OR F2).
+
+ More exactly the function builds imerges for the formula (M1_1 OR M2_1).
+ Note that
+ (F1 OR F2) = (M1_1 AND ... AND M1_k1) OR (M2_1 AND ... AND M2_k2) =
+ AND (M1_i OR M2_j) (i in [1..k1], j in [1..k2]) =>
+ M1_1 OR M2_1.
+ So (M1_1 OR M2_1) is indeed an inference formula for (F1 OR F2).
+
+ To build imerges for the formula (M1_1 OR M2_1) the function invokes,
+ possibly twice, the method SEL_IMERGE::or_sel_imerge_with_checks
+ for the imerge m1_1.
+ At its first invocation the method SEL_IMERGE::or_sel_imerge_with_checks
+ performs OR operation on the imerge m1_1 and the range tree rt2_1_1 by
+ calling SEL_IMERGE::or_sel_tree_with_checks with is_first_pass_check==TRUE.
+ The resulting imerge of the operation is ored with the next range tree of
+ the imerge m2_1. This oring continues until the last range tree from
+ m2_1 has been ored.
+ At its second invocation the method SEL_IMERGE::or_sel_imerge_with_checks
+ performs the same sequence of OR operations, but now calling
+ SEL_IMERGE::or_sel_tree_with_checks with is_first_pass_check==FALSE.
+ The imerges that the operation produces replace those in the list im1
+
RETURN
- 0 OK, result is stored in *im1
- other Error, both passed lists are unusable
+ 0 if the operation is a success
+ -1 if the function has run out of memory
*/
int imerge_list_or_list(RANGE_OPT_PARAM *param,
List<SEL_IMERGE> *im1,
List<SEL_IMERGE> *im2)
{
+
+ uint rc;
+ bool is_last_check_pass= FALSE;
+
SEL_IMERGE *imerge= im1->head();
+ uint elems= imerge->trees_next-imerge->trees;
im1->empty();
im1->push_back(imerge);
- return imerge->or_sel_imerge_with_checks(param, im2->head());
+ rc= imerge->or_sel_imerge_with_checks(param, im2->head(),
+ TRUE, &is_last_check_pass);
+ if (rc)
+ {
+ if (rc == 1)
+ {
+ im1->empty();
+ rc= 0;
+ }
+ return rc;
+ }
+
+ if (!is_last_check_pass)
+ {
+ SEL_IMERGE* new_imerge= new SEL_IMERGE(imerge, elems, param);
+ if (new_imerge)
+ {
+ is_last_check_pass= TRUE;
+ rc= new_imerge->or_sel_imerge_with_checks(param, im2->head(),
+ FALSE, &is_last_check_pass);
+ if (!rc)
+ im1->push_back(new_imerge);
+ }
+ }
+ return rc;
}
/*
- Perform OR operation on index_merge list and key tree.
+ Perform OR operation for each imerge from a list and the range part of a tree
+
+ SYNOPSIS
+ imerge_list_or_tree()
+ param Context info for the operation
+ merges The list of imerges to be ored with the range part of tree
+ tree SEL_TREE whose range part is to be ored with the imerges
+
+ DESCRIPTION
+ For each imerge mi from the list 'merges' the function performes OR
+ operation with mi and the range part of 'tree' rt, producing one or
+ two imerges.
+ Given the merge mi represent the formula RTi_1 OR ... OR RTi_k,
+ the function forms the merges by the following rules:
+
+ 1. If rt cannot be ored with any of the trees rti the function just
+ produces an imerge that represents the formula
+ RTi_1 OR ... RTi_k OR RT.
+ 2. If there exist a tree rtj that must be ored with rt the function
+ produces an imerge the represents the formula
+ RTi_1 OR ... OR (RTi_j OR RT) OR ... OR RTi_k,
+ where the range tree for (RTi_j OR RT) is constructed by oring the
+ SEL_ARG trees that must be ored.
+ 3. For each rti_j that can be ored with rt the function produces
+ the new tree rti_j' and substitutes rti_j for this new range tree.
+
+ In any case the function removes mi from the list and then adds all
+ produced imerges.
+
+ To build imerges by rules 1-3 the function calls the method
+ SEL_IMERGE::or_sel_tree_with_checks, possibly twice. With the first
+ call it passes TRUE for the third parameter of the function.
+ At this first call imerges by rules 1-2 are built. If the call
+ returns FALSE as the return value of its fourth parameter then the
+ function are called for the second time. At this call the imerge
+ of rule 3 is produced.
+
+ If a call of SEL_IMERGE::or_sel_tree_with_checks returns 1 then
+ then it means that the produced tree contains an always true
+ range tree and the whole imerge can be discarded.
+
RETURN
- 0 OK, result is stored in *im1.
- other Error
+ 1 if no imerges are produced
+ 0 otherwise
*/
+static
int imerge_list_or_tree(RANGE_OPT_PARAM *param,
- List<SEL_IMERGE> *im1,
+ List<SEL_IMERGE> *merges,
SEL_TREE *tree)
{
+
SEL_IMERGE *imerge;
- List_iterator<SEL_IMERGE> it(*im1);
- bool tree_used= FALSE;
+ List<SEL_IMERGE> additional_merges;
+ List_iterator<SEL_IMERGE> it(*merges);
+
while ((imerge= it++))
{
- SEL_TREE *or_tree;
- if (tree_used)
- {
- or_tree= new SEL_TREE (tree, param);
- if (!or_tree ||
- (or_tree->keys_map.is_clear_all() && or_tree->merges.is_empty()))
- return FALSE;
+ bool is_last_check_pass;
+ int rc= 0;
+ int rc1= 0;
+ SEL_TREE *or_tree= new SEL_TREE (tree, FALSE, param);
+ if (or_tree)
+ {
+ uint elems= imerge->trees_next-imerge->trees;
+ rc= imerge->or_sel_tree_with_checks(param, or_tree,
+ TRUE, &is_last_check_pass);
+ if (!is_last_check_pass)
+ {
+ SEL_IMERGE *new_imerge= new SEL_IMERGE(imerge, elems, param);
+ if (new_imerge)
+ {
+ rc1= new_imerge->or_sel_tree_with_checks(param, or_tree,
+ FALSE, &is_last_check_pass);
+ if (!rc1)
+ additional_merges.push_back(new_imerge);
+ }
+ }
}
- else
- or_tree= tree;
-
- if (imerge->or_sel_tree_with_checks(param, or_tree))
+ if (rc || rc1 || !or_tree)
it.remove();
- tree_used= TRUE;
}
- return im1->is_empty();
+
+ merges->concat(&additional_merges);
+ return merges->is_empty();
+}
+
+
+/*
+ Perform pushdown operation of the range part of a tree into given imerges
+
+ SYNOPSIS
+ imerge_list_and_tree()
+ param Context info for the operation
+ merges IN/OUT List of imerges to push the range part of 'tree' into
+ tree SEL_TREE whose range part is to be pushed into imerges
+
+ DESCRIPTION
+ For each imerge from the list merges the function pushes the range part
+ rt of 'tree' into the imerge.
+ More exactly if the imerge mi from the list represents the formula
+ RTi_1 OR ... OR RTi_k
+ the function bulds a new imerge that represents the formula
+ (RTi_1 AND RT) OR ... OR (RTi_k AND RT)
+ and adds this imerge to the list merges.
+ To perform this pushdown operation the function calls the method
+ SEL_IMERGE::and_sel_tree.
+ For any imerge mi the new imerge is not created if for each pair of
+ trees rti_j and rt the intersection of the indexes with defined ranges
+ is empty.
+ If the result of the pushdown operation for the imerge mi returns an
+ imerge with no trees then then not only nothing is added to the list
+ merges but mi itself is removed from the list.
+
+ RETURN
+ 1 if no imerges are left in the list merges
+ 0 otherwise
+*/
+
+static
+int imerge_list_and_tree(RANGE_OPT_PARAM *param,
+ List<SEL_IMERGE> *merges,
+ SEL_TREE *tree)
+{
+ SEL_IMERGE *imerge;
+ SEL_IMERGE *new_imerge= NULL;
+ List<SEL_IMERGE> new_merges;
+ List_iterator<SEL_IMERGE> it(*merges);
+
+ while ((imerge= it++))
+ {
+ if (!new_imerge)
+ new_imerge= new SEL_IMERGE();
+ if (imerge->have_common_keys(param, tree) &&
+ new_imerge && !imerge->and_sel_tree(param, tree, new_imerge))
+ {
+ if (new_imerge->trees == new_imerge->trees_next)
+ it.remove();
+ else
+ {
+ new_merges.push_back(new_imerge);
+ new_imerge= NULL;
+ }
+ }
+ }
+ imerge_list_and_list(&new_merges, merges);
+ *merges= new_merges;
+ return merges->is_empty();
}
@@ -2367,72 +2888,73 @@ int SQL_SELECT::test_quick_select(THD *t
It is possible to use a range-based quick select (but it might be
slower than 'all' table scan).
*/
- if (tree->merges.is_empty())
+ TRP_RANGE *range_trp;
+ TRP_ROR_INTERSECT *rori_trp;
+ bool can_build_covering= FALSE;
+
+ remove_nonrange_trees(¶m, tree);
+
+ /* Get best 'range' plan and prepare data for making other plans */
+ if ((range_trp= get_key_scans_params(¶m, tree, FALSE, TRUE,
+ best_read_time)))
{
- TRP_RANGE *range_trp;
- TRP_ROR_INTERSECT *rori_trp;
- bool can_build_covering= FALSE;
-
- /* Get best 'range' plan and prepare data for making other plans */
- if ((range_trp= get_key_scans_params(¶m, tree, FALSE, TRUE,
- best_read_time)))
- {
- best_trp= range_trp;
- best_read_time= best_trp->read_cost;
- }
+ best_trp= range_trp;
+ best_read_time= best_trp->read_cost;
+ }
+ /*
+ Simultaneous key scans and row deletes on several handler
+ objects are not allowed so don't use ROR-intersection for
+ table deletes.
+ */
+ if ((thd->lex->sql_command != SQLCOM_DELETE) &&
+ optimizer_flag(thd, OPTIMIZER_SWITCH_INDEX_MERGE))
+ {
/*
- Simultaneous key scans and row deletes on several handler
- objects are not allowed so don't use ROR-intersection for
- table deletes.
+ Get best non-covering ROR-intersection plan and prepare data for
+ building covering ROR-intersection.
*/
- if ((thd->lex->sql_command != SQLCOM_DELETE) &&
- optimizer_flag(thd, OPTIMIZER_SWITCH_INDEX_MERGE))
+ if ((rori_trp= get_best_ror_intersect(¶m, tree, best_read_time,
+ &can_build_covering)))
{
+ best_trp= rori_trp;
+ best_read_time= best_trp->read_cost;
/*
- Get best non-covering ROR-intersection plan and prepare data for
- building covering ROR-intersection.
+ Try constructing covering ROR-intersect only if it looks possible
+ and worth doing.
*/
- if ((rori_trp= get_best_ror_intersect(¶m, tree, best_read_time,
- &can_build_covering)))
- {
+ if (!rori_trp->is_covering && can_build_covering &&
+ (rori_trp= get_best_covering_ror_intersect(¶m, tree,
+ best_read_time)))
best_trp= rori_trp;
- best_read_time= best_trp->read_cost;
- /*
- Try constructing covering ROR-intersect only if it looks possible
- and worth doing.
- */
- if (!rori_trp->is_covering && can_build_covering &&
- (rori_trp= get_best_covering_ror_intersect(¶m, tree,
- best_read_time)))
- best_trp= rori_trp;
- }
}
}
- else
+
+ if (optimizer_flag(thd, OPTIMIZER_SWITCH_INDEX_MERGE))
{
- if (optimizer_flag(thd, OPTIMIZER_SWITCH_INDEX_MERGE))
+ /* Try creating index_merge/ROR-union scan. */
+ SEL_IMERGE *imerge;
+ TABLE_READ_PLAN *best_conj_trp= NULL, *new_conj_trp;
+ LINT_INIT(new_conj_trp); /* no empty index_merge lists possible */
+ DBUG_PRINT("info",("No range reads possible,"
+ " trying to construct index_merge"));
+ List_iterator_fast<SEL_IMERGE> it(tree->merges);
+ while ((imerge= it++))
{
- /* Try creating index_merge/ROR-union scan. */
- SEL_IMERGE *imerge;
- TABLE_READ_PLAN *best_conj_trp= NULL, *new_conj_trp;
- LINT_INIT(new_conj_trp); /* no empty index_merge lists possible */
- DBUG_PRINT("info",("No range reads possible,"
- " trying to construct index_merge"));
- List_iterator_fast<SEL_IMERGE> it(tree->merges);
- while ((imerge= it++))
+ new_conj_trp= get_best_disjunct_quick(¶m, imerge, best_read_time);
+ if (new_conj_trp)
+ set_if_smaller(param.table->quick_condition_rows,
+ new_conj_trp->records);
+ if (new_conj_trp &&
+ (!best_conj_trp ||
+ new_conj_trp->read_cost < best_conj_trp->read_cost))
{
- new_conj_trp= get_best_disjunct_quick(¶m, imerge, best_read_time);
- if (new_conj_trp)
- set_if_smaller(param.table->quick_condition_rows,
- new_conj_trp->records);
- if (!best_conj_trp || (new_conj_trp && new_conj_trp->read_cost <
- best_conj_trp->read_cost))
- best_conj_trp= new_conj_trp;
+ best_conj_trp= new_conj_trp;
+ best_read_time= best_conj_trp->read_cost;
}
- if (best_conj_trp)
- best_trp= best_conj_trp;
}
+ if (best_conj_trp)
+ best_trp= best_conj_trp;
}
}
@@ -3696,7 +4218,6 @@ TABLE_READ_PLAN *get_best_disjunct_quick
{
SEL_TREE **ptree;
TRP_INDEX_MERGE *imerge_trp= NULL;
- uint n_child_scans= imerge->trees_next - imerge->trees;
TRP_RANGE **range_scans;
TRP_RANGE **cur_child;
TRP_RANGE **cpk_scan= NULL;
@@ -3716,6 +4237,26 @@ TABLE_READ_PLAN *get_best_disjunct_quick
DBUG_ENTER("get_best_disjunct_quick");
DBUG_PRINT("info", ("Full table scan cost: %g", read_time));
+ /*
+ In every tree of imerge remove SEL_ARG trees that do not make ranges.
+ Remove a tree from imerge if no SEL_ARG trees remain in it.
+ */
+ SEL_TREE **new_trees_next= imerge->trees;
+ for (ptree= new_trees_next; ptree != imerge->trees_next; ptree++)
+ {
+ if (remove_nonrange_trees(param, *ptree))
+ continue;
+ if (ptree > new_trees_next)
+ *new_trees_next= *ptree;
+ new_trees_next++;
+ }
+ imerge->trees_next= new_trees_next;
+
+ uint n_child_scans= imerge->trees_next - imerge->trees;
+
+ if (!n_child_scans)
+ DBUG_RETURN(NULL);
+
if (!(range_scans= (TRP_RANGE**)alloc_root(param->mem_root,
sizeof(TRP_RANGE*)*
n_child_scans)))
@@ -3835,6 +4376,13 @@ TABLE_READ_PLAN *get_best_disjunct_quick
imerge_trp->range_scans_end= range_scans + n_child_scans;
read_time= imerge_cost;
}
+ if (imerge_trp)
+ {
+ TABLE_READ_PLAN *trp= merge_same_index_scans(param, imerge, imerge_trp,
+ read_time);
+ if (trp != imerge_trp)
+ DBUG_RETURN(trp);
+ }
}
build_ror_index_merge:
@@ -3850,6 +4398,7 @@ build_ror_index_merge:
sizeof(TABLE_READ_PLAN*)*
n_child_scans)))
DBUG_RETURN(imerge_trp);
+
skip_to_ror_scan:
roru_index_costs= 0.0;
roru_total_records= 0;
@@ -3933,7 +4482,116 @@ skip_to_ror_scan:
DBUG_RETURN(roru);
}
}
- DBUG_RETURN(imerge_trp);
+ DBUG_RETURN(imerge_trp);
+}
+
+
+/*
+ Merge index scans for the same indexes in an index merge plan
+
+ SYNOPSIS
+ merge_same_index_scans()
+ param Context info for the operation
+ imerge IN/OUT SEL_IMERGE from which imerge_trp has been extracted
+ imerge_trp The index merge plan where index scans for the same
+ indexes are to be merges
+ read_time The upper bound for the cost of the plan to be evaluated
+
+ DESRIPTION
+ For the given index merge plan imerge_trp extracted from the SEL_MERGE
+ imerge the function looks for range scans with the same indexes and merges
+ them into SEL_ARG trees. Then for each such SEL_ARG tree r_i the function
+ creates a range tree rt_i that contains only r_i. All rt_i are joined
+ into one index merge that replaces the original index merge imerge.
+ The function calls get_best_disjunct_quick for the new index merge to
+ get a new index merge plan that contains index scans only for different
+ indexes.
+ If there are no index scans for the same index in the original index
+ merge plan the function does not change the original imerge and returns
+ imerge_trp as its result.
+
+ RETURN
+ The original or or improved index merge plan
+*/
+
+static
+TABLE_READ_PLAN *merge_same_index_scans(PARAM *param, SEL_IMERGE *imerge,
+ TRP_INDEX_MERGE *imerge_trp,
+ double read_time)
+{
+ uint16 first_scan_tree_idx[MAX_KEY];
+ SEL_TREE **tree;
+ TRP_RANGE **cur_child;
+ uint removed_cnt= 0;
+
+ DBUG_ENTER("merge_same_index_scans");
+
+ bzero(first_scan_tree_idx, sizeof(first_scan_tree_idx[0])*param->keys);
+
+ for (tree= imerge->trees, cur_child= imerge_trp->range_scans;
+ tree != imerge->trees_next;
+ tree++, cur_child++)
+ {
+ DBUG_ASSERT(tree);
+ uint key_idx= (*cur_child)->key_idx;
+ uint16 *tree_idx_ptr= &first_scan_tree_idx[key_idx];
+ if (!*tree_idx_ptr)
+ *tree_idx_ptr= (uint16) (tree-imerge->trees+1);
+ else
+ {
+ SEL_TREE **changed_tree= imerge->trees+(*tree_idx_ptr-1);
+ SEL_ARG *key= (*changed_tree)->keys[key_idx];
+ bzero((*changed_tree)->keys,
+ sizeof((*changed_tree)->keys[0])*param->keys);
+ (*changed_tree)->keys_map.clear_all();
+ if (((*changed_tree)->keys[key_idx]=
+ key_or(param, key, (*tree)->keys[key_idx])))
+ (*changed_tree)->keys_map.set_bit(key_idx);
+ *tree= NULL;
+ removed_cnt++;
+ }
+ }
+ if (!removed_cnt)
+ DBUG_RETURN(imerge_trp);
+
+ TABLE_READ_PLAN *trp= NULL;
+ SEL_TREE **new_trees_next= imerge->trees;
+ for (tree= new_trees_next; tree != imerge->trees_next; tree++)
+ {
+ if (!*tree)
+ continue;
+ if (tree > new_trees_next)
+ *new_trees_next= *tree;
+ new_trees_next++;
+ }
+ imerge->trees_next= new_trees_next;
+
+ DBUG_ASSERT(imerge->trees_next>imerge->trees);
+
+ if (imerge->trees_next-imerge->trees > 1)
+ trp= get_best_disjunct_quick(param, imerge, read_time);
+ else
+ {
+ /*
+ This alternative theoretically can be reached when the cost
+ of the index merge for such a formula as
+ (key1 BETWEEN c1_1 AND c1_2) AND key2 > c2 OR
+ (key1 BETWEEN c1_3 AND c1_4) AND key3 > c3
+ is estimated as being cheaper than the cost of index scan for
+ the formula
+ (key1 BETWEEN c1_1 AND c1_2) OR (key1 BETWEEN c1_3 AND c1_4)
+
+ In the current code this may happen for two reasons:
+ 1. for a single index range scan data records are accessed in
+ a random order
+ 2. the functions that estimate the cost of a range scan and an
+ index merge retrievals are not well calibrated
+ */
+ trp= get_key_scans_params(param, *imerge->trees, FALSE, TRUE,
+ read_time);
+ }
+
+ DBUG_RETURN(trp);
}
@@ -4029,7 +4687,7 @@ ROR_SCAN_INFO *make_ror_scan(const PARAM
ror_scan->key_rec_length= (param->table->key_info[keynr].key_length +
param->table->file->ref_length);
ror_scan->sel_arg= sel_arg;
- ror_scan->records= param->table->quick_rows[keynr];
+ ror_scan->records= param->quick_rows[keynr];
if (!(bitmap_buf= (my_bitmap_map*) alloc_root(param->mem_root,
param->fields_bitmap_size)))
@@ -4049,7 +4707,7 @@ ROR_SCAN_INFO *make_ror_scan(const PARAM
bitmap_set_bit(&ror_scan->covered_fields, key_part->fieldnr-1);
}
ror_scan->index_read_cost=
- get_index_only_read_time(param, param->table->quick_rows[ror_scan->keynr],
+ get_index_only_read_time(param, param->quick_rows[ror_scan->keynr],
ror_scan->keynr);
DBUG_RETURN(ror_scan);
}
@@ -4335,7 +4993,7 @@ static double ror_scan_selectivity(const
}
if (!prev_covered)
{
- double tmp= rows2double(info->param->table->quick_rows[scan->keynr]) /
+ double tmp= rows2double(info->param->quick_rows[scan->keynr]) /
rows2double(prev_records);
DBUG_PRINT("info", ("Selectivity multiplier: %g", tmp));
selectivity_mult *= tmp;
@@ -4414,7 +5072,7 @@ static bool ror_intersect_add(ROR_INTERS
}
else
{
- info->index_records += info->param->table->quick_rows[ror_scan->keynr];
+ info->index_records += info->param->quick_rows[ror_scan->keynr];
info->index_scan_costs += ror_scan->index_read_cost;
bitmap_union(&info->covered_fields, &ror_scan->covered_fields);
if (!info->is_covering && bitmap_is_subset(&info->param->needed_fields,
@@ -6044,13 +6702,138 @@ sel_add(SEL_ARG *key1,SEL_ARG *key2)
return root;
}
-#define CLONE_KEY1_MAYBE 1
-#define CLONE_KEY2_MAYBE 2
-#define swap_clone_flag(A) ((A & 1) << 1) | ((A & 2) >> 1)
+/*
+ Build a range tree for the conjunction of the range parts of two trees
-static SEL_TREE *
-tree_and(RANGE_OPT_PARAM *param,SEL_TREE *tree1,SEL_TREE *tree2)
+ SYNOPSIS
+ and_range_trees()
+ param Context info for the operation
+ tree1 SEL_TREE for the first conjunct
+ tree2 SEL_TREE for the second conjunct
+ result SEL_TREE for the result
+
+ DESCRIPTION
+ This function takes range parts of two trees tree1 and tree2 and builds
+ a range tree for the conjunction of the formulas that these two range parts
+ represent.
+ More exactly:
+ if the range part of tree1 represents the normalized formula
+ R1_1 AND ... AND R1_k,
+ and the range part of tree2 represents the normalized formula
+ R2_1 AND ... AND R2_k,
+ then the range part of the result represents the formula:
+ RT = R_1 AND ... AND R_k, where R_i=(R1_i AND R2_i) for each i from [1..k]
+
+ The function assumes that tree1 is never equal to tree2. At the same
+ time the tree result can be the same as tree1 (but never as tree2).
+ If result==tree1 then rt replaces the range part of tree1 leaving
+ imerges as they are.
+ if result!=tree1 than it is assumed that the SEL_ARG trees in tree1 and
+ tree2 should be preserved. Otherwise they can be destroyed.
+
+ RETURN
+ 1 if the type the result tree is SEL_TREE::IMPOSSIBLE
+ 0 otherwise
+*/
+
+static
+int and_range_trees(RANGE_OPT_PARAM *param, SEL_TREE *tree1, SEL_TREE *tree2,
+ SEL_TREE *result)
+{
+ DBUG_ENTER("and_ranges");
+ key_map result_keys;
+ result_keys.clear_all();
+ key_map anded_keys= tree1->keys_map;
+ anded_keys.merge(tree2->keys_map);
+ int key_no;
+ key_map::Iterator it(anded_keys);
+ while ((key_no= it++) != key_map::Iterator::BITMAP_END)
+ {
+ uint flag=0;
+ SEL_ARG *key1= tree1->keys[key_no];
+ SEL_ARG *key2= tree2->keys[key_no];
+ if (key1 && !key1->simple_key())
+ flag|= CLONE_KEY1_MAYBE;
+ if (key2 && !key2->simple_key())
+ flag|=CLONE_KEY2_MAYBE;
+ if (result != tree1)
+ {
+ if (key1)
+ key1->incr_refs();
+ if (key2)
+ key2->incr_refs();
+ }
+ SEL_ARG *key;
+ if ((result->keys[key_no]= key =key_and(param, key1, key2, flag)))
+ {
+ if (key && key->type == SEL_ARG::IMPOSSIBLE)
+ {
+ result->type= SEL_TREE::IMPOSSIBLE;
+ DBUG_RETURN(1);
+ }
+ result_keys.set_bit(key_no);
+#ifdef EXTRA_DEBUG
+ if (param->alloced_sel_args < SEL_ARG::MAX_SEL_ARGS)
+ key->test_use_count(key);
+#endif
+ }
+ }
+ result->keys_map= result_keys;
+ DBUG_RETURN(0);
+}
+
+
+/*
+ Build a SEL_TREE for a conjunction out of such trees for the conjuncts
+
+ SYNOPSIS
+ tree_and()
+ param Context info for the operation
+ tree1 SEL_TREE for the first conjunct
+ tree2 SEL_TREE for the second conjunct
+
+ DESCRIPTION
+ This function builds a tree for the formula (A AND B) out of the trees
+ tree1 and tree2 that has been built for the formulas A and B respectively.
+
+ In a general case
+ tree1 represents the formula RT1 AND MT1,
+ where RT1 = R1_1 AND ... AND R1_k1, MT1=M1_1 AND ... AND M1_l1;
+ tree2 represents the formula RT2 AND MT2
+ where RT2 = R2_1 AND ... AND R2_k2, MT2=M2_1 and ... and M2_l2.
+
+ The result tree will represent the formula of the the following structure:
+ RT AND MT1 AND MT2 AND RT1MT2 AND RT2MT1, such that
+ rt is a tree obtained by range intersection of trees tree1 and tree2,
+ RT1MT2 = RT1M2_1 AND ... AND RT1M2_l2,
+ RT2MT1 = RT2M1_1 AND ... AND RT2M1_l1,
+ where rt1m2_i (i=1,...,l2) is the result of the pushdown operation
+ of range tree rt1 into imerge m2_i, while rt2m1_j (j=1,...,l1) is the
+ result of the pushdown operation of range tree rt2 into imerge m1_j.
+
+ RT1MT2/RT2MT is empty if MT2/MT1 is empty.
+
+ The range intersection of two range trees is produced by the function
+ and_range_trees. The pushdown of a range tree to a imerge is performed
+ by the function imerge_list_and_tree. This function may produce imerges
+ containing only one range tree. Such trees are intersected with rt and
+ the result of intersection is returned as the range part of the result
+ tree, while the corresponding imerges are removed altogether from its
+ imerge part.
+
+ NOTE.
+ The pushdown operation of range trees into imerges is needed to be able
+ to construct valid imerges for the condition like this:
+ key1_p1=c1 AND (key1_p2 BETWEEN c21 AND c22 OR key2 < c2)
+
+ RETURN
+ The result tree, if a success
+ 0 - otherwise.
+*/
+
+static
+SEL_TREE *tree_and(RANGE_OPT_PARAM *param, SEL_TREE *tree1, SEL_TREE *tree2)
{
DBUG_ENTER("tree_and");
if (!tree1)
@@ -6072,87 +6855,208 @@ tree_and(RANGE_OPT_PARAM *param,SEL_TREE
tree1->type=SEL_TREE::KEY_SMALLER;
DBUG_RETURN(tree1);
}
- key_map result_keys;
- result_keys.clear_all();
-
- /* Join the trees key per key */
- SEL_ARG **key1,**key2,**end;
- for (key1= tree1->keys,key2= tree2->keys,end=key1+param->keys ;
- key1 != end ; key1++,key2++)
+
+ if (!tree1->merges.is_empty())
+ imerge_list_and_tree(param, &tree1->merges, tree2);
+ if (!tree2->merges.is_empty())
+ imerge_list_and_tree(param, &tree2->merges, tree1);
+ if (and_range_trees(param, tree1, tree2, tree1))
+ DBUG_RETURN(tree1);
+ imerge_list_and_list(&tree1->merges, &tree2->merges);
+ eliminate_single_tree_imerges(param, tree1);
+ DBUG_RETURN(tree1);
+}
+
+
+/*
+ Eliminate single tree imerges in a SEL_TREE objects
+
+ SYNOPSIS
+ eliminate_single_tree_imerges()
+ param Context info for the function
+ tree SEL_TREE where single tree imerges are to be eliminated
+
+ DESCRIPTION
+ For each imerge in 'tree' that contains only one disjunct tree, i.e.
+ for any imerge of the form m=rt, the function performs and operation
+ the range part of tree, replaces rt the with the result of anding and
+ removes imerge m from the the merge part of 'tree'.
+
+ RETURN VALUE
+ none
+*/
+
+static
+void eliminate_single_tree_imerges(RANGE_OPT_PARAM *param, SEL_TREE *tree)
+{
+ SEL_IMERGE *imerge;
+ List<SEL_IMERGE> merges= tree->merges;
+ List_iterator<SEL_IMERGE> it(merges);
+ tree->merges.empty();
+ while ((imerge= it++))
{
- uint flag=0;
- if (*key1 || *key2)
+ if (imerge->trees+1 == imerge->trees_next)
{
- if (*key1 && !(*key1)->simple_key())
- flag|=CLONE_KEY1_MAYBE;
- if (*key2 && !(*key2)->simple_key())
- flag|=CLONE_KEY2_MAYBE;
- *key1=key_and(param, *key1, *key2, flag);
- if (*key1 && (*key1)->type == SEL_ARG::IMPOSSIBLE)
- {
- tree1->type= SEL_TREE::IMPOSSIBLE;
- DBUG_RETURN(tree1);
- }
- result_keys.set_bit(key1 - tree1->keys);
-#ifdef EXTRA_DEBUG
- if (*key1 && param->alloced_sel_args < SEL_ARG::MAX_SEL_ARGS)
- (*key1)->test_use_count(*key1);
-#endif
+ tree= tree_and(param, tree, *imerge->trees);
+ it.remove();
}
}
- tree1->keys_map= result_keys;
- /* dispose index_merge if there is a "range" option */
- if (!result_keys.is_clear_all())
- {
- tree1->merges.empty();
- DBUG_RETURN(tree1);
- }
+ tree->merges= merges;
+}
- /* ok, both trees are index_merge trees */
- imerge_list_and_list(&tree1->merges, &tree2->merges);
- DBUG_RETURN(tree1);
+
+/*
+ For two trees check that there are indexes with ranges in both of them
+
+ SYNOPSIS
+ sel_trees_have_common_keys()
+ param Context info for the function
+ tree1 SEL_TREE for the first tree
+ tree2 SEL_TREE for the second tree
+ common_keys OUT bitmap of all indexes with ranges in both trees
+
+ DESCRIPTION
+ For two trees tree1 and tree1 the function checks if there are indexes
+ in their range parts such that SEL_ARG trees are defined for them in the
+ range parts of both trees. The function returns the bitmap of such
+ indexes in the parameter common_keys.
+
+ RETURN
+ TRUE if there are such indexes (common_keys is nor empty)
+ FALSE otherwise
+*/
+
+static
+bool sel_trees_have_common_keys(RANGE_OPT_PARAM* param,
+ SEL_TREE *tree1, SEL_TREE *tree2,
+ key_map *common_keys)
+{
+ *common_keys= tree1->keys_map;
+ common_keys->intersect(tree2->keys_map);
+ return !common_keys->is_clear_all();
}
/*
- Check if two SEL_TREES can be combined into one (i.e. a single key range
- read can be constructed for "cond_of_tree1 OR cond_of_tree2" ) without
- using index_merge.
+ Check whether range parts of two trees can be ored for some indexes
+
+ SYNOPSIS
+ sel_trees_can_be_ored()
+ param Context info for the function
+ tree1 SEL_TREE for the first tree
+ tree2 SEL_TREE for the second tree
+ common_keys IN/OUT IN: bitmap of all indexes with SEL_ARG in both trees
+ OUT: bitmap of all indexes that can be ored
+
+ DESCRIPTION
+ For two trees tree1 and tree2 and the bitmap common_keys containing
+ bits for indexes that have SEL_ARG trees in range parts of both trees
+ the function checks if there are indexes for which SEL_ARG trees can
+ be ored. Two SEL_ARG trees for the same index can be ored if the most
+ major components of the index used in these trees coincide. If the
+ SEL_ARG trees for an index cannot be ored the function clears the bit
+ for this index in the bitmap common_keys.
+
+ The function does not verify that indexes marked in common_keys really
+ have SEL_ARG trees in both tree1 and tree2. It assumes that this is true.
+
+ NOTE
+ The function sel_trees_can_be_ored is usually used in pair with the
+ function sel_trees_have_common_keys.
+
+ RETURN
+ TRUE if there are indexes for which SEL_ARG trees can be ored
+ FALSE otherwise
*/
-bool sel_trees_can_be_ored(SEL_TREE *tree1, SEL_TREE *tree2,
- RANGE_OPT_PARAM* param)
+static
+bool sel_trees_can_be_ored(RANGE_OPT_PARAM* param,
+ SEL_TREE *tree1, SEL_TREE *tree2,
+ key_map *common_keys)
{
- key_map common_keys= tree1->keys_map;
DBUG_ENTER("sel_trees_can_be_ored");
- common_keys.intersect(tree2->keys_map);
+ if (!sel_trees_have_common_keys(param, tree1, tree2, common_keys))
+ DBUG_RETURN(FALSE);
+ int key_no;
+ key_map::Iterator it(*common_keys);
+ while ((key_no= it++) != key_map::Iterator::BITMAP_END)
+ {
+ DBUG_ASSERT(tree1->keys[key_no] && tree2->keys[key_no]);
+ /* Trees have a common key, check if they refer to the same key part */
+ if (tree1->keys[key_no]->part != tree2->keys[key_no]->part)
+ common_keys->clear_bit(key_no);
+ }
+ DBUG_RETURN(!common_keys->is_clear_all());
+}
+
+/*
+ Check whether range parts of two trees must be ored for some indexes
- if (common_keys.is_clear_all())
+ SYNOPSIS
+ sel_trees_must_be_ored()
+ param Context info for the function
+ tree1 SEL_TREE for the first tree
+ tree2 SEL_TREE for the second tree
+ ordable_keys bitmap of SEL_ARG trees that can be ored
+
+ DESCRIPTION
+ For two trees tree1 and tree2 and the bitmap ordable_keys containing
+ bits for indexes that have SEL_ARG trees in range parts of both trees
+ and these SEL_ARG trees can be ored the function checks if there are
+ indexes for which SEL_ARG trees must be ored. Two SEL_ARG trees for the
+ same index must be ored if all indexes for which SEL_SRG trees from the
+ range parts of tree1 anf tree2 that can be ored have the same field as
+ their major index component.
+
+ NOTE
+ The function sel_trees_must_be_ored as a rule is used in pair with the
+ function sel_trees_can_be_ored.
+
+ RETURN
+ TRUE if there are indexes for which SEL_ARG trees must be ored
+ FALSE otherwise
+*/
+
+static
+bool sel_trees_must_be_ored(RANGE_OPT_PARAM* param,
+ SEL_TREE *tree1, SEL_TREE *tree2,
+ key_map oredable_keys)
+{
+ key_map tmp;
+ DBUG_ENTER("sel_trees_must_be_ored");
+
+ tmp= tree1->keys_map;
+ tmp.merge(tree2->keys_map);
+ tmp.subtract(oredable_keys);
+ if (!tmp.is_clear_all())
DBUG_RETURN(FALSE);
- /* trees have a common key, check if they refer to same key part */
- SEL_ARG **key1,**key2;
- for (uint key_no=0; key_no < param->keys; key_no++)
+ Field *field= 0;
+ uint part;
+ int key_no;
+ key_map::Iterator it(oredable_keys);
+ while ((key_no= it++) != key_map::Iterator::BITMAP_END)
{
- if (common_keys.is_set(key_no))
+ SEL_ARG *key1= tree1->keys[key_no];
+ if (!field)
{
- key1= tree1->keys + key_no;
- key2= tree2->keys + key_no;
- if ((*key1)->part == (*key2)->part)
- {
- DBUG_RETURN(TRUE);
- }
+ field= key1->field;
+ part= key1->part;
}
+ else if (!field->eq(key1->field))
+ DBUG_RETURN(FALSE);
}
- DBUG_RETURN(FALSE);
-}
+ DBUG_RETURN(TRUE);
+}
/*
- Remove the trees that are not suitable for record retrieval.
+ Remove the trees that are not suitable for record retrieval
+
SYNOPSIS
- param Range analysis parameter
- tree Tree to be processed, tree->type is KEY or KEY_SMALLER
+ remove_nonrange_trees()
+ param Context info for the function
+ tree Tree to be processed, tree->type is KEY or KEY_SMALLER
DESCRIPTION
This function walks through tree->keys[] and removes the SEL_ARG* trees
@@ -6163,41 +7067,34 @@ bool sel_trees_can_be_ored(SEL_TREE *tre
A SEL_ARG* tree cannot be used to construct quick select if it has
tree->part != 0. (e.g. it could represent "keypart2 < const").
-
- WHY THIS FUNCTION IS NEEDED
Normally we allow construction of SEL_TREE objects that have SEL_ARG
- trees that do not allow quick range select construction. For example for
- " keypart1=1 AND keypart2=2 " the execution will proceed as follows:
+ trees that do not allow quick range select construction.
+ For example:
+ for " keypart1=1 AND keypart2=2 " the execution will proceed as follows:
tree1= SEL_TREE { SEL_ARG{keypart1=1} }
tree2= SEL_TREE { SEL_ARG{keypart2=2} } -- can't make quick range select
from this
call tree_and(tree1, tree2) -- this joins SEL_ARGs into a usable SEL_ARG
tree.
-
- There is an exception though: when we construct index_merge SEL_TREE,
- any SEL_ARG* tree that cannot be used to construct quick range select can
- be removed, because current range analysis code doesn't provide any way
- that tree could be later combined with another tree.
- Consider an example: we should not construct
- st1 = SEL_TREE {
- merges = SEL_IMERGE {
- SEL_TREE(t.key1part1 = 1),
- SEL_TREE(t.key2part2 = 2) -- (*)
- }
- };
- because
- - (*) cannot be used to construct quick range select,
- - There is no execution path that would cause (*) to be converted to
- a tree that could be used.
-
- The latter is easy to verify: first, notice that the only way to convert
- (*) into a usable tree is to call tree_and(something, (*)).
-
- Second look at what tree_and/tree_or function would do when passed a
- SEL_TREE that has the structure like st1 tree has, and conlcude that
- tree_and(something, (*)) will not be called.
+ Another example:
+ tree3= SEL_TREE { SEL_ARG{key1part1 = 1} }
+ tree4= SEL_TREE { SEL_ARG{key2part2 = 2} } -- can't make quick range select
+ from this
+ call tree_or(tree3, tree4) -- creates a SEL_MERGE ot of which no index
+ merge can be constructed, but it is potentially useful, as anding it with
+ tree5= SEL_TREE { SEL_ARG{key2part1 = 3} } creates an index merge that
+ represents the formula
+ key1part1=1 AND key2part1=3 OR key2part1=3 AND key2part2=2
+ for which an index merge can be built.
+
+ Any final SEL_TREE may contains SEL_ARG trees for which no quick select
+ can be built. Such SEL_ARG trees should be removed from the range part
+ before different range scans are evaluated. Such SEL_ARG trees also should
+ be removed from all range trees of each index merge before different
+ possible index merge plans are evaluated.
+
RETURN
0 Ok, some suitable trees left
1 No tree->keys[] left.
@@ -6223,6 +7120,74 @@ static bool remove_nonrange_trees(RANGE_
}
+/*
+ Build a SEL_TREE for a disjunction out of such trees for the disjuncts
+
+ SYNOPSIS
+ tree_or()
+ param Context info for the operation
+ tree1 SEL_TREE for the first disjunct
+ tree2 SEL_TREE for the second disjunct
+
+ DESCRIPTION
+ This function builds a tree for the formula (A OR B) out of the trees
+ tree1 and tree2 that has been built for the formulas A and B respectively.
+
+ In a general case
+ tree1 represents the formula RT1 AND MT1,
+ where RT1=R1_1 AND ... AND R1_k1, MT1=M1_1 AND ... AND M1_l1;
+ tree2 represents the formula RT2 AND MT2
+ where RT2=R2_1 AND ... AND R2_k2, MT2=M2_1 and ... and M2_l2.
+
+ The function constructs the result tree according the formula
+ (RT1 OR RT2) AND (MT1 OR RT1) AND (MT2 OR RT2) AND (MT1 OR MT2)
+ that is equivalent to the formula (RT1 AND MT1) OR (RT2 AND MT2).
+
+ To limit the number of produced imerges the function considers
+ a weaker formula than the original one:
+ (RT1 AND M1_1) OR (RT2 AND M2_1)
+ that is equivalent to:
+ (RT1 OR RT2) (1)
+ AND
+ (M1_1 OR M2_1) (2)
+ AND
+ (M1_1 OR RT2) (3)
+ AND
+ (M2_1 OR RT1) (4)
+
+ For the first conjunct (1) the function builds a tree with a range part
+ and, possibly, one imerge. For the other conjuncts (2-4)the function
+ produces sets of imerges. All constructed imerges are included into the
+ result tree.
+
+ For the formula (1) the function produces the tree representing a formula
+ of the structure RT [AND M], such that:
+ - the range tree rt contains the result of oring SEL_ARG trees from rt1
+ and rt2
+ - the imerge m consists of two range trees rt1 and rt2.
+ The imerge m is added if it's not true that rt1 and rt2 must be ored
+ If rt1 and rt2 can't be ored rt is empty and only m is produced for (1).
+
+ To produce imerges for the formula (2) the function calls the function
+ imerge_list_or_list passing it the merge parts of tree1 and tree2 as
+ parameters.
+
+ To produce imerges for the formula (3) the function calls the function
+ imerge_list_or_tree passing it the imerge m1_1 and the range tree rt2 as
+ parameters. Similarly, to produce imerges for the formula (4) the function
+ calls the function imerge_list_or_tree passing it the imerge m2_1 and the
+ range tree rt1.
+
+ If rt1 is empty then the trees for (1) and (4) are empty.
+ If rt2 is empty then the trees for (1) and (3) are empty.
+ If mt1 is empty then the trees for (2) and (3) are empty.
+ If mt2 is empty then the trees for (2) and (4) are empty.
+
+ RETURN
+ The result tree for the operation if a success
+ 0 - otherwise
+*/
+
static SEL_TREE *
tree_or(RANGE_OPT_PARAM *param,SEL_TREE *tree1,SEL_TREE *tree2)
{
@@ -6238,74 +7203,100 @@ tree_or(RANGE_OPT_PARAM *param,SEL_TREE
if (tree2->type == SEL_TREE::MAYBE)
DBUG_RETURN(tree2);
- SEL_TREE *result= 0;
- key_map result_keys;
- result_keys.clear_all();
- if (sel_trees_can_be_ored(tree1, tree2, param))
+ SEL_TREE *result= NULL;
+ key_map result_keys;
+ key_map ored_keys;
+ SEL_TREE *rtree[2]= {NULL,NULL};
+ SEL_IMERGE *imerge[2]= {NULL, NULL};
+ bool no_ranges1= tree1->without_ranges();
+ bool no_ranges2= tree2->without_ranges();
+ bool no_merges1= tree1->without_imerges();
+ bool no_merges2= tree2->without_imerges();
+ if (!no_ranges1 && !no_merges2)
+ {
+ rtree[0]= new SEL_TREE(tree1, TRUE, param);
+ imerge[1]= new SEL_IMERGE(tree2->merges.head(), 0, param);
+ }
+ if (!no_ranges2 && !no_merges1)
{
- /* Join the trees key per key */
- SEL_ARG **key1,**key2,**end;
- for (key1= tree1->keys,key2= tree2->keys,end= key1+param->keys ;
- key1 != end ; key1++,key2++)
- {
- *key1=key_or(param, *key1, *key2);
- if (*key1)
+ rtree[1]= new SEL_TREE(tree2, TRUE, param);
+ imerge[0]= new SEL_IMERGE(tree1->merges.head(), 0, param);
+ }
+ bool no_imerge_from_ranges= FALSE;
+ if (!(result= new SEL_TREE()))
+ DBUG_RETURN(result);
+
+ /* Build the range part of the tree for the formula (1) */
+ if (sel_trees_can_be_ored(param, tree1, tree2, &ored_keys))
+ {
+ bool must_be_ored= sel_trees_must_be_ored(param, tree1, tree2, ored_keys);
+ no_imerge_from_ranges= must_be_ored;
+ key_map::Iterator it(ored_keys);
+ int key_no;
+ while ((key_no= it++) != key_map::Iterator::BITMAP_END)
+ {
+ SEL_ARG *key1= tree1->keys[key_no];
+ SEL_ARG *key2= tree2->keys[key_no];
+ if (!must_be_ored)
{
- result=tree1; // Added to tree1
- result_keys.set_bit(key1 - tree1->keys);
-#ifdef EXTRA_DEBUG
- if (param->alloced_sel_args < SEL_ARG::MAX_SEL_ARGS)
- (*key1)->test_use_count(*key1);
-#endif
+ key1->incr_refs();
+ key2->incr_refs();
}
+ if ((result->keys[key_no]= key_or(param, key1, key2)))
+ result->keys_map.set_bit(key_no);
}
- if (result)
- result->keys_map= result_keys;
+ result->type= tree1->type;
}
- else
+
+ if (no_imerge_from_ranges && no_merges1 && no_merges2)
{
- /* ok, two trees have KEY type but cannot be used without index merge */
- if (tree1->merges.is_empty() && tree2->merges.is_empty())
- {
- if (param->remove_jump_scans)
- {
- bool no_trees= remove_nonrange_trees(param, tree1);
- no_trees= no_trees || remove_nonrange_trees(param, tree2);
- if (no_trees)
- DBUG_RETURN(new SEL_TREE(SEL_TREE::ALWAYS));
- }
- SEL_IMERGE *merge;
- /* both trees are "range" trees, produce new index merge structure */
- if (!(result= new SEL_TREE()) || !(merge= new SEL_IMERGE()) ||
- (result->merges.push_back(merge)) ||
- (merge->or_sel_tree(param, tree1)) ||
- (merge->or_sel_tree(param, tree2)))
+ if (result->keys_map.is_clear_all())
+ result->type= SEL_TREE::ALWAYS;
+ DBUG_RETURN(result);
+ }
+
+ SEL_IMERGE *imerge_from_ranges;
+ if (!(imerge_from_ranges= new SEL_IMERGE()))
+ result= NULL;
+ else if (!no_ranges1 && !no_ranges2 && !no_imerge_from_ranges)
+ {
+ /* Build the imerge part of the tree for the formula (1) */
+ SEL_TREE *rt1= tree1;
+ SEL_TREE *rt2= tree2;
+ if (!no_merges1)
+ rt1= new SEL_TREE(tree1, TRUE, param);
+ if (!no_merges2)
+ rt2= new SEL_TREE(tree2, TRUE, param);
+ if (!rt1 || !rt2 ||
+ result->merges.push_back(imerge_from_ranges) ||
+ imerge_from_ranges->or_sel_tree(param, rt1) ||
+ imerge_from_ranges->or_sel_tree(param, rt2))
result= NULL;
- else
- result->type= tree1->type;
- }
- else if (!tree1->merges.is_empty() && !tree2->merges.is_empty())
- {
- if (imerge_list_or_list(param, &tree1->merges, &tree2->merges))
- result= new SEL_TREE(SEL_TREE::ALWAYS);
- else
- result= tree1;
- }
- else
- {
- /* one tree is index merge tree and another is range tree */
- if (tree1->merges.is_empty())
- swap_variables(SEL_TREE*, tree1, tree2);
-
- if (param->remove_jump_scans && remove_nonrange_trees(param, tree2))
- DBUG_RETURN(new SEL_TREE(SEL_TREE::ALWAYS));
- /* add tree2 to tree1->merges, checking if it collapses to ALWAYS */
- if (imerge_list_or_tree(param, &tree1->merges, tree2))
- result= new SEL_TREE(SEL_TREE::ALWAYS);
- else
- result= tree1;
- }
}
+ if (!result)
+ DBUG_RETURN(result);
+
+ result->type= tree1->type;
+
+ if (!no_merges1 && !no_merges2 &&
+ !imerge_list_or_list(param, &tree1->merges, &tree2->merges))
+ {
+ /* Build the imerges for the formula (2) */
+ imerge_list_and_list(&result->merges, &tree1->merges);
+ }
+
+ /* Build the imerges for the formulas (3) and (4) */
+ for (uint i=0; i < 2; i++)
+ {
+ List<SEL_IMERGE> merges;
+ SEL_TREE *rt= rtree[i];
+ SEL_IMERGE *im= imerge[1-i];
+
+ if (rt && im && !merges.push_back(im) &&
+ !imerge_list_or_tree(param, &merges, rt))
+ imerge_list_and_list(&result->merges, &merges);
+ }
+
DBUG_RETURN(result);
}
@@ -6558,7 +7549,7 @@ key_or(RANGE_OPT_PARAM *param, SEL_ARG *
{
swap_variables(SEL_ARG *,key1,key2);
}
- if (key1->use_count > 0 || !(key1=key1->clone_tree(param)))
+ if (key1->use_count > 0 && !(key1=key1->clone_tree(param)))
return 0; // OOM
}
@@ -7237,11 +8228,7 @@ static ulong count_key_part_usage(SEL_AR
void SEL_ARG::test_use_count(SEL_ARG *root)
{
uint e_count=0;
- if (this == root && use_count != 1)
- {
- sql_print_information("Use_count: Wrong count %lu for root",use_count);
- return;
- }
+
if (this->type != SEL_ARG::KEY_RANGE)
return;
for (SEL_ARG *pos=first(); pos ; pos=pos->next)
@@ -7344,12 +8331,13 @@ check_quick_select(PARAM *param,uint idx
param->table->quick_n_ranges[key]= param->n_ranges;
param->table->quick_condition_rows=
min(param->table->quick_condition_rows, records);
+ param->table->quick_rows[key]= records;
}
/*
Need to save quick_rows in any case as it is used when calculating
cost of ROR intersection:
*/
- param->table->quick_rows[key]=records;
+ param->quick_rows[key]= records;
if (cpk_scan)
param->is_ror_scan= TRUE;
}
=== modified file 'sql/sql_list.h'
--- a/sql/sql_list.h 2009-09-15 10:46:35 +0000
+++ b/sql/sql_list.h 2009-10-12 04:59:34 +0000
@@ -168,6 +168,14 @@ public:
{
if (!list->is_empty())
{
+#if 0
+#else
+ if (is_empty())
+ {
+ *this= *list;
+ return;
+ }
+#endif
*last= list->first;
last= list->last;
elements+= list->elements;
1
0
[Maria-developers] Buildbot scheduling problem: makedist waiting for newtest
by Sergey Petrunya 12 Oct '09
by Sergey Petrunya 12 Oct '09
12 Oct '09
Hi!
One can now frequently observe buildbot to be in this state:
hardy-amd64-makedist (idle with 1 pending)
hardy-amd64-newtest (building with 1 pending)
I interpret it as follows: makedist is waiting for newtest to complete. The
problem with that is that when one is working on a windows problem, he has
to wait for newtest to complete for every push.
The only was I see to fix this is to have a dedicated buildslave for makedist
jobs, i.e. with current settings hardy should run two buildslaves, one working
on makedist and the other on newtest.
Is there a better way to address this?
BR
Sergey
--
Sergey Petrunia, Software Developer
Monty Program AB, http://askmonty.org
Blog: http://s.petrunia.net/blog
2
1
[Maria-developers] Rev 2782: Make devenv print the build log to stdout (otherwise buildbot times out in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 11 Oct '09
by Sergey Petrunya 11 Oct '09
11 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2782
revision-id: psergey(a)askmonty.org-20091011202508-f2e0zh96a4kuhin2
parent: psergey(a)askmonty.org-20091011192724-lp4g69077fz57rg9
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Mon 2009-10-12 00:25:08 +0400
message:
Make devenv print the build log to stdout (otherwise buildbot times out
while waiting for output): attempt 2
=== modified file 'win/make_mariadb_win_dist'
--- a/win/make_mariadb_win_dist 2009-10-11 19:27:24 +0000
+++ b/win/make_mariadb_win_dist 2009-10-11 20:25:08 +0000
@@ -19,8 +19,8 @@
cmake -G "Visual Studio 9 2008"
-devenv MySQL.sln /build RelWithDebInfo /out con
-devenv MySQL.sln /build Debug /out con
+devenv.com MySQL.sln /build RelWithDebInfo
+devenv.com MySQL.sln /build Debug
# TODO extract version number
VER=`cat configure.in |
1
0
[Maria-developers] Rev 2781: Make devenv print the build log to stdout (otherwise buildbot times out in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 11 Oct '09
by Sergey Petrunya 11 Oct '09
11 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2781
revision-id: psergey(a)askmonty.org-20091011192724-lp4g69077fz57rg9
parent: knielsen(a)knielsen-hq.org-20091011153837-tlqc8fd30hkjzyv5
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Sun 2009-10-11 23:27:24 +0400
message:
Make devenv print the build log to stdout (otherwise buildbot times out
while waiting for output)
=== modified file 'win/make_mariadb_win_dist'
--- a/win/make_mariadb_win_dist 2009-10-11 10:21:49 +0000
+++ b/win/make_mariadb_win_dist 2009-10-11 19:27:24 +0000
@@ -19,8 +19,8 @@
cmake -G "Visual Studio 9 2008"
-devenv MySQL.sln /build RelWithDebInfo
-devenv MySQL.sln /build Debug
+devenv MySQL.sln /build RelWithDebInfo /out con
+devenv MySQL.sln /build Debug /out con
# TODO extract version number
VER=`cat configure.in |
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2780)
by knielsen@knielsen-hq.org 11 Oct '09
by knielsen@knielsen-hq.org 11 Oct '09
11 Oct '09
#At lp:maria
2780 knielsen(a)knielsen-hq.org 2009-10-11
Modify the `test-bt` target for OurDelta packaging.
Remove the run of the parts suite (as it is now included in default list of suite).
Add run of PBXT.
modified:
Makefile.am
=== modified file 'Makefile.am'
--- a/Makefile.am 2009-10-02 09:40:03 +0000
+++ b/Makefile.am 2009-10-11 15:38:37 +0000
@@ -156,6 +156,8 @@ test-bt:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ps --force --timer \
--skip-ndbcluster --ps-protocol
+ -cd mysql-test ; MTR_BUILD_THREAD=auto \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=PBXT --mysqld=--default-storage-engine=pbxt --suite=pbxt
-if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \
cd mysql-test ; \
MTR_BUILD_THREAD=auto \
@@ -172,8 +174,6 @@ test-bt:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=funcs2 --suite=funcs_2
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=partitions --suite=parts
- -cd mysql-test ; MTR_BUILD_THREAD=auto \
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=stress --suite=stress
-cd mysql-test ; MTR_BUILD_THREAD=auto \
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=jp --suite=jp
1
0
[Maria-developers] Rev 2779: Add win/make_mariadb_win_dist which is to be used to make windows in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 11 Oct '09
by Sergey Petrunya 11 Oct '09
11 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2779
revision-id: psergey(a)askmonty.org-20091011102149-78jtmnc9s8okq7a0
parent: knielsen(a)knielsen-hq.org-20091011093610-q411mulr5zdckdam
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Sun 2009-10-11 14:21:49 +0400
message:
Add win/make_mariadb_win_dist which is to be used to make windows
binary distribution zips.
=== modified file 'win/Makefile.am'
--- a/win/Makefile.am 2009-10-08 19:11:48 +0000
+++ b/win/Makefile.am 2009-10-11 10:21:49 +0000
@@ -17,7 +17,7 @@
EXTRA_DIST = build-vs71.bat build-vs8.bat build-vs8_x64.bat build-vs9.bat \
build-vs9_x64.bat configure.js README mysql_manifest.cmake \
create_manifest.js create_def_file.js build-nmake.bat \
- build-nmake-x64.bat configure-mariadb.sh
+ build-nmake-x64.bat configure-mariadb.sh make_mariadb_win_dist
# Don't update the files from bitkeeper
%::SCCS/s.%
=== added file 'win/make_mariadb_win_dist'
--- a/win/make_mariadb_win_dist 1970-01-01 00:00:00 +0000
+++ b/win/make_mariadb_win_dist 2009-10-11 10:21:49 +0000
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+#
+# This is a script that one needs to run in the source tarball to build
+# a MariaDB release for Windows
+#
+set -e
+
+if [ ! -d win/data ] ; then
+ echo This doesnt seem to be source tarball.
+ echo This script should be run from the top directory of the source tarball
+ echo that was produced by 'make dist'
+ exit 1;
+fi
+
+set -x
+
+win/configure-mariadb.sh
+
+cmake -G "Visual Studio 9 2008"
+
+devenv MySQL.sln /build RelWithDebInfo
+devenv MySQL.sln /build Debug
+
+# TODO extract version number
+VER=`cat configure.in |
+ perl -e 'while (<>) { if (/^AM_INIT_AUTOMAKE\([a-z ]*, *([0-9a-z\.-]+)/) { print "$1\n"; exit(0)} } ; exit 1'`
+
+echo Version string: $VER.
+
+ZIPNAME=mariadb-$VER-win32-noinstall
+ZIPFILE="$ZIPNAME.zip"
+echo sh -x scripts/make_win_bin_dist $ZIPFILE
+
+rm -rf unpack
+mkdir unpack
+
+cd unpack
+wget -O base.list.gz \
+http://askmonty.org/wiki/images/6/6c/Mariadb-5.1-pre-beta-file-list.txt.gz
+gunzip base.list.gz
+unzip ../$ZIPFILE
+(cd $ZIPNAME; /bin/find . | sort ) > new.list
+set +x
+diff -u base.list new.list || true
+RES=$?
+set -x
+cd ..
+
+rm -rf unpack
+echo "$ZIPFILE is the Windows noinstall binary zip"
+
+if [ $RES ] ; then
+ echo "Archive contents differ from the standard file list, check the diff output above"
+else
+ echo "Archive contents match the standard list"
+fi
+
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2778)
by knielsen@knielsen-hq.org 11 Oct '09
by knielsen@knielsen-hq.org 11 Oct '09
11 Oct '09
#At lp:maria
2778 knielsen(a)knielsen-hq.org 2009-10-11
Fix test failures in variables-big in --embedded.
Problem was the use of SHOW PROCESSLIST. This is not fully functional in
embedded server, STATE is hardcoded to "Writing to net".
Fixed using --replace_result for STATE.
modified:
mysql-test/t/variables-big.test
=== modified file 'mysql-test/t/variables-big.test'
--- a/mysql-test/t/variables-big.test 2009-10-03 23:20:51 +0000
+++ b/mysql-test/t/variables-big.test 2009-10-11 09:36:10 +0000
@@ -38,18 +38,24 @@
--disable_warnings
SET SESSION transaction_prealloc_size=1024*1024*1024*1;
--replace_column 1 <Id> 6 <Time>
+# Embedded server is hardcoded to show "Writing to net" as STATE.
+--replace_result "Writing to net" "NULL"
SHOW PROCESSLIST;
SET SESSION transaction_prealloc_size=1024*1024*1024*2;
--replace_column 1 <Id> 6 <Time>
+--replace_result "Writing to net" "NULL"
SHOW PROCESSLIST;
SET SESSION transaction_prealloc_size=1024*1024*1024*3;
--replace_column 1 <Id> 6 <Time>
+--replace_result "Writing to net" "NULL"
SHOW PROCESSLIST;
SET SESSION transaction_prealloc_size=1024*1024*1024*4;
--replace_column 1 <Id> 6 <Time>
+--replace_result "Writing to net" "NULL"
SHOW PROCESSLIST;
SET SESSION transaction_prealloc_size=1024*1024*1024*5;
--replace_column 1 <Id> 6 <Time>
+--replace_result "Writing to net" "NULL"
SHOW PROCESSLIST;
--enable_warnings
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2777) Bug#37635
by knielsen@knielsen-hq.org 11 Oct '09
by knielsen@knielsen-hq.org 11 Oct '09
11 Oct '09
#At lp:maria
2777 knielsen(a)knielsen-hq.org 2009-10-11
Bug#37635: Test read_many_rows_innodb is failing w/ wrong error message (lock_wait_timeout)
The test is supposed to provoke a deadlock, to test a crash of the server in
some deadlock scenarios.
The problem is that in recent version of MySQL, no deadlock occurs. It is not
clear why a deadlock should be expected. One transaction does an insert+delete
on primary key value 1 in table t2. The other transaction does an insert on
primary key value 123. There seems no reason that these should conflict, so
there is no deadlock.
(Presumably an earlier version did get a deadlock due to maybe taking excessive
locks on the insert+delete of primary key value 1. The table has only one row,
so maybe a different locking was used ("Impossible WHERE noticed after reading
const tables"))
Fix is to have transaction 1 lock PK 1 and transaction 2 lock PK 123. Then have
transaction 2 access PK 1 (wait) and transaction 1 access PK 123 (deadlock).
It has been checked that this modified test case still crashes the server in
the same way prior to fix of the original bug (Bug#24989).
modified:
mysql-test/include/read_many_rows.inc
mysql-test/r/read_many_rows_innodb.result
per-file messages:
mysql-test/include/read_many_rows.inc
Provoke deadlock on same PK value in the two transactions to ensure that the
deadlock does occur independently on whatever execution plan is chosen.
mysql-test/r/read_many_rows_innodb.result
Result file update.
=== modified file 'mysql-test/include/read_many_rows.inc'
--- a/mysql-test/include/read_many_rows.inc 2007-08-05 05:36:54 +0000
+++ b/mysql-test/include/read_many_rows.inc 2009-10-11 09:06:55 +0000
@@ -71,8 +71,8 @@ CREATE TRIGGER t1_bi before INSERT
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '40001' SET @a:= 'deadlock';
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
- INSERT INTO t2 (f2) VALUES (1);
- DELETE FROM t2 WHERE f2 = 1;
+ INSERT INTO t2 (f2) VALUES (NEW.f1);
+ DELETE FROM t2 WHERE f2 = NEW.f1;
END;|
CREATE PROCEDURE proc24989()
@@ -109,7 +109,7 @@ send insert into t1 values(1);
connection con1;
--sleep 1
-insert into t1 values(1);
+insert into t1 values(123);
connection con2;
--error 1213
@@ -130,7 +130,7 @@ send call proc24989();
connection con1;
--sleep 1
-insert into t1 values(1);
+insert into t1 values(123);
connection con2;
reap;
@@ -150,7 +150,7 @@ send call proc24989_2();
connection con1;
--sleep 1
-insert into t1 values(1);
+insert into t1 values(123);
commit;
connection con2;
=== modified file 'mysql-test/r/read_many_rows_innodb.result'
--- a/mysql-test/r/read_many_rows_innodb.result 2007-08-05 05:36:54 +0000
+++ b/mysql-test/r/read_many_rows_innodb.result 2009-10-11 09:06:55 +0000
@@ -40,8 +40,8 @@ ON t1 FOR EACH ROW
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '40001' SET @a:= 'deadlock';
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
-INSERT INTO t2 (f2) VALUES (1);
-DELETE FROM t2 WHERE f2 = 1;
+INSERT INTO t2 (f2) VALUES (NEW.f1);
+DELETE FROM t2 WHERE f2 = NEW.f1;
END;|
CREATE PROCEDURE proc24989()
BEGIN
@@ -63,7 +63,7 @@ insert into t1 values(1);
start transaction;
insert into t2 values(123);
insert into t1 values(1);
-insert into t1 values(1);
+insert into t1 values(123);
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
select @a;
@a
@@ -76,7 +76,7 @@ insert into t1 values(1);
start transaction;
insert into t2 values(123);
call proc24989();
-insert into t1 values(1);
+insert into t1 values(123);
select @a,@b;
@a @b
exception deadlock
@@ -88,7 +88,7 @@ insert into t1 values(1);
start transaction;
insert into t2 values(123);
call proc24989_2();
-insert into t1 values(1);
+insert into t1 values(123);
commit;
exception
Outer handler
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2776)
by knielsen@knielsen-hq.org 10 Oct '09
by knielsen@knielsen-hq.org 10 Oct '09
10 Oct '09
#At lp:maria
2776 knielsen(a)knielsen-hq.org 2009-10-10
Fix failures in the funcs_1 test suite.
Some result updates necessary due to extra tables and columns added in
information_schema in MariaDB (XtraDB, PBXT, microsec_process).
Also fix bad merge of two result files; apparently the test case was merged,
but the result file was not.
modified:
mysql-test/suite/funcs_1/datadict/processlist_priv.inc
mysql-test/suite/funcs_1/datadict/processlist_val.inc
mysql-test/suite/funcs_1/r/is_columns_is.result
mysql-test/suite/funcs_1/r/is_tables_is.result
mysql-test/suite/funcs_1/r/is_tables_myisam.result
mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result
mysql-test/suite/funcs_1/r/processlist_val_no_prot.result
mysql-test/suite/funcs_1/t/is_columns_is.test
per-file messages:
mysql-test/suite/funcs_1/datadict/processlist_priv.inc
Handle the new TIME_MS column in information_schema.processlist.
mysql-test/suite/funcs_1/datadict/processlist_val.inc
Handle the new TIME_MS column in information_schema.processlist.
mysql-test/suite/funcs_1/r/is_columns_is.result
Handle new tables in information_schema.
mysql-test/suite/funcs_1/r/is_tables_is.result
Handle new tables in information_schema.
mysql-test/suite/funcs_1/r/is_tables_myisam.result
Fix previous bad merge; apparently this file was not merged along with test changes.
mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result
Handle the new TIME_MS column in information_schema.processlist.
mysql-test/suite/funcs_1/r/processlist_val_no_prot.result
Fix previous bad merge; apparently this file was not merged along with test changes.
Also handle the new TIME_MS column in INFORMATION_SCHEMA.PROCESSLIST.
mysql-test/suite/funcs_1/t/is_columns_is.test
Since result file includes PBXT information_schema tables, we need PBXT to run this test.
=== modified file 'mysql-test/suite/funcs_1/datadict/processlist_priv.inc'
--- a/mysql-test/suite/funcs_1/datadict/processlist_priv.inc 2009-09-07 20:50:10 +0000
+++ b/mysql-test/suite/funcs_1/datadict/processlist_priv.inc 2009-10-10 09:59:06 +0000
@@ -66,7 +66,7 @@
let $table= processlist;
#
# columns of the information_schema table e.g. to use in a select.
-let $columns= ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO;
+let $columns= ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS;
#
# Where clause for an update.
let $update_where= WHERE id=1 ;
@@ -137,11 +137,11 @@ WHERE DB = 'information_schema' AND COMM
--source include/wait_condition.inc
--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
eval SHOW CREATE TABLE $table;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
eval SHOW $table;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
eval SELECT * FROM $table $select_where ORDER BY id;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
eval SELECT $columns FROM $table $select_where ORDER BY id;
--source suite/funcs_1/datadict/datadict_priv.inc
--real_sleep 0.3
@@ -157,11 +157,11 @@ connection con100;
# but "ddicttestuser1" must not see anything of the root session.
--replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
eval SHOW CREATE TABLE $table;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
eval SHOW $table;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
eval SELECT * FROM $table $select_where ORDER BY id;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
eval SELECT $columns FROM $table $select_where ORDER BY id;
--source suite/funcs_1/datadict/datadict_priv.inc
--real_sleep 0.3
@@ -183,9 +183,9 @@ GRANT PROCESS ON *.* TO ddicttestuser1@'
--echo ####################################################################################
connection con100;
SHOW GRANTS;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -195,9 +195,9 @@ SELECT * FROM information_schema.process
--echo ####################################################################################
connect (con101,localhost,ddicttestuser1,ddictpass,information_schema);
SHOW GRANTS;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -217,9 +217,9 @@ GRANT PROCESS ON *.* TO ''@'localhost';
--echo ####################################################################################
connect (anonymous1,localhost,"''",,information_schema);
SHOW GRANTS;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -239,9 +239,9 @@ connect (con102,localhost,ddicttestuser1
--echo ddicttestuser1 are visible.
--echo ####################################################################################
SHOW GRANTS;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -264,10 +264,10 @@ SHOW GRANTS FOR ''@'localhost';
if ($fixed_bug_30395)
{
# Bug#30395 strange results after REVOKE PROCESS ON *.* FROM ...
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
}
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -286,9 +286,9 @@ connect (con103,localhost,ddicttestuser1
--echo Only the processes of ddicttestuser1 user are visible.
--echo ####################################################################################
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -308,9 +308,9 @@ connect (con104,localhost,ddicttestuser1
--echo Only the processes of ddicttestuser1 are visible.
--echo ####################################################################################
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -355,9 +355,9 @@ connect (con200,localhost,ddicttestuser2
--echo ddicttestuser2 has now the PROCESS privilege and sees all connections
--echo ####################################################################################
SHOW GRANTS FOR 'ddicttestuser2'@'localhost';
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -376,9 +376,9 @@ connect (con201,localhost,ddicttestuser2
--echo ddicttestuser2 has no more the PROCESS privilege and can only see own connects
--echo ####################################################################################
SHOW GRANTS;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -399,9 +399,9 @@ connect (con107,localhost,ddicttestuser1
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
--error ER_ACCESS_DENIED_ERROR
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
@@ -423,9 +423,9 @@ connect (con108,localhost,ddicttestuser1
--echo Therefore the missing SELECT privilege does not affect SELECTs on PROCESSLIST.
--echo ####################################################################################
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SHOW processlist;
---replace_column 1 ID 3 HOST_NAME 6 TIME
+--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
SELECT * FROM information_schema.processlist;
--real_sleep 0.3
=== modified file 'mysql-test/suite/funcs_1/datadict/processlist_val.inc'
--- a/mysql-test/suite/funcs_1/datadict/processlist_val.inc 2008-10-10 15:28:41 +0000
+++ b/mysql-test/suite/funcs_1/datadict/processlist_val.inc 2009-10-10 09:59:06 +0000
@@ -93,9 +93,9 @@ echo
# - INFO must contain the corresponding SHOW/SELECT PROCESSLIST
#
# 1. Just dump what we get
---replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
+--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS>
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
---replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
+--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS>
SHOW FULL PROCESSLIST;
#
# Determine the connection id of the current connection (default)
@@ -129,7 +129,7 @@ SELECT @my_info = '$my_statement'
# 6. TIME must have a reasonable value
SELECT COUNT(*) = 1 AS "Has TIME a reasonable value?"
FROM INFORMATION_SCHEMA.PROCESSLIST
-WHERE ID = @default_id AND 0 <= TIME < 10;
+WHERE ID = @default_id AND 0 <= TIME < 10 AND 0 <= TIME_MS < 10000;
echo
@@ -166,7 +166,7 @@ let $wait_condition= SELECT COUNT(*) = 1
WHERE COMMAND = 'Sleep' AND USER = 'test_user';
--source include/wait_condition.inc
# 1. Just dump what we get
---replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
+--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS>
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
SHOW FULL PROCESSLIST;
@@ -211,7 +211,7 @@ echo
# ----- switch to connection con1 (user = test_user) -----
;
connection con1;
---replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
+--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS>
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
SHOW FULL PROCESSLIST;
@@ -245,7 +245,7 @@ echo
;
connection con2;
# Just dump what we get
---replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
+--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS>
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
SHOW FULL PROCESSLIST;
@@ -305,7 +305,7 @@ WHERE ID = @test_user_con2_id AND Comman
AND State = 'User sleep' AND INFO IS NOT NULL ;
--source include/wait_condition.inc
# 1. Just dump what we get
---replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
+--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS>
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
SHOW FULL PROCESSLIST;
@@ -376,7 +376,7 @@ let $wait_condition= SELECT COUNT(*) FRO
#
# Expect to see the state 'Locked' for the third connection because the SELECT
# collides with the WRITE TABLE LOCK.
---replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME>
+--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS>
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
UNLOCK TABLES;
#
@@ -435,7 +435,7 @@ echo
# SHOW FULL PROCESSLIST Complete statement
# SHOW PROCESSLIST statement truncated after 100 char
;
---replace_column 1 <ID> 3 <HOST_NAME> 5 <COMMAND> 6 <TIME> 7 <STATE>
+--replace_column 1 <ID> 3 <HOST_NAME> 5 <COMMAND> 6 <TIME> 7 <STATE> 9 <TIME_MS>
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
--replace_column 1 <ID> 3 <HOST_NAME> 5 <COMMAND> 6 <TIME> 7 <STATE>
SHOW FULL PROCESSLIST;
=== modified file 'mysql-test/suite/funcs_1/r/is_columns_is.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_is.result 2009-03-18 12:52:31 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_is.result 2009-10-10 09:59:06 +0000
@@ -113,6 +113,96 @@ NULL information_schema GLOBAL_STATUS VA
NULL information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
NULL information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
+NULL information_schema INNODB_BUFFER_POOL_PAGES fix_count 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES flush_type 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES lru_position 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES page_no 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES page_type 1 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+NULL information_schema INNODB_BUFFER_POOL_PAGES space_id 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB compressed 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB fix_count 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB flush_type 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB lru_position 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB next_page_no 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB page_no 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB part_len 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB space_id 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX accessed 9 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX data_size 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX dirty 11 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX fix_count 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX flush_type 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX hashed 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX index_name 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX lru_position 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX modified 10 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX n_recs 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX old 12 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX page_no 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX schema_name 1 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX space_id 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX table_name 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+NULL information_schema INNODB_CMP compress_ops 2 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMP compress_ops_ok 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMP compress_time 4 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMP page_size 1 0 NO int NULL NULL 10 0 NULL NULL int(5) select
+NULL information_schema INNODB_CMP uncompress_ops 5 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMP uncompress_time 6 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMPMEM pages_free 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMPMEM pages_used 2 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMPMEM page_size 1 0 NO int NULL NULL 10 0 NULL NULL int(5) select
+NULL information_schema INNODB_CMPMEM relocation_ops 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema INNODB_CMPMEM relocation_time 5 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMPMEM_RESET pages_free 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMPMEM_RESET pages_used 2 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMPMEM_RESET page_size 1 0 NO int NULL NULL 10 0 NULL NULL int(5) select
+NULL information_schema INNODB_CMPMEM_RESET relocation_ops 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema INNODB_CMPMEM_RESET relocation_time 5 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMP_RESET compress_ops 2 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMP_RESET compress_ops_ok 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMP_RESET compress_time 4 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMP_RESET page_size 1 0 NO int NULL NULL 10 0 NULL NULL int(5) select
+NULL information_schema INNODB_CMP_RESET uncompress_ops 5 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_CMP_RESET uncompress_time 6 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema INNODB_INDEX_STATS fields 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_INDEX_STATS index_name 2 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
+NULL information_schema INNODB_INDEX_STATS index_size 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_INDEX_STATS leaf_pages 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_INDEX_STATS row_per_keys 4 NO varchar 256 768 NULL NULL utf8 utf8_general_ci varchar(256) select
+NULL information_schema INNODB_INDEX_STATS table_name 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
+NULL information_schema INNODB_LOCKS lock_data 10 NULL YES varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
+NULL information_schema INNODB_LOCKS lock_id 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
+NULL information_schema INNODB_LOCKS lock_index 6 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
+NULL information_schema INNODB_LOCKS lock_mode 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+NULL information_schema INNODB_LOCKS lock_page 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_LOCKS lock_rec 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_LOCKS lock_space 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_LOCKS lock_table 5 NO varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
+NULL information_schema INNODB_LOCKS lock_trx_id 2 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
+NULL information_schema INNODB_LOCKS lock_type 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
+NULL information_schema INNODB_LOCK_WAITS blocking_lock_id 4 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
+NULL information_schema INNODB_LOCK_WAITS blocking_trx_id 3 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
+NULL information_schema INNODB_LOCK_WAITS requested_lock_id 2 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
+NULL information_schema INNODB_LOCK_WAITS requesting_trx_id 1 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
+NULL information_schema INNODB_RSEG curr_size 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG max_size 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG page_no 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG rseg_id 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG space_id 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG zip_size 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TABLE_STATS clust_size 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TABLE_STATS modified 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TABLE_STATS other_size 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TABLE_STATS rows 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TABLE_STATS table_name 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
+NULL information_schema INNODB_TRX trx_id 1 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
+NULL information_schema INNODB_TRX trx_mysql_thread_id 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TRX trx_query 8 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
+NULL information_schema INNODB_TRX trx_requested_lock_id 4 NULL YES varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
+NULL information_schema INNODB_TRX trx_started 3 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
+NULL information_schema INNODB_TRX trx_state 2 NO varchar 13 39 NULL NULL utf8 utf8_general_ci varchar(13) select
+NULL information_schema INNODB_TRX trx_wait_started 5 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+NULL information_schema INNODB_TRX trx_weight 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
NULL information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
@@ -150,6 +240,9 @@ NULL information_schema PARTITIONS TABLE
NULL information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
NULL information_schema PARTITIONS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
+NULL information_schema PBXT_STATISTICS ID 1 0 NO int NULL NULL 10 0 NULL NULL int(4) select
+NULL information_schema PBXT_STATISTICS Name 2 NO varchar 40 120 NULL NULL utf8 utf8_general_ci varchar(40) select
+NULL information_schema PBXT_STATISTICS Value 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(8) select
NULL information_schema PLUGINS PLUGIN_AUTHOR 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema PLUGINS PLUGIN_DESCRIPTION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
NULL information_schema PLUGINS PLUGIN_LIBRARY 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
@@ -167,6 +260,7 @@ NULL information_schema PROCESSLIST ID 1
NULL information_schema PROCESSLIST INFO 8 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
NULL information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema PROCESSLIST TIME 6 0 NO int NULL NULL 10 0 NULL NULL int(7) select
+NULL information_schema PROCESSLIST TIME_MS 9 0.000 NO decimal NULL NULL 22 3 NULL NULL decimal(22,3) select
NULL information_schema PROCESSLIST USER 2 NO varchar 16 48 NULL NULL utf8 utf8_general_ci varchar(16) select
NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
@@ -300,6 +394,10 @@ NULL information_schema VIEWS TABLE_CATA
NULL information_schema VIEWS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema VIEWS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema VIEWS VIEW_DEFINITION 4 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
+NULL information_schema XTRADB_ENHANCEMENTS comment 3 NO varchar 100 300 NULL NULL utf8 utf8_general_ci varchar(100) select
+NULL information_schema XTRADB_ENHANCEMENTS description 2 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
+NULL information_schema XTRADB_ENHANCEMENTS link 4 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
+NULL information_schema XTRADB_ENHANCEMENTS name 1 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
##########################################################################
# Show the quotient of CHARACTER_OCTET_LENGTH and CHARACTER_MAXIMUM_LENGTH
##########################################################################
@@ -340,6 +438,7 @@ ORDER BY CHARACTER_SET_NAME, COLLATION_N
COL_CML DATA_TYPE CHARACTER_SET_NAME COLLATION_NAME
NULL bigint NULL NULL
NULL datetime NULL NULL
+NULL decimal NULL NULL
NULL int NULL NULL
--> CHAR(0) is allowed (see manual), and here both CHARACHTER_* values
--> are 0, which is intended behavior, and the result of 0 / 0 IS NULL
@@ -468,6 +567,96 @@ NULL information_schema FILES CHECKSUM b
3.0000 information_schema GLOBAL_STATUS VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
3.0000 information_schema GLOBAL_VARIABLES VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema GLOBAL_VARIABLES VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
+3.0000 information_schema INNODB_BUFFER_POOL_PAGES page_type varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema INNODB_BUFFER_POOL_PAGES space_id bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES page_no bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES lru_position bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES fix_count bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES flush_type bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB space_id bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB page_no bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB compressed bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB part_len bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB next_page_no bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB lru_position bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB fix_count bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB flush_type bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema INNODB_BUFFER_POOL_PAGES_INDEX schema_name varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema INNODB_BUFFER_POOL_PAGES_INDEX table_name varchar 64 192 utf8 utf8_general_ci varchar(64)
+3.0000 information_schema INNODB_BUFFER_POOL_PAGES_INDEX index_name varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX space_id bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX page_no bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX n_recs bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX data_size bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX hashed bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX accessed bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX modified bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX dirty bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX old bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX lru_position bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX fix_count bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX flush_type bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_CMP page_size int NULL NULL NULL NULL int(5)
+NULL information_schema INNODB_CMP compress_ops int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMP compress_ops_ok int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMP compress_time int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMP uncompress_ops int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMP uncompress_time int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMPMEM page_size int NULL NULL NULL NULL int(5)
+NULL information_schema INNODB_CMPMEM pages_used int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMPMEM pages_free int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMPMEM relocation_ops bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema INNODB_CMPMEM relocation_time int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMPMEM_RESET page_size int NULL NULL NULL NULL int(5)
+NULL information_schema INNODB_CMPMEM_RESET pages_used int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMPMEM_RESET pages_free int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMPMEM_RESET relocation_ops bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema INNODB_CMPMEM_RESET relocation_time int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMP_RESET page_size int NULL NULL NULL NULL int(5)
+NULL information_schema INNODB_CMP_RESET compress_ops int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMP_RESET compress_ops_ok int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMP_RESET compress_time int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMP_RESET uncompress_ops int NULL NULL NULL NULL int(11)
+NULL information_schema INNODB_CMP_RESET uncompress_time int NULL NULL NULL NULL int(11)
+3.0000 information_schema INNODB_INDEX_STATS table_name varchar 192 576 utf8 utf8_general_ci varchar(192)
+3.0000 information_schema INNODB_INDEX_STATS index_name varchar 192 576 utf8 utf8_general_ci varchar(192)
+NULL information_schema INNODB_INDEX_STATS fields bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema INNODB_INDEX_STATS row_per_keys varchar 256 768 utf8 utf8_general_ci varchar(256)
+NULL information_schema INNODB_INDEX_STATS index_size bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_INDEX_STATS leaf_pages bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema INNODB_LOCKS lock_id varchar 81 243 utf8 utf8_general_ci varchar(81)
+3.0000 information_schema INNODB_LOCKS lock_trx_id varchar 18 54 utf8 utf8_general_ci varchar(18)
+3.0000 information_schema INNODB_LOCKS lock_mode varchar 32 96 utf8 utf8_general_ci varchar(32)
+3.0000 information_schema INNODB_LOCKS lock_type varchar 32 96 utf8 utf8_general_ci varchar(32)
+3.0000 information_schema INNODB_LOCKS lock_table varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
+3.0000 information_schema INNODB_LOCKS lock_index varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
+NULL information_schema INNODB_LOCKS lock_space bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_LOCKS lock_page bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_LOCKS lock_rec bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema INNODB_LOCKS lock_data varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
+3.0000 information_schema INNODB_LOCK_WAITS requesting_trx_id varchar 18 54 utf8 utf8_general_ci varchar(18)
+3.0000 information_schema INNODB_LOCK_WAITS requested_lock_id varchar 81 243 utf8 utf8_general_ci varchar(81)
+3.0000 information_schema INNODB_LOCK_WAITS blocking_trx_id varchar 18 54 utf8 utf8_general_ci varchar(18)
+3.0000 information_schema INNODB_LOCK_WAITS blocking_lock_id varchar 81 243 utf8 utf8_general_ci varchar(81)
+NULL information_schema INNODB_RSEG rseg_id bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_RSEG space_id bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_RSEG zip_size bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_RSEG page_no bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_RSEG max_size bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_RSEG curr_size bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema INNODB_TABLE_STATS table_name varchar 192 576 utf8 utf8_general_ci varchar(192)
+NULL information_schema INNODB_TABLE_STATS rows bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_TABLE_STATS clust_size bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_TABLE_STATS other_size bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_TABLE_STATS modified bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema INNODB_TRX trx_id varchar 18 54 utf8 utf8_general_ci varchar(18)
+3.0000 information_schema INNODB_TRX trx_state varchar 13 39 utf8 utf8_general_ci varchar(13)
+NULL information_schema INNODB_TRX trx_started datetime NULL NULL NULL NULL datetime
+3.0000 information_schema INNODB_TRX trx_requested_lock_id varchar 81 243 utf8 utf8_general_ci varchar(81)
+NULL information_schema INNODB_TRX trx_wait_started datetime NULL NULL NULL NULL datetime
+NULL information_schema INNODB_TRX trx_weight bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_TRX trx_mysql_thread_id bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema INNODB_TRX trx_query varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
@@ -505,6 +694,9 @@ NULL information_schema PARTITIONS CHECK
3.0000 information_schema PARTITIONS PARTITION_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
3.0000 information_schema PARTITIONS NODEGROUP varchar 12 36 utf8 utf8_general_ci varchar(12)
3.0000 information_schema PARTITIONS TABLESPACE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema PBXT_STATISTICS ID int NULL NULL NULL NULL int(4)
+3.0000 information_schema PBXT_STATISTICS Name varchar 40 120 utf8 utf8_general_ci varchar(40)
+NULL information_schema PBXT_STATISTICS Value bigint NULL NULL NULL NULL bigint(8)
3.0000 information_schema PLUGINS PLUGIN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema PLUGINS PLUGIN_VERSION varchar 20 60 utf8 utf8_general_ci varchar(20)
3.0000 information_schema PLUGINS PLUGIN_STATUS varchar 10 30 utf8 utf8_general_ci varchar(10)
@@ -523,6 +715,7 @@ NULL information_schema PROCESSLIST ID b
NULL information_schema PROCESSLIST TIME int NULL NULL NULL NULL int(7)
3.0000 information_schema PROCESSLIST STATE varchar 64 192 utf8 utf8_general_ci varchar(64)
1.0000 information_schema PROCESSLIST INFO longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
+NULL information_schema PROCESSLIST TIME_MS decimal NULL NULL NULL NULL decimal(22,3)
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
@@ -655,3 +848,7 @@ NULL information_schema TRIGGERS CREATED
3.0000 information_schema VIEWS SECURITY_TYPE varchar 7 21 utf8 utf8_general_ci varchar(7)
3.0000 information_schema VIEWS CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
3.0000 information_schema VIEWS COLLATION_CONNECTION varchar 32 96 utf8 utf8_general_ci varchar(32)
+3.0000 information_schema XTRADB_ENHANCEMENTS name varchar 255 765 utf8 utf8_general_ci varchar(255)
+3.0000 information_schema XTRADB_ENHANCEMENTS description varchar 255 765 utf8 utf8_general_ci varchar(255)
+3.0000 information_schema XTRADB_ENHANCEMENTS comment varchar 100 300 utf8 utf8_general_ci varchar(100)
+3.0000 information_schema XTRADB_ENHANCEMENTS link varchar 255 765 utf8 utf8_general_ci varchar(255)
=== modified file 'mysql-test/suite/funcs_1/r/is_tables_is.result'
--- a/mysql-test/suite/funcs_1/r/is_tables_is.result 2008-10-10 15:28:41 +0000
+++ b/mysql-test/suite/funcs_1/r/is_tables_is.result 2009-10-10 09:59:06 +0000
@@ -245,6 +245,305 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_BUFFER_POOL_PAGES
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_BUFFER_POOL_PAGES_BLOB
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_BUFFER_POOL_PAGES_INDEX
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_CMP
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_CMPMEM
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_CMPMEM_RESET
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_CMP_RESET
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_INDEX_STATS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_LOCKS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_LOCK_WAITS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_RSEG
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_TABLE_STATS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_TRX
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
TABLE_NAME KEY_COLUMN_USAGE
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
@@ -268,11 +567,241 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME PARTITIONS
+TABLE_NAME PARTITIONS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MYISAM_OR_MARIA
+VERSION 10
+ROW_FORMAT DYNAMIC_OR_PAGE
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME PBXT_STATISTICS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME PLUGINS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MYISAM_OR_MARIA
+VERSION 10
+ROW_FORMAT DYNAMIC_OR_PAGE
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME PROCESSLIST
+TABLE_TYPE SYSTEM VIEW
+ENGINE MYISAM_OR_MARIA
+VERSION 10
+ROW_FORMAT DYNAMIC_OR_PAGE
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME REFERENTIAL_CONSTRAINTS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME ROUTINES
+TABLE_TYPE SYSTEM VIEW
+ENGINE MYISAM_OR_MARIA
+VERSION 10
+ROW_FORMAT DYNAMIC_OR_PAGE
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME SCHEMATA
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME SCHEMA_PRIVILEGES
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME SESSION_STATUS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME SESSION_VARIABLES
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME STATISTICS
TABLE_TYPE SYSTEM VIEW
-ENGINE MYISAM_OR_MARIA
+ENGINE MEMORY
VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
+ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -291,11 +820,11 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME PLUGINS
+TABLE_NAME TABLES
TABLE_TYPE SYSTEM VIEW
-ENGINE MYISAM_OR_MARIA
+ENGINE MEMORY
VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
+ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -314,7 +843,53 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME PROCESSLIST
+TABLE_NAME TABLE_CONSTRAINTS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME TABLE_PRIVILEGES
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME TRIGGERS
TABLE_TYPE SYSTEM VIEW
ENGINE MYISAM_OR_MARIA
VERSION 10
@@ -337,7 +912,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME REFERENTIAL_CONSTRAINTS
+TABLE_NAME USER_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -360,7 +935,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME ROUTINES
+TABLE_NAME VIEWS
TABLE_TYPE SYSTEM VIEW
ENGINE MYISAM_OR_MARIA
VERSION 10
@@ -383,7 +958,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME SCHEMATA
+TABLE_NAME XTRADB_ENHANCEMENTS
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -404,9 +979,26 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
+DROP USER testuser1@localhost;
+CREATE USER testuser1@localhost;
+GRANT SELECT ON test1.* TO testuser1@localhost;
+# Establish connection testuser1 (user=testuser1)
+SELECT *,
+LEFT( table_comment,
+IF(INSTR(table_comment,'InnoDB free') = 0
+AND INSTR(table_comment,'number_of_replicas') = 0,
+LENGTH(table_comment),
+INSTR(table_comment,'InnoDB free')
++ INSTR(table_comment,'number_of_replicas') - 1))
+AS "user_comment",
+'-----------------------------------------------------' AS "Separator"
+FROM information_schema.tables
+WHERE table_schema = 'information_schema'
+AND table_name <> 'profiling'
+ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME SCHEMA_PRIVILEGES
+TABLE_NAME CHARACTER_SETS
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -429,7 +1021,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME SESSION_STATUS
+TABLE_NAME COLLATIONS
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -452,7 +1044,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME SESSION_VARIABLES
+TABLE_NAME COLLATION_CHARACTER_SET_APPLICABILITY
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -475,7 +1067,30 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME STATISTICS
+TABLE_NAME COLUMNS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MYISAM_OR_MARIA
+VERSION 10
+ROW_FORMAT DYNAMIC_OR_PAGE
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME COLUMN_PRIVILEGES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -498,7 +1113,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME TABLES
+TABLE_NAME ENGINES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -521,7 +1136,30 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME TABLE_CONSTRAINTS
+TABLE_NAME EVENTS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MYISAM_OR_MARIA
+VERSION 10
+ROW_FORMAT DYNAMIC_OR_PAGE
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME FILES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -544,7 +1182,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME TABLE_PRIVILEGES
+TABLE_NAME GLOBAL_STATUS
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -567,11 +1205,11 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME TRIGGERS
+TABLE_NAME GLOBAL_VARIABLES
TABLE_TYPE SYSTEM VIEW
-ENGINE MYISAM_OR_MARIA
+ENGINE MEMORY
VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
+ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -590,7 +1228,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME USER_PRIVILEGES
+TABLE_NAME INNODB_BUFFER_POOL_PAGES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -613,11 +1251,11 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME VIEWS
+TABLE_NAME INNODB_BUFFER_POOL_PAGES_BLOB
TABLE_TYPE SYSTEM VIEW
-ENGINE MYISAM_OR_MARIA
+ENGINE MEMORY
VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
+ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -634,26 +1272,9 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
-DROP USER testuser1@localhost;
-CREATE USER testuser1@localhost;
-GRANT SELECT ON test1.* TO testuser1@localhost;
-# Establish connection testuser1 (user=testuser1)
-SELECT *,
-LEFT( table_comment,
-IF(INSTR(table_comment,'InnoDB free') = 0
-AND INSTR(table_comment,'number_of_replicas') = 0,
-LENGTH(table_comment),
-INSTR(table_comment,'InnoDB free')
-+ INSTR(table_comment,'number_of_replicas') - 1))
-AS "user_comment",
-'-----------------------------------------------------' AS "Separator"
-FROM information_schema.tables
-WHERE table_schema = 'information_schema'
-AND table_name <> 'profiling'
-ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME CHARACTER_SETS
+TABLE_NAME INNODB_BUFFER_POOL_PAGES_INDEX
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -676,7 +1297,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME COLLATIONS
+TABLE_NAME INNODB_CMP
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -699,7 +1320,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME COLLATION_CHARACTER_SET_APPLICABILITY
+TABLE_NAME INNODB_CMPMEM
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -722,11 +1343,11 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME COLUMNS
+TABLE_NAME INNODB_CMPMEM_RESET
TABLE_TYPE SYSTEM VIEW
-ENGINE MYISAM_OR_MARIA
+ENGINE MEMORY
VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
+ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -745,7 +1366,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME COLUMN_PRIVILEGES
+TABLE_NAME INNODB_CMP_RESET
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -768,7 +1389,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME ENGINES
+TABLE_NAME INNODB_INDEX_STATS
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -791,11 +1412,11 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME EVENTS
+TABLE_NAME INNODB_LOCKS
TABLE_TYPE SYSTEM VIEW
-ENGINE MYISAM_OR_MARIA
+ENGINE MEMORY
VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
+ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -814,7 +1435,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME FILES
+TABLE_NAME INNODB_LOCK_WAITS
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -837,7 +1458,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME GLOBAL_STATUS
+TABLE_NAME INNODB_RSEG
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -860,7 +1481,30 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME GLOBAL_VARIABLES
+TABLE_NAME INNODB_TABLE_STATS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_TRX
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
@@ -929,6 +1573,29 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
+TABLE_NAME PBXT_STATISTICS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
TABLE_NAME PLUGINS
TABLE_TYPE SYSTEM VIEW
ENGINE MYISAM_OR_MARIA
@@ -1272,6 +1939,29 @@ CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
+TABLE_NAME XTRADB_ENHANCEMENTS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
# Switch to connection default and close connection testuser1
DROP USER testuser1@localhost;
DROP DATABASE test1;
=== modified file 'mysql-test/suite/funcs_1/r/is_tables_myisam.result'
--- a/mysql-test/suite/funcs_1/r/is_tables_myisam.result 2008-10-10 15:28:41 +0000
+++ b/mysql-test/suite/funcs_1/r/is_tables_myisam.result 2009-10-10 09:59:06 +0000
@@ -19,287 +19,11 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE MYISAM_OR_MARIA
VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t2
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb1
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb2
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb3
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb4
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
ROW_FORMAT DYNAMIC_OR_PAGE
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
@@ -319,7 +43,7 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA test1
-TABLE_NAME tb2
+TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE MYISAM_OR_MARIA
VERSION 10
@@ -341,12 +65,12 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test4
-TABLE_NAME t6
+TABLE_SCHEMA test2
+TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE MYISAM_OR_MARIA
VERSION 10
-ROW_FORMAT Fixed
+ROW_FORMAT DYNAMIC_OR_PAGE
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
@@ -387,218 +111,11 @@ FROM information_schema.tables
WHERE table_schema LIKE 'test%' AND table_type = 'BASE TABLE'
ORDER BY table_schema,table_name;
TABLE_CATALOG NULL
-TABLE_SCHEMA test
+TABLE_SCHEMA test1
TABLE_NAME t1
TABLE_TYPE BASE TABLE
ENGINE MYISAM_OR_MARIA
VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t10
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t11
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t2
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t3
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t4
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t7
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t8
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME t9
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb1
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
ROW_FORMAT DYNAMIC_OR_PAGE
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
@@ -617,54 +134,8 @@ TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb2
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb3
-TABLE_TYPE BASE TABLE
-ENGINE MYISAM_OR_MARIA
-VERSION 10
-ROW_FORMAT DYNAMIC_OR_PAGE
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION latin1_swedish_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA test
-TABLE_NAME tb4
+TABLE_SCHEMA test1
+TABLE_NAME t2
TABLE_TYPE BASE TABLE
ENGINE MYISAM_OR_MARIA
VERSION 10
=== modified file 'mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result'
--- a/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result 2009-04-25 10:05:32 +0000
+++ b/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result 2009-10-10 09:59:06 +0000
@@ -29,28 +29,29 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROC
`COMMAND` varchar(16) NOT NULL DEFAULT '',
`TIME` int(7) NOT NULL DEFAULT '0',
`STATE` varchar(64) DEFAULT NULL,
- `INFO` longtext
+ `INFO` longtext,
+ `TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000'
) DEFAULT CHARSET=utf8
SHOW processlist;
Id User Host db Command Time State Info
ID root HOST_NAME information_schema Query TIME NULL SHOW processlist
ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
SELECT * FROM processlist ORDER BY id;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID root HOST_NAME information_schema Query TIME executing SELECT * FROM processlist ORDER BY id
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID root HOST_NAME information_schema Query TIME executing SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID root HOST_NAME information_schema Query TIME executing SELECT * FROM processlist ORDER BY id TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS FROM processlist ORDER BY id;
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID root HOST_NAME information_schema Query TIME executing SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS FROM processlist ORDER BY id TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
CREATE TEMPORARY TABLE test.t_processlist AS SELECT * FROM processlist;
UPDATE test.t_processlist SET user='horst' WHERE id=1 ;
INSERT INTO processlist SELECT * FROM test.t_processlist;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
DROP TABLE test.t_processlist;
-CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist WITH CHECK OPTION;
+CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS) AS SELECT * FROM processlist WITH CHECK OPTION;
ERROR HY000: CHECK OPTION on non-updatable view 'test.v_processlist'
-CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist;
+CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS) AS SELECT * FROM processlist;
UPDATE test.v_processlist SET TIME=NOW() WHERE id = 1;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
DROP VIEW test.v_processlist;
@@ -99,25 +100,26 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROC
`COMMAND` varchar(16) NOT NULL DEFAULT '',
`TIME` int(7) NOT NULL DEFAULT '0',
`STATE` varchar(64) DEFAULT NULL,
- `INFO` longtext
+ `INFO` longtext,
+ `TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000'
) DEFAULT CHARSET=utf8
SHOW processlist;
Id User Host db Command Time State Info
ID ddicttestuser1 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM processlist ORDER BY id;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM processlist ORDER BY id
-SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM processlist ORDER BY id TIME_MS
+SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS FROM processlist ORDER BY id;
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS FROM processlist ORDER BY id TIME_MS
CREATE TEMPORARY TABLE test.t_processlist AS SELECT * FROM processlist;
UPDATE test.t_processlist SET user='horst' WHERE id=1 ;
INSERT INTO processlist SELECT * FROM test.t_processlist;
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
DROP TABLE test.t_processlist;
-CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist WITH CHECK OPTION;
+CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS) AS SELECT * FROM processlist WITH CHECK OPTION;
ERROR HY000: CHECK OPTION on non-updatable view 'test.v_processlist'
-CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist;
+CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO, TIME_MS) AS SELECT * FROM processlist;
UPDATE test.v_processlist SET TIME=NOW() WHERE id = 1;
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
DROP VIEW test.v_processlist;
@@ -170,8 +172,8 @@ SHOW processlist;
Id User Host db Command Time State Info
ID ddicttestuser1 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
####################################################################################
4.2 New connection con101 (ddicttestuser1 with PROCESS privilege)
SHOW/SELECT shows all processes/threads.
@@ -185,10 +187,10 @@ ID root HOST_NAME information_schema Sle
ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
ID ddicttestuser1 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID root HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID root HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
5 Grant PROCESS privilege to anonymous user.
connection default (user=root)
@@ -209,11 +211,11 @@ ID ddicttestuser1 HOST_NAME information_
ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
ID HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID root HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID root HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
6 Revoke PROCESS privilege from ddicttestuser1
connection default (user=root)
@@ -233,10 +235,10 @@ ID ddicttestuser1 HOST_NAME information_
ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
ID ddicttestuser1 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
7 Revoke PROCESS privilege from anonymous user
connection default (user=root)
@@ -251,9 +253,9 @@ SHOW GRANTS FOR ''@'localhost';
Grants for @localhost
GRANT USAGE ON *.* TO ''@'localhost'
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
8 Grant SUPER (does not imply PROCESS) privilege to ddicttestuser1
connection default (user=root)
@@ -273,11 +275,11 @@ ID ddicttestuser1 HOST_NAME information_
ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
ID ddicttestuser1 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
9 Revoke SUPER privilege from user ddicttestuser1
connection default (user=root)
@@ -299,12 +301,12 @@ ID ddicttestuser1 HOST_NAME information_
ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
ID ddicttestuser1 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
10 Grant SUPER privilege with grant option to user ddicttestuser1.
connection default (user=root)
@@ -353,18 +355,18 @@ ID ddicttestuser1 HOST_NAME information_
ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
ID ddicttestuser2 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser2 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID root HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser2 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID root HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
11 User ddicttestuser1 revokes PROCESS privilege from user ddicttestuser2
connection ddicttestuser1;
@@ -382,9 +384,9 @@ Id User Host db Command Time State Info
ID ddicttestuser2 HOST_NAME information_schema Sleep TIME NULL
ID ddicttestuser2 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser2 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID ddicttestuser2 HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser2 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID ddicttestuser2 HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
11.2 Revoke SUPER,PROCESS,GRANT OPTION privilege from user ddicttestuser1
connection default (user=root)
@@ -411,15 +413,15 @@ ID ddicttestuser1 HOST_NAME information_
ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
ID ddicttestuser1 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
12 Revoke the SELECT privilege from user ddicttestuser1
connection default (user=root)
@@ -447,16 +449,16 @@ ID ddicttestuser1 HOST_NAME information_
ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
ID ddicttestuser1 HOST_NAME information_schema Query TIME NULL SHOW processlist
SELECT * FROM information_schema.processlist;
-ID USER HOST DB COMMAND TIME STATE INFO
-ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
-ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
+ID ddicttestuser1 HOST_NAME information_schema Sleep TIME NULL TIME_MS
####################################################################################
12.2 Revoke only the SELECT privilege on the information_schema from ddicttestuser1.
connection default (user=root)
=== modified file 'mysql-test/suite/funcs_1/r/processlist_val_no_prot.result'
--- a/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result 2009-04-25 10:05:32 +0000
+++ b/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result 2009-10-10 09:59:06 +0000
@@ -19,140 +19,242 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROC
`COMMAND` varchar(16) NOT NULL DEFAULT '',
`TIME` int(7) NOT NULL DEFAULT '0',
`STATE` varchar(64) DEFAULT NULL,
- `INFO` longtext
+ `INFO` longtext,
+ `TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000'
) DEFAULT CHARSET=utf8
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST;
-COUNT(*)
-1
-USE test;
+# Ensure that the information about the own connection is correct.
+#--------------------------------------------------------------------------
+
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
-ID USER HOST DB COMMAND TIME STATE INFO
-<ID> root localhost test Query 0 executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+<ID> root <HOST_NAME> test Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST <TIME_MS>
SHOW FULL PROCESSLIST;
Id User Host db Command Time State Info
-<ID> root localhost test Query 0 NULL SHOW FULL PROCESSLIST
+<ID> root <HOST_NAME> test Query <TIME> NULL SHOW FULL PROCESSLIST
+SET @default_id = CONNECTION_ID();
+SELECT COUNT(*) = 1 AS "Expect exact one connection with this id"
+FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = @default_id;
+Expect exact one connection with this id
+1
+SELECT COUNT(*) = 1 AS "Expect 1"
+FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = @default_id
+AND USER = 'root' AND DB = 'test' AND Command IN('Query','Execute')
+AND State = 'executing';
+Expect 1
+1
USE information_schema;
+SELECT COUNT(*) = 1 AS "Is the DB correct?"
+FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE ID = @default_id AND DB = 'information_schema';
+Is the DB correct?
+1
+SELECT @my_info := INFO FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE ID = @default_id;
+@my_info := INFO
+SELECT @my_info := INFO FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE ID = @default_id
+SELECT @my_info = 'SELECT @my_info := INFO FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE ID = @default_id'
+ AS 'Is the content of PROCESSLIST.INFO correct?';
+Is the content of PROCESSLIST.INFO correct?
+1
+SELECT COUNT(*) = 1 AS "Has TIME a reasonable value?"
+FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE ID = @default_id AND 0 <= TIME < 10 AND 0 <= TIME_MS < 10000;
+Has TIME a reasonable value?
+1
+# Ensure that the information about an inactive connection is correct.
+#--------------------------------------------------------------------------
+
+# ----- establish connection con1 (user = test_user) -----
+
+# ----- switch to connection default (user = root) -----
+
+# Poll till the connection con1 is in state COMMAND = 'Sleep'.
+
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
-ID USER HOST DB COMMAND TIME STATE INFO
-<ID> root localhost information_schema Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+<ID> test_user <HOST_NAME> information_schema Sleep <TIME> NULL <TIME_MS>
+<ID> root <HOST_NAME> information_schema Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST <TIME_MS>
SHOW FULL PROCESSLIST;
Id User Host db Command Time State Info
-<ID> root localhost information_schema Query <TIME> NULL SHOW FULL PROCESSLIST
-SELECT INFO FROM INFORMATION_SCHEMA.PROCESSLIST;
-INFO
-SELECT INFO FROM INFORMATION_SCHEMA.PROCESSLIST
-SELECT ID INTO @my_proclist_id FROM INFORMATION_SCHEMA.PROCESSLIST;
-
------ establish connection ddicttestuser1 (user = ddicttestuser1) -----
-
------ switch to connection default (user = root) -----
-SELECT @time > 0;
-@time > 0
+<ID> root <HOST_NAME> information_schema Query <TIME> NULL SHOW FULL PROCESSLIST
+<ID> test_user <HOST_NAME> information_schema Sleep <TIME> NULL
+SELECT ID,TIME INTO @test_user_con1_id,@time FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE COMMAND = 'Sleep' AND USER = 'test_user';
+SELECT @test_user_con1_id = @default_id + 1
+AS "Did we got the next higher PROCESSLIST ID?";
+Did we got the next higher PROCESSLIST ID?
1
-# Sleep some time
-SELECT @time < @time2;
-@time < @time2
+SELECT 0 <= @time < 10 AS "Has TIME a reasonable value?";
+Has TIME a reasonable value?
1
-SELECT ID = @my_proclist_id + 1 FROM INFORMATION_SCHEMA.PROCESSLIST
-WHERE USER = 'ddicttestuser1';
-ID = @my_proclist_id + 1
+SELECT COUNT(*) = 2 AS "Is HOST LIKE 'localhost%'?"
+FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE HOST LIKE 'localhost%';
+Is HOST LIKE 'localhost%'?
1
+SELECT COUNT(*) = 1 AS "Expect 1"
+FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = @test_user_con1_id
+AND USER = 'test_user' AND DB = 'information_schema'
+ AND Command = 'Sleep' AND State = '' AND INFO IS NULL;
+Expect 1
+1
+# Ensure that the user test_user sees only connections with his username
+# because he has not the PROCESS privilege.
+#----------------------------------------------------------------------------
+
+# ----- switch to connection con1 (user = test_user) -----
------ switch to connection ddicttestuser1 (user = ddicttestuser1) -----
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
-ID USER HOST DB COMMAND TIME STATE INFO
-<ID> ddicttestuser1 localhost information_schema Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+<ID> test_user <HOST_NAME> information_schema Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST <TIME_MS>
SHOW FULL PROCESSLIST;
Id User Host db Command Time State Info
-<ID> ddicttestuser1 localhost information_schema Query <TIME> NULL SHOW FULL PROCESSLIST
+<ID> test_user <HOST_NAME> information_schema Query <TIME> NULL SHOW FULL PROCESSLIST
+# Ensure that the user test_user sees all connections with his username.
+#----------------------------------------------------------------------------
+
+----- establish connection con2 (user = test_user) ------
+
+# ----- switch to connection default (user = root) -----
+
+# Poll till all connections of 'test_user' are in a state with COMMAND = 'Sleep'
+
+# ----- switch to connection con2 (user = test_user) -----
------ establish connection con2 (user = ddicttestuser1) ------
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
-ID USER HOST DB COMMAND TIME STATE INFO
-<ID> ddicttestuser1 localhost information_schema Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
-<ID> ddicttestuser1 localhost information_schema Sleep <TIME> NULL
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+<ID> test_user <HOST_NAME> information_schema Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST <TIME_MS>
+<ID> test_user <HOST_NAME> information_schema Sleep <TIME> NULL <TIME_MS>
SHOW FULL PROCESSLIST;
Id User Host db Command Time State Info
-<ID> ddicttestuser1 localhost information_schema Sleep <TIME> NULL
-<ID> ddicttestuser1 localhost information_schema Query <TIME> NULL SHOW FULL PROCESSLIST
-
------ switch to connection default (user = root) -----
------ close connection con2 -----
+<ID> test_user <HOST_NAME> information_schema Sleep <TIME> NULL
+<ID> test_user <HOST_NAME> information_schema Query <TIME> NULL SHOW FULL PROCESSLIST
+# ----- switch to connection default (user = root) -----
------ switch to connection ddicttestuser1 (user = ddicttestuser1) -----
+SELECT ID INTO @test_user_con2_id FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE ID <> @test_user_con1_id
+AND USER = 'test_user' AND DB = 'information_schema';
+# Ensure we get correct information about a connection during work
+#----------------------------------------------------------------------------
+# ----- switch to connection con2 (user = test_user) -----
# Send a long enough running statement to the server, but do not
-# wait till the result comes back. We will pull this later.
-SELECT sleep(2.5),'Command time';
+# wait till the result comes back.
------ switch to connection default (user = root) -----
-# Sleep some time
-SELECT @time > 0;
-@time > 0
-1
-# Sleep some time
-SELECT @time < @time2;
-@time < @time2
-1
-
------ switch to connection ddicttestuser1 (user = ddicttestuser1) -----
-# Pull("reap") the result set from the statement executed with "send".
-sleep(2.5) Command time
-0 Command time
+SELECT sleep(10), 17;
+# ----- switch to connection default (user = root) -----
+# Poll till connection con2 is in state 'User sleep'.
-# Send a long (21 KB code and runtime = 2 seconds) statement to the server,
-# but do not wait till the result comes back. We will pull this later.
-SELECT sleep(2),'BEGIN this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.END' AS "my_monster_statement";
-
------ switch to connection default (user = root) -----
-# Sleep some time
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
-ID USER HOST DB COMMAND TIME STATE INFO
-<ID> ddicttestuser1 localhost information_schema <COMMAND> <TIME> <STATE> SELECT sleep(2),'BEGIN this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.END' AS "my_monster_statement"
-<ID> root localhost information_schema <COMMAND> <TIME> <STATE> SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+<ID> test_user <HOST_NAME> information_schema Query <TIME> User sleep SELECT sleep(10), 17 <TIME_MS>
+<ID> test_user <HOST_NAME> information_schema Sleep <TIME> NULL <TIME_MS>
+<ID> root <HOST_NAME> information_schema Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST <TIME_MS>
SHOW FULL PROCESSLIST;
Id User Host db Command Time State Info
-<ID> root localhost information_schema <COMMAND> <TIME> <STATE> SHOW FULL PROCESSLIST
-<ID> ddicttestuser1 localhost information_schema <COMMAND> <TIME> <STATE> SELECT sleep(2),'BEGIN this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.END' AS "my_monster_statement"
-SHOW PROCESSLIST;
-Id User Host db Command Time State Info
-<ID> root localhost information_schema <COMMAND> <TIME> <STATE> SHOW PROCESSLIST
-<ID> ddicttestuser1 localhost information_schema <COMMAND> <TIME> <STATE> SELECT sleep(2),'BEGIN this is the representative of a very long statement.this is the representativ
+<ID> root <HOST_NAME> information_schema Query <TIME> NULL SHOW FULL PROCESSLIST
+<ID> test_user <HOST_NAME> information_schema Sleep <TIME> NULL
+<ID> test_user <HOST_NAME> information_schema Query <TIME> User sleep SELECT sleep(10), 17
+SELECT STATE, TIME, INFO INTO @state, @time, @info
+FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE ID = @test_user_con2_id;
+SELECT 0 <= @time < 10 AS "Has TIME a reasonable value?";
+Has TIME a reasonable value?
+1
+SELECT @state = 'User sleep' AS "Has STATE the expected value?";
+Has STATE the expected value?
+1
+SELECT @info = 'SELECT sleep(10), 17' AS "Has INFO the expected value?";
+Has INFO the expected value?
+1
+# ----- switch to connection con2 (user = testuser) -----
------ switch to connection ddicttestuser1 (user = ddicttestuser1) -----
-# Pull("reap") the result set from the monster statement executed with "send".
-sleep(2) my_monster_statement
-0 BEGIN this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.this is the representative of a very long statement.END
+# Pull("reap") the result set from the statement executed with "send".
+
+sleep(10) 17
+0 17
+# ----- switch to connection default (user = root) -----
+
+# Poll till all connections of 'test_user' are in a state with COMMAND = 'Sleep'
+
+# Ensure that we see that a connection "hangs" when colliding with a
+# WRITE TABLE LOCK
+#----------------------------------------------------------------------------
------ switch to connection default (user = root) -----
LOCK TABLE test.t1 WRITE;
+# ----- switch to connection con2 (user = test_user) -----
------ switch to connection ddicttestuser1 (user = ddicttestuser1) -----
# Send a statement to the server, but do not wait till the result
# comes back. We will pull this later.
+
SELECT COUNT(*) FROM test.t1;
+# ----- switch to connection default (user = root) -----
+
+# Poll till INFO is no more NULL and State = 'Locked'.
------ switch to connection default (user = root) -----
-# Sleep some time
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
-ID USER HOST DB COMMAND TIME STATE INFO
-<ID> ddicttestuser1 localhost information_schema Query <TIME> Locked SELECT COUNT(*) FROM test.t1
-<ID> root localhost information_schema Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
-SHOW FULL PROCESSLIST;
-Id User Host db Command Time State Info
-<ID> root localhost information_schema Query <TIME> NULL SHOW FULL PROCESSLIST
-<ID> ddicttestuser1 localhost information_schema Query <TIME> Locked SELECT COUNT(*) FROM test.t1
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+<ID> test_user <HOST_NAME> information_schema Query <TIME> Locked SELECT COUNT(*) FROM test.t1 <TIME_MS>
+<ID> test_user <HOST_NAME> information_schema Sleep <TIME> NULL <TIME_MS>
+<ID> root <HOST_NAME> information_schema Query <TIME> executing SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST <TIME_MS>
UNLOCK TABLES;
+# ----- switch to connection con2 (user = test_user) -----
------ switch to connection ddicttestuser1 (user = ddicttestuser1) -----
# Pull("reap") the result set from the statement executed with "send".
+
COUNT(*)
0
+# Ensure that SHOW/SELECT processlist can handle extreme long commands
+#----------------------------------------------------------------------------
+
+# ----- switch to connection default (user = root) -----
+
+LOCK TABLE test.t1 WRITE;
+# ----- switch to connection con2 (user = test_user) -----
+
+# Send a long (~20 KB code) statement to the server, but do not wait
+# till the result comes back. We will pull this later.
+
+SELECT count(*),'BEGIN-This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.-END' AS "Long string" FROM test.t1;
+# ----- switch to connection default (user = root) -----
+
+# Poll till INFO is no more NULL and State = 'Locked'.
+
+# Expect result:
+# Statement Content of INFO
+# SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST Complete statement
+# SHOW FULL PROCESSLIST Complete statement
+# SHOW PROCESSLIST statement truncated after 100 char
+
+SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
+ID USER HOST DB COMMAND TIME STATE INFO TIME_MS
+<ID> test_user <HOST_NAME> information_schema <COMMAND> <TIME> <STATE> SELECT count(*),'BEGIN-This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.-END' AS "Long string" FROM test.t1 <TIME_MS>
+<ID> test_user <HOST_NAME> information_schema <COMMAND> <TIME> <STATE> NULL <TIME_MS>
+<ID> root <HOST_NAME> information_schema <COMMAND> <TIME> <STATE> SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST <TIME_MS>
+SHOW FULL PROCESSLIST;
+Id User Host db Command Time State Info
+<ID> root <HOST_NAME> information_schema <COMMAND> <TIME> <STATE> SHOW FULL PROCESSLIST
+<ID> test_user <HOST_NAME> information_schema <COMMAND> <TIME> <STATE> NULL
+<ID> test_user <HOST_NAME> information_schema <COMMAND> <TIME> <STATE> SELECT count(*),'BEGIN-This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.-END' AS "Long string" FROM test.t1
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<ID> root <HOST_NAME> information_schema <COMMAND> <TIME> <STATE> SHOW PROCESSLIST
+<ID> test_user <HOST_NAME> information_schema <COMMAND> <TIME> <STATE> NULL
+<ID> test_user <HOST_NAME> information_schema <COMMAND> <TIME> <STATE> SELECT count(*),'BEGIN-This is the representative of a very long statement.This is the representativ
+UNLOCK TABLES;
+# ----- switch to connection con2 (user = test_user) -----
+
+# Pull("reap") the result set from the monster statement executed with "send".
+
+count(*) Long string
+0 BEGIN-This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.This is the representative of a very long statement.-END
+# ----- switch to connection default (user = root) -----
------ switch to connection default (user = root) -----
+----- disconnect con1 and con2 -----
------ close connection ddicttestuser1 -----
-DROP USER ddicttestuser1@'localhost';
+DROP USER test_user@'localhost';
DROP TABLE test.t1;
=== modified file 'mysql-test/suite/funcs_1/t/is_columns_is.test'
--- a/mysql-test/suite/funcs_1/t/is_columns_is.test 2008-06-16 18:39:58 +0000
+++ b/mysql-test/suite/funcs_1/t/is_columns_is.test 2009-10-10 09:59:06 +0000
@@ -16,6 +16,8 @@
#
--source include/not_embedded.inc
+# This test depends on having the PBXT information_schema stuff.
+--source include/have_pbxt.inc
let $my_where = WHERE table_schema = 'information_schema'
AND table_name <> 'profiling';
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2775)
by knielsen@knielsen-hq.org 09 Oct '09
by knielsen@knielsen-hq.org 09 Oct '09
09 Oct '09
#At lp:maria
2775 knielsen(a)knielsen-hq.org 2009-10-09
Fix many test failures in parts test suite with --embedded-server.
Fix some connect options to work with embedded.
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
Disable in --embedded tests that rely on the mysqltest --list_files command,
which does not seem to work properly in --embedded.
modified:
mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test
mysql-test/suite/parts/t/partition_alter1_1_2_myisam.test
mysql-test/suite/parts/t/partition_alter1_1_innodb.test
mysql-test/suite/parts/t/partition_alter1_1_myisam.test
mysql-test/suite/parts/t/partition_alter1_2_innodb.test
mysql-test/suite/parts/t/partition_alter1_2_myisam.test
mysql-test/suite/parts/t/partition_alter2_1_innodb.test
mysql-test/suite/parts/t/partition_alter2_1_maria.test
mysql-test/suite/parts/t/partition_alter2_1_myisam.test
mysql-test/suite/parts/t/partition_alter2_2_innodb.test
mysql-test/suite/parts/t/partition_alter2_2_maria.test
mysql-test/suite/parts/t/partition_alter2_2_myisam.test
mysql-test/suite/parts/t/partition_alter3_innodb.test
mysql-test/suite/parts/t/partition_alter3_myisam.test
mysql-test/suite/parts/t/partition_alter4_innodb.test
mysql-test/suite/parts/t/partition_alter4_myisam.test
mysql-test/suite/parts/t/partition_basic_innodb.test
mysql-test/suite/parts/t/partition_basic_myisam.test
mysql-test/suite/parts/t/partition_basic_symlink_myisam.test
mysql-test/suite/parts/t/partition_engine_innodb.test
mysql-test/suite/parts/t/partition_engine_myisam.test
mysql-test/suite/parts/t/partition_special_innodb.test
mysql-test/suite/parts/t/partition_syntax_innodb.test
mysql-test/suite/parts/t/partition_syntax_myisam.test
per-file messages:
mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter1_1_2_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter1_1_innodb.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter1_1_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter1_2_innodb.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter1_2_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter2_1_innodb.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter2_1_maria.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter2_1_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter2_2_innodb.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter2_2_maria.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter2_2_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter3_innodb.test
Disable in --embedded tests that rely on the mysqltest --list_files command,
which does not seem to work properly in --embedded.
mysql-test/suite/parts/t/partition_alter3_myisam.test
Disable in --embedded tests that rely on the mysqltest --list_files command,
which does not seem to work properly in --embedded.
mysql-test/suite/parts/t/partition_alter4_innodb.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_alter4_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_basic_innodb.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_basic_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_basic_symlink_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_engine_innodb.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_engine_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_special_innodb.test
Fix some connect options to work with embedded.
mysql-test/suite/parts/t/partition_syntax_innodb.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
mysql-test/suite/parts/t/partition_syntax_myisam.test
Disable in --embedded tests that rely on connecting to mysqld externally by
spawning mysqltest.
=== modified file 'mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test'
--- a/mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test 2008-05-16 16:03:50 +0000
+++ b/mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test 2009-10-09 13:08:09 +0000
@@ -43,6 +43,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter1_1_2_myisam.test'
--- a/mysql-test/suite/parts/t/partition_alter1_1_2_myisam.test 2008-05-16 16:03:50 +0000
+++ b/mysql-test/suite/parts/t/partition_alter1_1_2_myisam.test 2009-10-09 13:08:09 +0000
@@ -42,6 +42,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter1_1_innodb.test'
--- a/mysql-test/suite/parts/t/partition_alter1_1_innodb.test 2008-05-16 16:03:50 +0000
+++ b/mysql-test/suite/parts/t/partition_alter1_1_innodb.test 2009-10-09 13:08:09 +0000
@@ -42,6 +42,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter1_1_myisam.test'
--- a/mysql-test/suite/parts/t/partition_alter1_1_myisam.test 2008-05-16 16:03:50 +0000
+++ b/mysql-test/suite/parts/t/partition_alter1_1_myisam.test 2009-10-09 13:08:09 +0000
@@ -43,6 +43,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter1_2_innodb.test'
--- a/mysql-test/suite/parts/t/partition_alter1_2_innodb.test 2008-05-16 16:03:50 +0000
+++ b/mysql-test/suite/parts/t/partition_alter1_2_innodb.test 2009-10-09 13:08:09 +0000
@@ -43,6 +43,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter1_2_myisam.test'
--- a/mysql-test/suite/parts/t/partition_alter1_2_myisam.test 2008-05-16 16:03:50 +0000
+++ b/mysql-test/suite/parts/t/partition_alter1_2_myisam.test 2009-10-09 13:08:09 +0000
@@ -43,6 +43,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter2_1_innodb.test'
--- a/mysql-test/suite/parts/t/partition_alter2_1_innodb.test 2008-09-18 09:02:48 +0000
+++ b/mysql-test/suite/parts/t/partition_alter2_1_innodb.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter2_1_maria.test'
--- a/mysql-test/suite/parts/t/partition_alter2_1_maria.test 2008-11-24 14:53:10 +0000
+++ b/mysql-test/suite/parts/t/partition_alter2_1_maria.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter2_1_myisam.test'
--- a/mysql-test/suite/parts/t/partition_alter2_1_myisam.test 2008-09-18 09:02:48 +0000
+++ b/mysql-test/suite/parts/t/partition_alter2_1_myisam.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter2_2_innodb.test'
--- a/mysql-test/suite/parts/t/partition_alter2_2_innodb.test 2008-09-18 09:02:48 +0000
+++ b/mysql-test/suite/parts/t/partition_alter2_2_innodb.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter2_2_maria.test'
--- a/mysql-test/suite/parts/t/partition_alter2_2_maria.test 2008-11-24 14:53:10 +0000
+++ b/mysql-test/suite/parts/t/partition_alter2_2_maria.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter2_2_myisam.test'
--- a/mysql-test/suite/parts/t/partition_alter2_2_myisam.test 2008-09-18 09:02:48 +0000
+++ b/mysql-test/suite/parts/t/partition_alter2_2_myisam.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter3_innodb.test'
--- a/mysql-test/suite/parts/t/partition_alter3_innodb.test 2007-11-20 15:04:07 +0000
+++ b/mysql-test/suite/parts/t/partition_alter3_innodb.test 2009-10-09 13:08:09 +0000
@@ -39,6 +39,8 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on --list_files, which doesn't work correctly in embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter3_myisam.test'
--- a/mysql-test/suite/parts/t/partition_alter3_myisam.test 2007-11-20 15:04:07 +0000
+++ b/mysql-test/suite/parts/t/partition_alter3_myisam.test 2009-10-09 13:08:09 +0000
@@ -39,6 +39,8 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on --list_files, which doesn't work correctly in embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter4_innodb.test'
--- a/mysql-test/suite/parts/t/partition_alter4_innodb.test 2007-11-20 15:04:07 +0000
+++ b/mysql-test/suite/parts/t/partition_alter4_innodb.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_alter4_myisam.test'
--- a/mysql-test/suite/parts/t/partition_alter4_myisam.test 2007-11-20 15:04:07 +0000
+++ b/mysql-test/suite/parts/t/partition_alter4_myisam.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_basic_innodb.test'
--- a/mysql-test/suite/parts/t/partition_basic_innodb.test 2008-03-17 15:18:02 +0000
+++ b/mysql-test/suite/parts/t/partition_basic_innodb.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_basic_myisam.test'
--- a/mysql-test/suite/parts/t/partition_basic_myisam.test 2008-03-17 15:18:02 +0000
+++ b/mysql-test/suite/parts/t/partition_basic_myisam.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_basic_symlink_myisam.test'
--- a/mysql-test/suite/parts/t/partition_basic_symlink_myisam.test 2008-02-06 14:13:56 +0000
+++ b/mysql-test/suite/parts/t/partition_basic_symlink_myisam.test 2009-10-09 13:08:09 +0000
@@ -40,6 +40,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
# The server must support symlink for DATA/INDEX DIRECTORY.
=== modified file 'mysql-test/suite/parts/t/partition_engine_innodb.test'
--- a/mysql-test/suite/parts/t/partition_engine_innodb.test 2007-11-20 15:04:07 +0000
+++ b/mysql-test/suite/parts/t/partition_engine_innodb.test 2009-10-09 13:08:09 +0000
@@ -39,6 +39,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_engine_myisam.test'
--- a/mysql-test/suite/parts/t/partition_engine_myisam.test 2007-11-20 15:04:07 +0000
+++ b/mysql-test/suite/parts/t/partition_engine_myisam.test 2009-10-09 13:08:09 +0000
@@ -39,6 +39,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_special_innodb.test'
--- a/mysql-test/suite/parts/t/partition_special_innodb.test 2008-12-04 09:47:25 +0000
+++ b/mysql-test/suite/parts/t/partition_special_innodb.test 2009-10-09 13:08:09 +0000
@@ -58,8 +58,8 @@ ENGINE = InnoDB
PARTITION BY HASH (a)
PARTITIONS 2;
-connect (con1,127.0.0.1,root,,test,$MASTER_MYPORT,);
-connect (con2,127.0.0.1,root,,test,$MASTER_MYPORT,);
+connect (con1,localhost,root,,test,$MASTER_MYPORT,);
+connect (con2,localhost,root,,test,$MASTER_MYPORT,);
--connection con1
SET autocommit=OFF;
=== modified file 'mysql-test/suite/parts/t/partition_syntax_innodb.test'
--- a/mysql-test/suite/parts/t/partition_syntax_innodb.test 2007-11-20 15:04:07 +0000
+++ b/mysql-test/suite/parts/t/partition_syntax_innodb.test 2009-10-09 13:08:09 +0000
@@ -39,6 +39,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
=== modified file 'mysql-test/suite/parts/t/partition_syntax_myisam.test'
--- a/mysql-test/suite/parts/t/partition_syntax_myisam.test 2007-11-20 15:04:07 +0000
+++ b/mysql-test/suite/parts/t/partition_syntax_myisam.test 2009-10-09 13:08:09 +0000
@@ -39,6 +39,9 @@ SET @max_row = 20;
let $more_trigger_tests= 0;
let $more_pk_ui_tests= 0;
+# This test relies on connecting externally from mysqltest, doesn't
+# work with embedded.
+--source include/not_embedded.inc
# The server must support partitioning.
--source include/have_partition.inc
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2774) Bug#39249
by knielsen@knielsen-hq.org 09 Oct '09
by knielsen@knielsen-hq.org 09 Oct '09
09 Oct '09
#At lp:maria
2774 knielsen(a)knielsen-hq.org 2009-10-09 [merge]
Merge Sanja's fix of BUG#39249 into MariaDB 5.1.38 release clone.
added:
BUILD/compile-pentium-debug-max-no-qc
modified:
BUILD/SETUP.sh
sql/mysql_priv.h
storage/maria/ha_maria.cc
storage/maria/ma_state.c
storage/maria/maria_def.h
storage/myisam/ha_myisam.cc
storage/myisam/mi_locking.c
storage/myisam/myisamdef.h
=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh 2009-09-29 19:02:48 +0000
+++ b/BUILD/SETUP.sh 2009-10-06 14:53:46 +0000
@@ -172,6 +172,7 @@ local_infile_configs="--enable-local-inf
max_no_embedded_configs="$SSL_LIBRARY --with-plugins=max"
+max_no_qc_configs="$SSL_LIBRARY --with-plugins=max --without-query-cache"
max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent"
max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server --with-libevent"
# Disable NDB in maria max builds
=== added file 'BUILD/compile-pentium-debug-max-no-qc'
--- a/BUILD/compile-pentium-debug-max-no-qc 1970-01-01 00:00:00 +0000
+++ b/BUILD/compile-pentium-debug-max-no-qc 2009-10-07 10:02:43 +0000
@@ -0,0 +1,10 @@
+#! /bin/sh
+# Builds server without query cache support
+
+path=`dirname $0`
+. "$path/SETUP.sh"
+
+extra_flags="$pentium_cflags $debug_cflags"
+extra_configs="$pentium_configs $debug_configs $max_no_qc_configs"
+
+. "$path/FINISH.sh"
=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h 2009-09-15 10:46:35 +0000
+++ b/sql/mysql_priv.h 2009-10-06 14:53:46 +0000
@@ -947,7 +947,6 @@ struct Query_cache_query_flags
#define query_cache_abort(A)
#define query_cache_end_of_result(A)
-#define query_cache_invalidate_by_MyISAM_filename_ref NULL
#define query_cache_maybe_disabled(T) 1
#define query_cache_is_cacheable_query(L) 0
#endif /*HAVE_QUERY_CACHE*/
=== modified file 'storage/maria/ha_maria.cc'
--- a/storage/maria/ha_maria.cc 2009-09-07 20:50:10 +0000
+++ b/storage/maria/ha_maria.cc 2009-10-06 14:53:46 +0000
@@ -28,6 +28,7 @@
#include <my_bit.h>
#include "ha_maria.h"
#include "trnman_public.h"
+#include "trnman.h"
C_MODE_START
#include "maria_def.h"
@@ -918,6 +919,8 @@ int ha_maria::open(const char *name, int
if (!(file= maria_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (test_if_locked & (HA_OPEN_IGNORE_IF_LOCKED | HA_OPEN_TMP_TABLE))
VOID(maria_extra(file, HA_EXTRA_NO_WAIT_LOCK, 0));
@@ -3238,6 +3241,9 @@ my_bool ha_maria::register_query_cache_t
*/
*engine_data= 0;
+ if (file->s->now_transactional && file->s->have_versioning)
+ return (file->trn->trid >= file->s->state.last_change_trn);
+
/*
If a concurrent INSERT has happened just before the currently processed
SELECT statement, the total size of the table is unknown.
=== modified file 'storage/maria/ma_state.c'
--- a/storage/maria/ma_state.c 2008-12-27 02:05:16 +0000
+++ b/storage/maria/ma_state.c 2009-10-06 06:57:22 +0000
@@ -318,6 +318,13 @@ void _ma_update_status(void* param)
DBUG_ASSERT(!info->s->base.born_transactional);
share->state.state= *info->state;
info->state= &share->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->s->data_file_name.str));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->s->data_file_name.str);
+#endif
+
}
info->append_insert_at_end= 0;
}
@@ -469,6 +476,8 @@ my_bool _ma_trnman_end_trans_hook(TRN *t
tables->state_start.checksum);
history->trid= trn->commit_trid;
+ share->state.last_change_trn= trn->commit_trid;
+
if (history->next)
{
/* Remove not visible states */
=== modified file 'storage/maria/maria_def.h'
--- a/storage/maria/maria_def.h 2009-02-19 09:01:25 +0000
+++ b/storage/maria/maria_def.h 2009-10-06 06:57:22 +0000
@@ -83,6 +83,7 @@ typedef struct st_maria_state_info
pgcache_page_no_t first_bitmap_with_space;
ulonglong auto_increment;
TrID create_trid; /* Minum trid for file */
+ TrID last_change_trn; /* selfdescriptive */
ulong update_count; /* Updated for each write lock */
ulong status;
double *rec_per_key_part;
@@ -337,7 +338,10 @@ typedef struct st_maria_share
/* Mapings to read/write the data file */
size_t (*file_read)(MARIA_HA *, uchar *, size_t, my_off_t, myf);
size_t (*file_write)(MARIA_HA *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ /* query cache invalidator for merged tables */
+ invalidator_by_filename invalidator;
+ /* query cache invalidator for changing state */
+ invalidator_by_filename chst_invalidator;
my_off_t key_del_current; /* delete links for index pages */
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
=== modified file 'storage/myisam/ha_myisam.cc'
--- a/storage/myisam/ha_myisam.cc 2009-09-07 20:50:10 +0000
+++ b/storage/myisam/ha_myisam.cc 2009-10-06 14:53:46 +0000
@@ -690,6 +690,9 @@ int ha_myisam::open(const char *name, in
if (!(file=mi_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (!table->s->tmp_table) /* No need to perform a check for tmp table */
{
if ((my_errno= table2myisam(table, &keyinfo, &recinfo, &recs)))
=== modified file 'storage/myisam/mi_locking.c'
--- a/storage/myisam/mi_locking.c 2009-09-03 14:05:38 +0000
+++ b/storage/myisam/mi_locking.c 2009-10-06 06:57:22 +0000
@@ -329,6 +329,12 @@ void mi_update_status(void* param)
#endif
info->s->state.state= *info->state;
info->state= &info->s->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->filename));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->filename);
+#endif
}
info->append_insert_at_end= 0;
=== modified file 'storage/myisam/myisamdef.h'
--- a/storage/myisam/myisamdef.h 2009-04-25 09:04:38 +0000
+++ b/storage/myisam/myisamdef.h 2009-10-06 06:57:22 +0000
@@ -190,7 +190,10 @@ typedef struct st_mi_isam_share
const uchar *record, my_off_t pos);
size_t (*file_read) (MI_INFO *, uchar *, size_t, my_off_t, myf);
size_t (*file_write) (MI_INFO *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ /* query cache invalidator for merged tables */
+ invalidator_by_filename invalidator;
+ /* query cache invalidator for changing state */
+ invalidator_by_filename chst_invalidator;
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
ulong last_version; /* Version on start */
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2773)
by knielsen@knielsen-hq.org 09 Oct '09
by knielsen@knielsen-hq.org 09 Oct '09
09 Oct '09
#At lp:maria
2773 knielsen(a)knielsen-hq.org 2009-10-09
Implement mysqltest --enable_prepare_warnings to properly fix some test failures.
The --enable_prepare_warnings allows to not discard warnings from autorepair
of crashed table in --ps-protocol mode.
Use this to properly fix the parts.partition_recover_myisam and
maria.maria-recover tests.
Add a test case for the new feature. This also adds missing test coverage
for the case where the same warning is thrown in both prepare and execute
phase.
added:
mysql-test/r/mysqltest_ps.result
mysql-test/t/mysqltest_ps.test
modified:
client/mysqltest.cc
mysql-test/suite/maria/t/maria-recover.test
mysql-test/suite/parts/t/partition_recover_myisam.test
per-file messages:
client/mysqltest.cc
Implement new commands --enable-prepare_warnings and --disable_prepare_warnings.
mysql-test/r/mysqltest_ps.result
Add test case for new --enable_prepare_warning mysqltest command.
mysql-test/suite/maria/t/maria-recover.test
Better fix of test case using new --enable_prepare_warnings command.
mysql-test/suite/parts/t/partition_recover_myisam.test
Fix test failure in --ps-protocol mode.
mysql-test/t/mysqltest_ps.test
Add test case for new --enable_prepare_warning mysqltest command.
=== modified file 'client/mysqltest.cc'
--- a/client/mysqltest.cc 2009-09-07 20:50:10 +0000
+++ b/client/mysqltest.cc 2009-10-09 08:09:24 +0000
@@ -100,6 +100,7 @@ static my_bool display_result_vertically
display_metadata= FALSE, display_result_sorted= FALSE;
static my_bool disable_query_log= 0, disable_result_log= 0;
static my_bool disable_warnings= 0;
+static my_bool prepare_warnings_enabled= 0;
static my_bool disable_info= 1;
static my_bool abort_on_error= 1;
static my_bool server_initialized= 0;
@@ -289,7 +290,7 @@ enum enum_commands {
Q_SEND_QUIT, Q_CHANGE_USER, Q_MKDIR, Q_RMDIR,
Q_LIST_FILES, Q_LIST_FILES_WRITE_FILE, Q_LIST_FILES_APPEND_FILE,
Q_SEND_SHUTDOWN, Q_SHUTDOWN_SERVER,
- Q_MOVE_FILE,
+ Q_MOVE_FILE, Q_ENABLE_PREPARE_WARNINGS, Q_DISABLE_PREPARE_WARNINGS,
Q_UNKNOWN, /* Unknown command. */
Q_COMMENT, /* Comments, ignored. */
@@ -387,6 +388,8 @@ const char *command_names[]=
"send_shutdown",
"shutdown_server",
"move_file",
+ "enable_prepare_warnings",
+ "disable_prepare_warnings",
0
};
@@ -6929,8 +6932,17 @@ void run_query_stmt(MYSQL *mysql, struct
mysql_free_result(res); /* Free normal result set with meta data */
- /* Clear prepare warnings */
- dynstr_set(&ds_prepare_warnings, NULL);
+ /*
+ Normally, if there is a result set, we do not show warnings from the
+ prepare phase. This is because some warnings are generated both during
+ prepare and execute; this would generate different warning output
+ between normal and ps-protocol test runs.
+
+ The --enable_prepare_warnings command can be used to change this so
+ that warnings from both the prepare and execute phase are shown.
+ */
+ if (!disable_warnings && !prepare_warnings_enabled)
+ dynstr_set(&ds_prepare_warnings, NULL);
}
else
{
@@ -7754,6 +7766,8 @@ int main(int argc, char **argv)
case Q_DISABLE_RESULT_LOG: disable_result_log=1; break;
case Q_ENABLE_WARNINGS: disable_warnings=0; break;
case Q_DISABLE_WARNINGS: disable_warnings=1; break;
+ case Q_ENABLE_PREPARE_WARNINGS: prepare_warnings_enabled=1; break;
+ case Q_DISABLE_PREPARE_WARNINGS: prepare_warnings_enabled=0; break;
case Q_ENABLE_INFO: disable_info=0; break;
case Q_DISABLE_INFO: disable_info=1; break;
case Q_ENABLE_METADATA: display_metadata=1; break;
=== added file 'mysql-test/r/mysqltest_ps.result'
--- a/mysql-test/r/mysqltest_ps.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/mysqltest_ps.result 2009-10-09 08:09:24 +0000
@@ -0,0 +1,40 @@
+select 1 + "2 a";
+1 + "2 a"
+3
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '2 a'
+create table t (a int primary key, b blob default '');
+Warnings:
+Warning 1101 BLOB/TEXT column 'b' can't have a default value
+select a, (2*a) AS a from t group by a;
+a a
+Warnings:
+Warning 1052 Column 'a' in group statement is ambiguous
+drop table t;
+select 1 + "2 a";
+1 + "2 a"
+3
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '2 a'
+create table t (a int primary key, b blob default '');
+Warnings:
+Warning 1101 BLOB/TEXT column 'b' can't have a default value
+select a, (2*a) AS a from t group by a;
+a a
+Warnings:
+Warning 1052 Column 'a' in group statement is ambiguous
+Warning 1052 Column 'a' in group statement is ambiguous
+drop table t;
+select 1 + "2 a";
+1 + "2 a"
+3
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '2 a'
+create table t (a int primary key, b blob default '');
+Warnings:
+Warning 1101 BLOB/TEXT column 'b' can't have a default value
+select a, (2*a) AS a from t group by a;
+a a
+Warnings:
+Warning 1052 Column 'a' in group statement is ambiguous
+drop table t;
=== modified file 'mysql-test/suite/maria/t/maria-recover.test'
--- a/mysql-test/suite/maria/t/maria-recover.test 2009-02-19 09:01:25 +0000
+++ b/mysql-test/suite/maria/t/maria-recover.test 2009-10-09 08:09:24 +0000
@@ -54,11 +54,10 @@ perl;
close FILE;
EOF
-# line below will be removed
-disable_ps_protocol;
replace_regex /Table.*t_corrupted2/t_corrupted2/ ;
+--enable_prepare_warnings
select * from t_corrupted2; # should show corruption and repair messages
-enable_ps_protocol;
+--disable_prepare_warnings
select * from t_corrupted2; # should show just rows
drop database mysqltest;
=== modified file 'mysql-test/suite/parts/t/partition_recover_myisam.test'
--- a/mysql-test/suite/parts/t/partition_recover_myisam.test 2009-10-07 07:57:48 +0000
+++ b/mysql-test/suite/parts/t/partition_recover_myisam.test 2009-10-09 08:09:24 +0000
@@ -18,7 +18,9 @@ let $MYSQLD_DATADIR= `select @@datadir`;
--copy_file std_data/corrupt_t1.MYI $MYSQLD_DATADIR/test/t1_will_crash.MYI
# Embedded server doesn't chdir to data directory
--replace_regex /Table '.*\/data\/test\/t1_will_crash/Table '.\/test\/t1_will_crash/
+--enable_prepare_warnings
SELECT * FROM t1_will_crash;
+--disable_prepare_warnings
DROP TABLE t1_will_crash;
CREATE TABLE t1_will_crash (a INT, KEY (a))
ENGINE=MyISAM
@@ -33,5 +35,7 @@ FLUSH TABLES;
--copy_file std_data/corrupt_t1#P#p1.MYI $MYSQLD_DATADIR/test/t1_will_crash#P#p1.MYI
# Embedded server doesn't chdir to data directory
--replace_regex /Table '.*\/data\/test\/t1_will_crash/Table '.\/test\/t1_will_crash/
+--enable_prepare_warnings
SELECT * FROM t1_will_crash;
+--disable_prepare_warnings
DROP TABLE t1_will_crash;
=== added file 'mysql-test/t/mysqltest_ps.test'
--- a/mysql-test/t/mysqltest_ps.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/mysqltest_ps.test 2009-10-09 08:09:24 +0000
@@ -0,0 +1,34 @@
+#
+# Test mysqltest in --ps-protocol mode.
+#
+
+if (`SELECT $PS_PROTOCOL = 0`)
+{
+ --skip Need prepared statement protocol
+}
+
+#
+# Test the --enable_prepare_warnings command.
+# Test default value (off), enabling, and disabling.
+#
+
+--enable_warnings
+
+select 1 + "2 a";
+create table t (a int primary key, b blob default '');
+# This statement gives warning both during prepare and execute.
+# So gives double warnings when --enable_prepare_warnings.
+select a, (2*a) AS a from t group by a;
+drop table t;
+
+--enable_prepare_warnings
+select 1 + "2 a";
+create table t (a int primary key, b blob default '');
+select a, (2*a) AS a from t group by a;
+drop table t;
+
+--disable_prepare_warnings
+select 1 + "2 a";
+create table t (a int primary key, b blob default '');
+select a, (2*a) AS a from t group by a;
+drop table t;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2770)
by knielsen@knielsen-hq.org 09 Oct '09
by knielsen@knielsen-hq.org 09 Oct '09
09 Oct '09
#At lp:maria
2770 knielsen(a)knielsen-hq.org 2009-10-09
Implement mysqltest --enable_prepare_warnings to properly fix some test failures.
The --enable_prepare_warnings allows to not discard warnings from autorepair
of crashed table in --ps-protocol mode.
Use this to properly fix the parts.partition_recover_myisam and
maria.maria-recover tests.
Add a test case for the new feature. This also adds missing test coverage
for the case where the same warning is thrown in both prepare and execute
phase.
added:
mysql-test/r/mysqltest_ps.result
mysql-test/t/mysqltest_ps.test
modified:
client/mysqltest.cc
mysql-test/suite/maria/t/maria-recover.test
mysql-test/suite/parts/t/partition_recover_myisam.test
per-file messages:
client/mysqltest.cc
Implement new commands --enable-prepare_warnings and --disable_prepare_warnings.
mysql-test/r/mysqltest_ps.result
Add test case for new --enable_prepare_warning mysqltest command.
mysql-test/suite/maria/t/maria-recover.test
Better fix of test case using new --enable_prepare_warnings command.
mysql-test/suite/parts/t/partition_recover_myisam.test
Fix test failure in --ps-protocol mode.
mysql-test/t/mysqltest_ps.test
Add test case for new --enable_prepare_warning mysqltest command.
=== modified file 'client/mysqltest.cc'
--- a/client/mysqltest.cc 2009-09-07 20:50:10 +0000
+++ b/client/mysqltest.cc 2009-10-09 07:52:38 +0000
@@ -100,6 +100,7 @@ static my_bool display_result_vertically
display_metadata= FALSE, display_result_sorted= FALSE;
static my_bool disable_query_log= 0, disable_result_log= 0;
static my_bool disable_warnings= 0;
+static my_bool prepare_warnings_enabled= 0;
static my_bool disable_info= 1;
static my_bool abort_on_error= 1;
static my_bool server_initialized= 0;
@@ -289,7 +290,7 @@ enum enum_commands {
Q_SEND_QUIT, Q_CHANGE_USER, Q_MKDIR, Q_RMDIR,
Q_LIST_FILES, Q_LIST_FILES_WRITE_FILE, Q_LIST_FILES_APPEND_FILE,
Q_SEND_SHUTDOWN, Q_SHUTDOWN_SERVER,
- Q_MOVE_FILE,
+ Q_MOVE_FILE, Q_ENABLE_PREPARE_WARNINGS, Q_DISABLE_PREPARE_WARNINGS,
Q_UNKNOWN, /* Unknown command. */
Q_COMMENT, /* Comments, ignored. */
@@ -387,6 +388,8 @@ const char *command_names[]=
"send_shutdown",
"shutdown_server",
"move_file",
+ "enable_prepare_warnings",
+ "disable_prepare_warnings",
0
};
@@ -6929,8 +6932,17 @@ void run_query_stmt(MYSQL *mysql, struct
mysql_free_result(res); /* Free normal result set with meta data */
- /* Clear prepare warnings */
- dynstr_set(&ds_prepare_warnings, NULL);
+ /*
+ Normally, if there is a result set, we do not show warnings from the
+ prepare phase. This is because some warnings are generated both during
+ prepare and execute; this would generate different warning output
+ between normal and ps-protocol test runs.
+
+ The --enable_prepare_warnings command can be used to change this so
+ that warnings from both the prepare and execute phase are shown.
+ */
+ if (!disable_warnings && !prepare_warnings_enabled)
+ dynstr_set(&ds_prepare_warnings, NULL);
}
else
{
@@ -7754,6 +7766,8 @@ int main(int argc, char **argv)
case Q_DISABLE_RESULT_LOG: disable_result_log=1; break;
case Q_ENABLE_WARNINGS: disable_warnings=0; break;
case Q_DISABLE_WARNINGS: disable_warnings=1; break;
+ case Q_ENABLE_PREPARE_WARNINGS: prepare_warnings_enabled=1; break;
+ case Q_DISABLE_PREPARE_WARNINGS: prepare_warnings_enabled=0; break;
case Q_ENABLE_INFO: disable_info=0; break;
case Q_DISABLE_INFO: disable_info=1; break;
case Q_ENABLE_METADATA: display_metadata=1; break;
=== added file 'mysql-test/r/mysqltest_ps.result'
--- a/mysql-test/r/mysqltest_ps.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/mysqltest_ps.result 2009-10-09 07:52:38 +0000
@@ -0,0 +1,40 @@
+select 1 + "2 a";
+1 + "2 a"
+3
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '2 a'
+create table t (a int primary key, b blob default '');
+Warnings:
+Warning 1101 BLOB/TEXT column 'b' can't have a default value
+select a, (2*a) AS a from t group by a;
+a a
+Warnings:
+Warning 1052 Column 'a' in group statement is ambiguous
+drop table t;
+select 1 + "2 a";
+1 + "2 a"
+3
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '2 a'
+create table t (a int primary key, b blob default '');
+Warnings:
+Warning 1101 BLOB/TEXT column 'b' can't have a default value
+select a, (2*a) AS a from t group by a;
+a a
+Warnings:
+Warning 1052 Column 'a' in group statement is ambiguous
+Warning 1052 Column 'a' in group statement is ambiguous
+drop table t;
+select 1 + "2 a";
+1 + "2 a"
+3
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: '2 a'
+create table t (a int primary key, b blob default '');
+Warnings:
+Warning 1101 BLOB/TEXT column 'b' can't have a default value
+select a, (2*a) AS a from t group by a;
+a a
+Warnings:
+Warning 1052 Column 'a' in group statement is ambiguous
+drop table t;
=== modified file 'mysql-test/suite/maria/t/maria-recover.test'
--- a/mysql-test/suite/maria/t/maria-recover.test 2009-02-19 09:01:25 +0000
+++ b/mysql-test/suite/maria/t/maria-recover.test 2009-10-09 07:52:38 +0000
@@ -54,11 +54,10 @@ perl;
close FILE;
EOF
-# line below will be removed
-disable_ps_protocol;
replace_regex /Table.*t_corrupted2/t_corrupted2/ ;
+--enable_prepare_warnings
select * from t_corrupted2; # should show corruption and repair messages
-enable_ps_protocol;
+--disable_prepare_warnings
select * from t_corrupted2; # should show just rows
drop database mysqltest;
=== modified file 'mysql-test/suite/parts/t/partition_recover_myisam.test'
--- a/mysql-test/suite/parts/t/partition_recover_myisam.test 2009-10-07 07:57:48 +0000
+++ b/mysql-test/suite/parts/t/partition_recover_myisam.test 2009-10-09 07:52:38 +0000
@@ -18,7 +18,9 @@ let $MYSQLD_DATADIR= `select @@datadir`;
--copy_file std_data/corrupt_t1.MYI $MYSQLD_DATADIR/test/t1_will_crash.MYI
# Embedded server doesn't chdir to data directory
--replace_regex /Table '.*\/data\/test\/t1_will_crash/Table '.\/test\/t1_will_crash/
+--enable_prepare_warnings
SELECT * FROM t1_will_crash;
+--disable_prepare_warnings
DROP TABLE t1_will_crash;
CREATE TABLE t1_will_crash (a INT, KEY (a))
ENGINE=MyISAM
@@ -33,5 +35,7 @@ FLUSH TABLES;
--copy_file std_data/corrupt_t1#P#p1.MYI $MYSQLD_DATADIR/test/t1_will_crash#P#p1.MYI
# Embedded server doesn't chdir to data directory
--replace_regex /Table '.*\/data\/test\/t1_will_crash/Table '.\/test\/t1_will_crash/
+--enable_prepare_warnings
SELECT * FROM t1_will_crash;
+--disable_prepare_warnings
DROP TABLE t1_will_crash;
=== added file 'mysql-test/t/mysqltest_ps.test'
--- a/mysql-test/t/mysqltest_ps.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/mysqltest_ps.test 2009-10-09 07:52:38 +0000
@@ -0,0 +1,34 @@
+#
+# Test mysqltest in --ps-protocol mode.
+#
+
+if (`SELECT $PS_PROTOCOL = 0`)
+{
+ --skip Need prepared statement protocol
+}
+
+#
+# Test the --enable_prepare_warnings command.
+# Test default value (off), enabling, and disabling.
+#
+
+--enable_warnings
+
+select 1 + "2 a";
+create table t (a int primary key, b blob default '');
+# This statement gives warning both during prepare and execute.
+# So gives double warnings when --enable_prepare_warnings.
+select a, (2*a) AS a from t group by a;
+drop table t;
+
+--enable_prepare_warnings
+select 1 + "2 a";
+create table t (a int primary key, b blob default '');
+select a, (2*a) AS a from t group by a;
+drop table t;
+
+--disable_prepare_warnings
+select 1 + "2 a";
+create table t (a int primary key, b blob default '');
+select a, (2*a) AS a from t group by a;
+drop table t;
1
0
[Maria-developers] Windows buildslaves: suggestion for remedy of 'exception' failures.
by Sergey Petrunya 09 Oct '09
by Sergey Petrunya 09 Oct '09
09 Oct '09
Hi!
Both mine and Bo's buildslave are prone to error conditions like this:
http://askmonty.org/buildbot/builders/win32-rel-nmake/builds/19/steps/bzr/l…
Here is a suggestion on how to eliminate those.
Buildslave setup
----------------
Buildslave owner needs to download pstools and handle utilites:
http://technet.microsoft.com/en-us/sysinternals/bb896683.aspx
http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx
they need to unpack the zips, then put handle.exe, pskill.exe, pdh.dll somwhere
on the path, and then run both exe files manually. The first manual run is
needed to accept the EULA.
Buildbot script
---------------
I've come up with this script that uses the above utilities to kill all stray
processes:
#!/usr/bin/perl
my $cmd="handle.exe maria-slave |" ;
open(IN, $cmd) || die("Failed to pipe from handle.exe");
my @pids = ();
print "$cmd\n";
while(<IN>) {
print $_;
if (/ pid: ([0-9]+) /) {
push @pids, $1;
}
}
close(IN);
print "\n\n";
my %hash = map { $_ => 1} @pids;
my @uniq_pids = keys %hash;
foreach (@uniq_pids) {
$cmd= "pskill.exe $_\n";
print $cmd;
system($cmd);
}
EOF
The question is, where do we put the script? Have buildslave owners put it on
the slaves manually (bad, complicates the setup)? Download through buildbot?
We can't put it into the lp:maria repository because the failure occurs before
the bzr branch command, i.e. at a point where there might be not yet a
repository. On the other hand, if there is not yet a repository, then the
exception condition won't occur.
Any comments?
BR
Sergey
--
Sergey Petrunia, Software Developer
Monty Program AB, http://askmonty.org
Blog: http://s.petrunia.net/blog
3
2
[Maria-developers] Rev 2772: Fix make_win_bin_dist: in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 08 Oct '09
by Sergey Petrunya 08 Oct '09
08 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2772
revision-id: psergey(a)askmonty.org-20091008210103-xrb1cvmxzc5uhkfa
parent: psergey(a)askmonty.org-20091008191148-suda4au7bmdlq1hj
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Fri 2009-10-09 01:01:03 +0400
message:
Fix make_win_bin_dist:
- Include maria_chk and other maria binaries
- Include sql/$TARGET/mysqld.lib, like mainline does (but what is that useful for?)
- Don't include my_safe_{process,kill} garbage.
- call '/bin/find', not just 'find' is that is some incompatible windows command.
=== modified file 'scripts/make_win_bin_dist'
--- a/scripts/make_win_bin_dist 2009-09-01 06:40:13 +0000
+++ b/scripts/make_win_bin_dist 2009-10-08 21:01:03 +0000
@@ -140,12 +140,24 @@
# ----------------------------------------------------------------------
# Copy executables, and client DLL
# ----------------------------------------------------------------------
-
+MYISAM_BINARIES="myisamchk myisamlog myisampack myisam_ftdump"
+MARIA_BINARIES="maria_chk maria_dump_log maria_ftdump maria_pack maria_read_log"
mkdir $DESTDIR
mkdir $DESTDIR/bin
cp client/$TARGET/*.exe $DESTDIR/bin/
cp extra/$TARGET/*.exe $DESTDIR/bin/
-cp storage/myisam/$TARGET/*.exe $DESTDIR/bin/
+
+# MyISAM
+#cp storage/myisam/$TARGET/*.exe $DESTDIR/bin/
+for eng in $MYISAM_BINARIES ; do
+ cp storage/myisam/$TARGET/$eng.{exe,pdb} $DESTDIR/bin
+done
+
+# Maria
+for eng in $MARIA_BINARIES ; do
+ cp storage/maria/$TARGET/$eng.{exe,pdb} $DESTDIR/bin
+done
+
cp server-tools/instance-manager/$TARGET/*.{exe,map} $DESTDIR/bin/
if [ x"$TARGET" != x"release" ] ; then
cp server-tools/instance-manager/$TARGET/*.pdb $DESTDIR/bin/
@@ -280,6 +292,7 @@
mkdir -p $DESTDIR/lib/opt
mkdir -p $DESTDIR/lib/plugin
+cp sql/$TARGET/mysqld.lib $DESTDIR/lib/
cp libmysql/$TARGET/libmysql.dll \
libmysql/$TARGET/libmysql.lib \
libmysql/$TARGET/mysqlclient.lib \
@@ -340,6 +353,11 @@
cp mysql-test/README $DESTDIR/mysql-test/
cp -R mysql-test/{t,r,include,suite,std_data,lib} $DESTDIR/mysql-test/
+rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/my_safe_kill.{dir,vcproj}
+rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/my_safe_process.{dir,vcproj}
+rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/{Debug,RelWithDebInfo}/*.{ilk,idb,map}
+
+
# Note that this will not copy "extra" if a soft link
if [ -d mysql-test/extra ] ; then
mkdir $DESTDIR/mysql-test/extra
@@ -378,7 +396,7 @@
# Clean up from possibly copied SCCS directories
# ----------------------------------------------------------------------
-rm -rf `find $DISTDIR -type d -name SCCS -print`
+rm -rf `/bin/find $DISTDIR -type d -name SCCS -print`
# ----------------------------------------------------------------------
# Copy other files specified on command line DEST=SOURCE
1
0
[Maria-developers] Rev 2771: Include configure-mariadb.sh in source tarball in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 08 Oct '09
by Sergey Petrunya 08 Oct '09
08 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2771
revision-id: psergey(a)askmonty.org-20091008191148-suda4au7bmdlq1hj
parent: psergey(a)askmonty.org-20091008190412-78y3f1r7bdnger9r
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Thu 2009-10-08 23:11:48 +0400
message:
Include configure-mariadb.sh in source tarball
=== modified file 'win/Makefile.am'
--- a/win/Makefile.am 2009-10-02 12:53:05 +0000
+++ b/win/Makefile.am 2009-10-08 19:11:48 +0000
@@ -17,7 +17,7 @@
EXTRA_DIST = build-vs71.bat build-vs8.bat build-vs8_x64.bat build-vs9.bat \
build-vs9_x64.bat configure.js README mysql_manifest.cmake \
create_manifest.js create_def_file.js build-nmake.bat \
- build-nmake-x64.bat
+ build-nmake-x64.bat configure-mariadb.sh
# Don't update the files from bitkeeper
%::SCCS/s.%
1
0
[Maria-developers] Rev 2770: Added win/configure-mariadb.sh - the standard way to configure on Windows. in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 08 Oct '09
by Sergey Petrunya 08 Oct '09
08 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2770
revision-id: psergey(a)askmonty.org-20091008190412-78y3f1r7bdnger9r
parent: knielsen(a)knielsen-hq.org-20091008094331-wgvbuy10n25l7u14
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Thu 2009-10-08 23:04:12 +0400
message:
Added win/configure-mariadb.sh - the standard way to configure on Windows.
=== added file 'win/configure-mariadb.sh'
--- a/win/configure-mariadb.sh 1970-01-01 00:00:00 +0000
+++ b/win/configure-mariadb.sh 2009-10-08 19:04:12 +0000
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+#
+# This script is the "standard" way to configure MariaDB on Windows. To be
+# used by buildbot slaves and release build script.
+#
+
+set -e
+
+cscript win/configure.js \
+ WITH_ARCHIVE_STORAGE_ENGINE \
+ WITH_BLACKHOLE_STORAGE_ENGINE \
+ WITH_CSV_STORAGE_ENGINE \
+ WITH_EXAMPLE_STORAGE_ENGINE \
+ WITH_FEDERATED_STORAGE_ENGINE \
+ WITH_MERGE_STORAGE_ENGINE \
+ WITH_PARTITION_STORAGE_ENGINE \
+ WITH_MARIA_STORAGE_ENGINE \
+ WITH_PBXT_STORAGE_ENGINE \
+ WITH_XTRADB_STORAGE_ENGINE \
+ WITH_EMBEDDED_SERVER
+
+
1
0
Re: [Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2763)
by Arjen Lentz 08 Oct '09
by Arjen Lentz 08 Oct '09
08 Oct '09
Hi Monty, Henrik
On 08/10/2009, at 8:45 PM, Michael Widenius wrote:
>>>>>> "Henrik" == Henrik Ingo <henrik.ingo(a)avoinelama.fi> writes:
> Henrik> On Wed, Oct 7, 2009 at 4:16 PM, <knielsen(a)knielsen-hq.org>
> wrote:
>>> #At lp:maria
>>>
>>> 2763 knielsen(a)knielsen-hq.org 2009-10-07 [merge]
>>> Merge Arjen's fix for new slow log functionality.
>>> modified:
>>> sql/mysqld.cc
>
> Henrik> Sorry to be a nitpick, but since this touches source code
> and not just
> Henrik> build stuff...
Does that even matter, it's part of the same?
I actually got build-related scripts out of Sun/MySQL under GPL that
were kept internal, because there was the simple case that I wasn't
otherwise able to rebuild binaries from the provided source. IIRC it
was some Solaris foo.
> Henrik> Arjen, could you please clarify the terms under which this
> fix are
> Henrik> contributed to Monty Program (since we've discussed this
> earlier
> Henrik> today, I'll omit the reasoning why this is necessary).
> Henrik> -MCA (needs to be signed and faxed/emailed)
> Henrik> -BSD (needs to be stated in the patch or email, etc...)
> Henrik> or
> Henrik> ...for this particular two liner fix, do you agree (please
> reply) that
> Henrik> it does not constitute a copyrightable "work" in itself? (I
> don't know
> Henrik> the English term, but means that trivial things are not
> "creative
> Henrik> works" and thus not copyrightable.)
>
> Henrik, in general you are right. However, for a few lines bug fix
> "that is obvious", one generally don't need a copyright assignment.
Even if it were not obvious, such small patches are not generally
considered original work and thus don't acquire their own copyright.
This differs per country, by the way, just to be fun - it's not fixed
at what point a patch becomes an original work.
Anyway I regarded it as trivial and therefore I just submitted it.
I think you want to be rather "careful" in chasing this kind of thing
- on the one hand I appreciate that you want to keep the IP clear and
proper, but on the other hand you don't want to make it tedious for
potential contributors to the project to actually do that. The more
legalese and hoops, the fewer we'll see.
> That said, Arjen would you mind either signing the MCA to ensure that
> we can get your fixes in without a hazzle or do you prefer to always
> give your changes to MariaDB under the BSD?
So is there a "finished" MCA ? Wasn't there still an open thread with
some things to do?
I'm happy to take a look at it.
I'm ok with pooling copyright, but I'm less ok with any construct that
enables dual licensing, specifically I don't feel like supporting Sun/
MySQL's continued ability to conduct their sales scam. Now, I see my
contributions to be primarily benefiting MariaDB not MySQL (plus I
doubt significant things will flow upstream - although pigs might fly)
so I can probably live with signing an MP MCA.
Cheers,
Arjen.
--
Arjen Lentz, Exec.Director @ Open Query (http://openquery.com)
Exceptional Services for MySQL at a fixed budget.
Follow our blog at http://openquery.com/blog/
OurDelta: enhanced builds for MySQL @ http://ourdelta.org
3
2
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2769)
by knielsen@knielsen-hq.org 08 Oct '09
by knielsen@knielsen-hq.org 08 Oct '09
08 Oct '09
#At lp:maria
2769 knielsen(a)knielsen-hq.org 2009-10-08
Revert change of package name in configure.in, as it breaks too much stuff.
modified:
configure.in
=== modified file 'configure.in'
--- a/configure.in 2009-10-07 22:57:43 +0000
+++ b/configure.in 2009-10-08 09:43:31 +0000
@@ -12,10 +12,10 @@ AC_CANONICAL_SYSTEM
# in mysqlbinlog.cc / check_master_version().
#
# When merging new MySQL releases, update the version number to match the
-# MySQL version number, but reset the maria subrelease (m1).
+# MySQL version number.
#
# Note: the following line must be parseable by win/configure.js:GetVersion()
-AM_INIT_AUTOMAKE(mariadb, 5.1.38-beta)
+AM_INIT_AUTOMAKE(mysql, 5.1.38-maria-beta)
AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2768)
by knielsen@knielsen-hq.org 08 Oct '09
by knielsen@knielsen-hq.org 08 Oct '09
08 Oct '09
#At lp:maria
2768 knielsen(a)knielsen-hq.org 2009-10-08 [merge]
Merge.
modified:
mysql-test/lib/mtr_cases.pm
=== modified file 'mysql-test/lib/mtr_cases.pm'
--- a/mysql-test/lib/mtr_cases.pm 2009-10-07 22:57:43 +0000
+++ b/mysql-test/lib/mtr_cases.pm 2009-10-07 22:59:07 +0000
@@ -1084,6 +1084,17 @@ sub collect_one_test_case {
$tinfo->{template_path}= $config;
}
+ if ( $tinfo->{'example_plugin_test'} )
+ {
+ if ( !$ENV{'EXAMPLE_PLUGIN'} )
+ {
+ $tinfo->{'skip'}= 1;
+ $tinfo->{'comment'}= "Test requires the 'example' plugin";
+ return $tinfo;
+ }
+ }
+
+
# Set extra config file to use
if (defined $defaults_extra_file) {
$tinfo->{extra_template_path}= $defaults_extra_file;
@@ -1136,6 +1147,7 @@ my @tags=
["federated.inc", "federated_test", 1],
["include/not_embedded.inc", "not_embedded", 1],
["include/not_valgrind.inc", "not_valgrind", 1],
+ ["include/have_example_plugin.inc", "example_plugin_test", 1]
);
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2767)
by knielsen@knielsen-hq.org 08 Oct '09
by knielsen@knielsen-hq.org 08 Oct '09
08 Oct '09
#At lp:maria
2767 knielsen(a)knielsen-hq.org 2009-10-08
Fixes for package name change mysql -> mariadb.
- Don't need any m1 prefix for the first release based on given MySQL
version number.
- Fix mysql-test-run to understand that some stuff is installed under
share/mariadb rather than share/mysql.
modified:
configure.in
mysql-test/lib/My/ConfigFactory.pm
mysql-test/lib/mtr_cases.pm
mysql-test/mysql-test-run.pl
=== modified file 'configure.in'
--- a/configure.in 2009-10-07 17:26:36 +0000
+++ b/configure.in 2009-10-07 22:57:43 +0000
@@ -15,7 +15,7 @@ AC_CANONICAL_SYSTEM
# MySQL version number, but reset the maria subrelease (m1).
#
# Note: the following line must be parseable by win/configure.js:GetVersion()
-AM_INIT_AUTOMAKE(mariadb, 5.1.38m1-beta)
+AM_INIT_AUTOMAKE(mariadb, 5.1.38-beta)
AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10
=== modified file 'mysql-test/lib/My/ConfigFactory.pm'
--- a/mysql-test/lib/My/ConfigFactory.pm 2009-04-25 09:04:38 +0000
+++ b/mysql-test/lib/My/ConfigFactory.pm 2009-10-07 22:57:43 +0000
@@ -19,7 +19,7 @@ my @pre_rules=
);
-my @share_locations= ("share/mysql", "sql/share", "share");
+my @share_locations= ("share/mariadb", "share/mysql", "sql/share", "share");
sub get_basedir {
=== modified file 'mysql-test/lib/mtr_cases.pm'
--- a/mysql-test/lib/mtr_cases.pm 2009-09-07 20:50:10 +0000
+++ b/mysql-test/lib/mtr_cases.pm 2009-10-07 22:57:43 +0000
@@ -490,6 +490,8 @@ sub collect_one_suite($)
my $lib_innodb_plugin=
mtr_file_exists(::vs_config_dirs('storage/innodb_plugin', 'ha_innodb_plugin.dll'),
"$::basedir/storage/innodb_plugin/.libs/ha_innodb_plugin.so",
+ "$::basedir/lib/mariadb/plugin/ha_innodb_plugin.so",
+ "$::basedir/lib/mariadb/plugin/ha_innodb_plugin.dll",
"$::basedir/lib/mysql/plugin/ha_innodb_plugin.so",
"$::basedir/lib/mysql/plugin/ha_innodb_plugin.dll");
if ($::mysql_version_id >= 50100 && !(IS_WINDOWS && $::opt_embedded_server) &&
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-10-06 14:02:53 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-07 22:57:43 +0000
@@ -1018,7 +1018,8 @@ sub command_line_setup {
}
# Look for language files and charsetsdir, use same share
- $path_language= mtr_path_exists("$basedir/share/mysql/english",
+ $path_language= mtr_path_exists("$basedir/share/mariadb/english",
+ "$basedir/share/mysql/english",
"$basedir/sql/share/english",
"$basedir/share/english");
@@ -1887,6 +1888,7 @@ sub environment_setup {
my $lib_udf_example=
mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'),
"$basedir/sql/.libs/udf_example.so",
+ "$basedir/lib/mariadb/plugin/udf_example.so",
"$basedir/lib/mysql/plugin/udf_example.so",);
if ( $lib_udf_example )
@@ -1915,6 +1917,7 @@ sub environment_setup {
my $lib_example_plugin=
mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
"$basedir/storage/example/.libs/".$plugin_filename,
+ "$basedir/lib/mariadb/plugin/".$plugin_filename,
"$basedir/lib/mysql/plugin/".$plugin_filename);
$ENV{'EXAMPLE_PLUGIN'}=
($lib_example_plugin ? basename($lib_example_plugin) : "");
@@ -1931,6 +1934,7 @@ sub environment_setup {
my $lib_simple_parser=
mtr_file_exists(vs_config_dirs('plugin/fulltext', 'mypluglib.dll'),
"$basedir/plugin/fulltext/.libs/mypluglib.so",
+ "$basedir/lib/mariadb/plugin/mypluglib.so",
"$basedir/lib/mysql/plugin/mypluglib.so",);
$ENV{'SIMPLE_PARSER'}=
@@ -2074,6 +2078,7 @@ sub environment_setup {
my $file_mysql_fix_privilege_tables=
mtr_file_exists("$basedir/scripts/mysql_fix_privilege_tables.sql",
"$basedir/share/mysql_fix_privilege_tables.sql",
+ "$basedir/share/mariadb/mysql_fix_privilege_tables.sql",
"$basedir/share/mysql/mysql_fix_privilege_tables.sql");
$ENV{'MYSQL_FIX_PRIVILEGE_TABLES'}= $file_mysql_fix_privilege_tables;
@@ -2870,8 +2875,8 @@ sub mysql_install_db {
my $bootstrap_sql_file= "$opt_vardir/tmp/bootstrap.sql";
my $path_sql= my_find_file($install_basedir,
- ["mysql", "sql/share", "share/mysql",
- "share", "scripts"],
+ ["mysql", "sql/share", "share/mariadb",
+ "share/mysql", "share", "scripts"],
"mysql_system_tables.sql",
NOT_REQUIRED);
1
0
[Maria-developers] Rev 2767: MBUG#442254: mysql-test-run --embedded fails on Windows with: ERROR: .opt file references 'EXAMPLE_PLUGIN_OPT' in file:///home/psergey/bzr-new/maria-5.1-build2/
by Sergey Petrunya 08 Oct '09
by Sergey Petrunya 08 Oct '09
08 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build2/
------------------------------------------------------------
revno: 2767
revision-id: psergey(a)askmonty.org-20091007212904-81yqfkvgidlatwjc
parent: psergey(a)askmonty.org-20091007210029-bxfk4r2xo0128uhq
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build2
timestamp: Thu 2009-10-08 01:29:04 +0400
message:
MBUG#442254: mysql-test-run --embedded fails on Windows with: ERROR: .opt file references 'EXAMPLE_PLUGIN_OPT'
- Fix suggested by Kristian on review: ignore the test using mtr's facilities
=== modified file 'mysql-test/lib/mtr_cases.pm'
--- a/mysql-test/lib/mtr_cases.pm 2009-09-07 20:50:10 +0000
+++ b/mysql-test/lib/mtr_cases.pm 2009-10-07 21:29:04 +0000
@@ -1082,6 +1082,17 @@
$tinfo->{template_path}= $config;
}
+ if ( $tinfo->{'example_plugin_test'} )
+ {
+ if ( !$ENV{'EXAMPLE_PLUGIN'} )
+ {
+ $tinfo->{'skip'}= 1;
+ $tinfo->{'comment'}= "Test requires the 'example' plugin";
+ return $tinfo;
+ }
+ }
+
+
# Set extra config file to use
if (defined $defaults_extra_file) {
$tinfo->{extra_template_path}= $defaults_extra_file;
@@ -1134,6 +1145,7 @@
["federated.inc", "federated_test", 1],
["include/not_embedded.inc", "not_embedded", 1],
["include/not_valgrind.inc", "not_valgrind", 1],
+ ["include/have_example_plugin.inc", "example_plugin_test", 1]
);
2
1
[Maria-developers] Rev 2766: Fix win/configure.js: now configure.in has AM_INIT_AUTOMAKE(mariadb, ...) in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 07 Oct '09
by Sergey Petrunya 07 Oct '09
07 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2766
revision-id: psergey(a)askmonty.org-20091007210029-bxfk4r2xo0128uhq
parent: psergey(a)askmonty.org-20091007172636-oan0ue1yxk41bza1
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Thu 2009-10-08 01:00:29 +0400
message:
Fix win/configure.js: now configure.in has AM_INIT_AUTOMAKE(mariadb, ...)
- Part 2. make it really work.
=== modified file 'win/configure.js'
--- a/win/configure.js 2009-10-07 17:26:36 +0000
+++ b/win/configure.js 2009-10-07 21:00:29 +0000
@@ -157,11 +157,15 @@
{
var key = "AM_INIT_AUTOMAKE(mysql, ";
var key2 = "AM_INIT_AUTOMAKE(mariadb, ";
+ var key_len = key.length;
var pos = str.indexOf(key); //5.0.6-beta)
if (pos == -1)
+ {
pos = str.indexOf(key2);
+ key_len= key2.length;
+ }
if (pos == -1) return null;
- pos += key.length;
+ pos += key_len;
var end = str.indexOf(")", pos);
if (end == -1) return null;
return str.substring(pos, end);
1
0
[Maria-developers] Rev 2765: Fix win/configure.js: now configure.in has AM_INIT_AUTOMAKE(mariadb, ...) in file:///home/psergey/bzr-new/maria-5.1-build2/
by Sergey Petrunya 07 Oct '09
by Sergey Petrunya 07 Oct '09
07 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build2/
------------------------------------------------------------
revno: 2765
revision-id: psergey(a)askmonty.org-20091007172636-oan0ue1yxk41bza1
parent: psergey(a)askmonty.org-20091007165611-nah5830oiz64lbnw
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build2
timestamp: Wed 2009-10-07 21:26:36 +0400
message:
Fix win/configure.js: now configure.in has AM_INIT_AUTOMAKE(mariadb, ...)
=== modified file 'configure.in'
--- a/configure.in 2009-10-07 11:48:58 +0000
+++ b/configure.in 2009-10-07 17:26:36 +0000
@@ -13,6 +13,8 @@
#
# When merging new MySQL releases, update the version number to match the
# MySQL version number, but reset the maria subrelease (m1).
+#
+# Note: the following line must be parseable by win/configure.js:GetVersion()
AM_INIT_AUTOMAKE(mariadb, 5.1.38m1-beta)
AM_CONFIG_HEADER([include/config.h:config.h.in])
=== modified file 'win/configure.js'
--- a/win/configure.js 2009-09-07 20:50:10 +0000
+++ b/win/configure.js 2009-10-07 17:26:36 +0000
@@ -156,7 +156,10 @@
function GetVersion(str)
{
var key = "AM_INIT_AUTOMAKE(mysql, ";
+ var key2 = "AM_INIT_AUTOMAKE(mariadb, ";
var pos = str.indexOf(key); //5.0.6-beta)
+ if (pos == -1)
+ pos = str.indexOf(key2);
if (pos == -1) return null;
pos += key.length;
var end = str.indexOf(")", pos);
1
0
[Maria-developers] Rev 2764: Fix pbxt test suite failures: in file:///home/psergey/bzr-new/maria-5.1-build1/
by Sergey Petrunya 07 Oct '09
by Sergey Petrunya 07 Oct '09
07 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build1/
------------------------------------------------------------
revno: 2764
revision-id: psergey(a)askmonty.org-20091007165611-nah5830oiz64lbnw
parent: knielsen(a)knielsen-hq.org-20091007131559-afwjs2l485ghhhci
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build1
timestamp: Wed 2009-10-07 20:56:11 +0400
message:
Fix pbxt test suite failures:
- Update EXPLAIN results after table elimination
- mysqlslap now specifies 'Engine=' in CREATE TABLE instead of using
SET storage_engine=...
- For some reason, mysqltest logs "connect" command differently when PBXT
is the default storage engine. This is probably a bug in mysqltest which
we can't be bothered to investigate at the moment, so add --replace
=== modified file 'mysql-test/suite/pbxt/r/connect.result'
--- a/mysql-test/suite/pbxt/r/connect.result 2009-04-02 10:03:14 +0000
+++ b/mysql-test/suite/pbxt/r/connect.result 2009-10-07 16:56:11 +0000
@@ -61,8 +61,8 @@
Tables_in_test
connect(localhost,test,,test2,MASTER_PORT,MASTER_SOCKET);
ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
-connect(localhost,test,,"",MASTER_PORT,MASTER_SOCKET);
-ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
+connect(localhost,,,,MASTER_PORT,MASTER_SOCKET);
+ERROR 28000: Access denied for user ''@'localhost' (using password: NO)
connect(localhost,test,zorro,test2,MASTER_PORT,MASTER_SOCKET);
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
connect(localhost,test,zorro,test,MASTER_PORT,MASTER_SOCKET);
=== modified file 'mysql-test/suite/pbxt/r/mysqlslap.result'
--- a/mysql-test/suite/pbxt/r/mysqlslap.result 2009-04-02 10:03:14 +0000
+++ b/mysql-test/suite/pbxt/r/mysqlslap.result 2009-10-07 16:56:11 +0000
@@ -122,82 +122,76 @@
DROP SCHEMA IF EXISTS `mysqlslap`;
CREATE SCHEMA `mysqlslap`;
use mysqlslap;
-set storage_engine=`heap`;
-CREATE TABLE t1 (id int, name varchar(64));
-create table t2(foo1 varchar(32), foo2 varchar(32));
-INSERT INTO t1 VALUES (1, 'This is a test');
-insert into t2 values ('test', 'test2');
-select * from t1;
-select * from t2;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-CREATE SCHEMA `mysqlslap`;
-use mysqlslap;
-set storage_engine=`myisam`;
-CREATE TABLE t1 (id int, name varchar(64));
-create table t2(foo1 varchar(32), foo2 varchar(32));
-INSERT INTO t1 VALUES (1, 'This is a test');
-insert into t2 values ('test', 'test2');
-select * from t1;
-select * from t2;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-CREATE SCHEMA `mysqlslap`;
-use mysqlslap;
-set storage_engine=`heap`;
-CREATE TABLE t1 (id int, name varchar(64));
-create table t2(foo1 varchar(32), foo2 varchar(32));
-INSERT INTO t1 VALUES (1, 'This is a test');
-insert into t2 values ('test', 'test2');
-SHOW TABLES;
-select * from t1;
-select * from t2;
-SHOW TABLES;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-CREATE SCHEMA `mysqlslap`;
-use mysqlslap;
-set storage_engine=`myisam`;
-CREATE TABLE t1 (id int, name varchar(64));
-create table t2(foo1 varchar(32), foo2 varchar(32));
-INSERT INTO t1 VALUES (1, 'This is a test');
-insert into t2 values ('test', 'test2');
-SHOW TABLES;
-select * from t1;
-select * from t2;
-SHOW TABLES;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-CREATE SCHEMA `mysqlslap`;
-use mysqlslap;
-set storage_engine=`heap`;
-CREATE TABLE t1 (id int, name varchar(64));
-create table t2(foo1 varchar(32), foo2 varchar(32));
-INSERT INTO t1 VALUES (1, 'This is a test');
-insert into t2 values ('test', 'test2');
-SET AUTOCOMMIT=0;
-SHOW TABLES;
-SET AUTOCOMMIT=0;
-select * from t1;
-COMMIT;
-select * from t2;
-COMMIT;
-select * from t1;
-COMMIT;
-select * from t2;
-COMMIT;
-select * from t1;
-COMMIT;
-select * from t2;
-COMMIT;
-COMMIT;
-SHOW TABLES;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-DROP SCHEMA IF EXISTS `mysqlslap`;
-CREATE SCHEMA `mysqlslap`;
-use mysqlslap;
-set storage_engine=`myisam`;
-CREATE TABLE t1 (id int, name varchar(64));
+CREATE TABLE t1 (id int, name varchar(64)) Engine = heap;
+create table t2(foo1 varchar(32), foo2 varchar(32));
+INSERT INTO t1 VALUES (1, 'This is a test');
+insert into t2 values ('test', 'test2');
+select * from t1;
+select * from t2;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+CREATE SCHEMA `mysqlslap`;
+use mysqlslap;
+CREATE TABLE t1 (id int, name varchar(64)) Engine = myisam;
+create table t2(foo1 varchar(32), foo2 varchar(32));
+INSERT INTO t1 VALUES (1, 'This is a test');
+insert into t2 values ('test', 'test2');
+select * from t1;
+select * from t2;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+CREATE SCHEMA `mysqlslap`;
+use mysqlslap;
+CREATE TABLE t1 (id int, name varchar(64)) Engine = heap;
+create table t2(foo1 varchar(32), foo2 varchar(32));
+INSERT INTO t1 VALUES (1, 'This is a test');
+insert into t2 values ('test', 'test2');
+SHOW TABLES;
+select * from t1;
+select * from t2;
+SHOW TABLES;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+CREATE SCHEMA `mysqlslap`;
+use mysqlslap;
+CREATE TABLE t1 (id int, name varchar(64)) Engine = myisam;
+create table t2(foo1 varchar(32), foo2 varchar(32));
+INSERT INTO t1 VALUES (1, 'This is a test');
+insert into t2 values ('test', 'test2');
+SHOW TABLES;
+select * from t1;
+select * from t2;
+SHOW TABLES;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+CREATE SCHEMA `mysqlslap`;
+use mysqlslap;
+CREATE TABLE t1 (id int, name varchar(64)) Engine = heap;
+create table t2(foo1 varchar(32), foo2 varchar(32));
+INSERT INTO t1 VALUES (1, 'This is a test');
+insert into t2 values ('test', 'test2');
+SET AUTOCOMMIT=0;
+SHOW TABLES;
+SET AUTOCOMMIT=0;
+select * from t1;
+COMMIT;
+select * from t2;
+COMMIT;
+select * from t1;
+COMMIT;
+select * from t2;
+COMMIT;
+select * from t1;
+COMMIT;
+select * from t2;
+COMMIT;
+COMMIT;
+SHOW TABLES;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+DROP SCHEMA IF EXISTS `mysqlslap`;
+CREATE SCHEMA `mysqlslap`;
+use mysqlslap;
+CREATE TABLE t1 (id int, name varchar(64)) Engine = myisam;
create table t2(foo1 varchar(32), foo2 varchar(32));
INSERT INTO t1 VALUES (1, 'This is a test');
insert into t2 values ('test', 'test2');
=== modified file 'mysql-test/suite/pbxt/r/ps_11bugs.result'
--- a/mysql-test/suite/pbxt/r/ps_11bugs.result 2009-04-02 10:03:14 +0000
+++ b/mysql-test/suite/pbxt/r/ps_11bugs.result 2009-10-07 16:56:11 +0000
@@ -121,8 +121,8 @@
explain select * from t1 where 3 in (select (1+1) union select 1);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
-2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
-3 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL No tables used
+2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible HAVING
+3 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL Impossible HAVING
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
select * from t1 where 3 in (select (1+1) union select 1);
a
=== modified file 'mysql-test/suite/pbxt/r/select.result'
--- a/mysql-test/suite/pbxt/r/select.result 2009-08-17 15:57:58 +0000
+++ b/mysql-test/suite/pbxt/r/select.result 2009-10-07 16:56:11 +0000
@@ -3585,7 +3585,6 @@
EXPLAIN SELECT t1.a FROM t1 LEFT JOIN t2 ON t2.b=t1.b WHERE t1.a=3;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
-1 SIMPLE t2 const b b 22 const 1 Using index
DROP TABLE t1,t2;
CREATE TABLE t1(id int PRIMARY KEY, b int, e int);
CREATE TABLE t2(i int, a int, INDEX si(i), INDEX ai(a));
=== modified file 'mysql-test/suite/pbxt/r/union.result'
--- a/mysql-test/suite/pbxt/r/union.result 2009-08-17 15:57:58 +0000
+++ b/mysql-test/suite/pbxt/r/union.result 2009-10-07 16:56:11 +0000
@@ -480,7 +480,7 @@
2 UNION t2 const PRIMARY PRIMARY 4 const 1 100.00
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL NULL
Warnings:
-Note 1003 (select '1' AS `a`,'1' AS `b` from `test`.`t1` where ('1' = 1)) union (select '1' AS `a`,'10' AS `b` from `test`.`t2` where ('1' = 1))
+Note 1003 (select '1' AS `a`,'1' AS `b` from `test`.`t1` where 1) union (select '1' AS `a`,'10' AS `b` from `test`.`t2` where 1)
(select * from t1 where a=5) union (select * from t2 where a=1);
a b
1 10
=== modified file 'mysql-test/suite/pbxt/t/connect.test'
--- a/mysql-test/suite/pbxt/t/connect.test 2009-04-02 10:03:14 +0000
+++ b/mysql-test/suite/pbxt/t/connect.test 2009-10-07 16:56:11 +0000
@@ -42,7 +42,7 @@
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
--error 1045
connect (fail_con,localhost,test,,test2);
---replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
+--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT test ""
--error 1045
connect (fail_con,localhost,test,,"");
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2762)
by knielsen@knielsen-hq.org 07 Oct '09
by knielsen@knielsen-hq.org 07 Oct '09
07 Oct '09
#At lp:maria
2762 knielsen(a)knielsen-hq.org 2009-10-07
Change naming of our package to mariadb rather than mysql.
modified:
configure.in
=== modified file 'configure.in'
--- a/configure.in 2009-10-02 12:55:16 +0000
+++ b/configure.in 2009-10-07 11:48:58 +0000
@@ -12,8 +12,8 @@ AC_CANONICAL_SYSTEM
# in mysqlbinlog.cc / check_master_version().
#
# When merging new MySQL releases, update the version number to match the
-# MySQL version number, but reset the maria subrelease (-beta1).
-AM_INIT_AUTOMAKE(mysql, 5.1.38-MariaDB-beta1)
+# MySQL version number, but reset the maria subrelease (m1).
+AM_INIT_AUTOMAKE(mariadb, 5.1.38m1-beta)
AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2761)
by knielsen@knielsen-hq.org 07 Oct '09
by knielsen@knielsen-hq.org 07 Oct '09
07 Oct '09
#At lp:maria
2761 knielsen(a)knielsen-hq.org 2009-10-07
Fix test case partition_recover_myisam for --embedded-server.
modified:
mysql-test/suite/parts/t/partition_recover_myisam.test
=== modified file 'mysql-test/suite/parts/t/partition_recover_myisam.test'
--- a/mysql-test/suite/parts/t/partition_recover_myisam.test 2009-02-01 12:00:48 +0000
+++ b/mysql-test/suite/parts/t/partition_recover_myisam.test 2009-10-07 07:57:48 +0000
@@ -16,6 +16,8 @@ FLUSH TABLES;
let $MYSQLD_DATADIR= `select @@datadir`;
--remove_file $MYSQLD_DATADIR/test/t1_will_crash.MYI
--copy_file std_data/corrupt_t1.MYI $MYSQLD_DATADIR/test/t1_will_crash.MYI
+# Embedded server doesn't chdir to data directory
+--replace_regex /Table '.*\/data\/test\/t1_will_crash/Table '.\/test\/t1_will_crash/
SELECT * FROM t1_will_crash;
DROP TABLE t1_will_crash;
CREATE TABLE t1_will_crash (a INT, KEY (a))
@@ -29,5 +31,7 @@ FLUSH TABLES;
--echo # head -c1024 t1#P#p1.MYI > corrupt_t1#P#p1.MYI
--remove_file $MYSQLD_DATADIR/test/t1_will_crash#P#p1.MYI
--copy_file std_data/corrupt_t1#P#p1.MYI $MYSQLD_DATADIR/test/t1_will_crash#P#p1.MYI
+# Embedded server doesn't chdir to data directory
+--replace_regex /Table '.*\/data\/test\/t1_will_crash/Table '.\/test\/t1_will_crash/
SELECT * FROM t1_will_crash;
DROP TABLE t1_will_crash;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2760)
by knielsen@knielsen-hq.org 07 Oct '09
by knielsen@knielsen-hq.org 07 Oct '09
07 Oct '09
#At lp:maria
2760 knielsen(a)knielsen-hq.org 2009-10-07
Add missing PBXT windows file to `make dist`.
modified:
storage/pbxt/src/Makefile.am
=== modified file 'storage/pbxt/src/Makefile.am'
--- a/storage/pbxt/src/Makefile.am 2009-10-06 18:26:11 +0000
+++ b/storage/pbxt/src/Makefile.am 2009-10-07 07:40:56 +0000
@@ -49,4 +49,4 @@ libpbxt_a_SOURCES = $(libpbxt_la_SOURCE
libpbxt_a_CXXFLAGS = $(AM_CXXFLAGS)
libpbxt_a_CFLAGS = $(AM_CFLAGS) -std=c99
-EXTRA_DIST = pbms_enabled.cc
+EXTRA_DIST = pbms_enabled.cc win_inttypes.h
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2743: Merge a bunch of small fixes from release tree into main lp:maria.
by noreply@launchpad.net 06 Oct '09
by noreply@launchpad.net 06 Oct '09
06 Oct '09
Merge authors:
Kristian Nielsen (knielsen)
Peter Lieverdink <me(a)cafuego.net>
Sergey Petrunia (sergefp)
------------------------------------------------------------
revno: 2743 [merge]
committer: knielsen(a)knielsen-hq.org
branch nick: mariadb-5.1
timestamp: Tue 2009-10-06 20:37:55 +0200
message:
Merge a bunch of small fixes from release tree into main lp:maria.
added:
mysql-test/include/have_working_dns.inc
mysql-test/r/have_working_dns.require
mysql-test/r/variables_debug_notembedded.result
mysql-test/t/variables_debug_notembedded.test
renamed:
storage/innodb_plugin/plug.in => storage/innodb_plugin/plug.in.disabled
storage/pbxt/src/CMakeLists.txt => storage/pbxt/CMakeLists.txt*
modified:
BUILD/SETUP.sh
CMakeLists.txt
Makefile.am
config/ac-macros/libevent.m4
configure.in
extra/libevent/Makefile.am
libmysql/libmysql.def
libmysqld/CMakeLists.txt
libmysqld/libmysqld.def
mysql-test/include/mtr_check.sql
mysql-test/mysql-test-run.pl
mysql-test/r/ctype_gbk_binlog.result
mysql-test/r/information_schema.result
mysql-test/r/innodb-index.result
mysql-test/r/merge-big.result
mysql-test/r/mysqlbinlog-cp932.result
mysql-test/r/mysqlbinlog_row_big.result
mysql-test/r/variables-big.result
mysql-test/r/variables_debug.result
mysql-test/suite/binlog/r/binlog_incident.result
mysql-test/suite/binlog/r/binlog_tmp_table.result
mysql-test/suite/binlog/t/binlog_incident.test
mysql-test/suite/binlog/t/binlog_tmp_table.test
mysql-test/suite/parts/inc/partition_key_32col.inc
mysql-test/suite/parts/r/partition_special_innodb.result
mysql-test/suite/parts/r/partition_special_myisam.result
mysql-test/t/ctype_gbk_binlog.test
mysql-test/t/events_time_zone.test
mysql-test/t/information_schema.test
mysql-test/t/innodb-index.test
mysql-test/t/merge-big.test
mysql-test/t/mysql.test
mysql-test/t/mysql_upgrade.test
mysql-test/t/mysqlbinlog-cp932.test
mysql-test/t/mysqlbinlog_row_big.test
mysql-test/t/variables-big.test
mysql-test/t/variables_debug.test
sql/sql_plugin.cc
storage/maria/ma_blockrec.c
storage/pbxt/Makefile.am
storage/pbxt/src/Makefile.am
storage/pbxt/src/pbms_enabled.cc
storage/pbxt/src/thread_xt.cc
support-files/compiler_warnings.supp
win/Makefile.am
storage/pbxt/CMakeLists.txt*
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2743)
by knielsen@knielsen-hq.org 06 Oct '09
by knielsen@knielsen-hq.org 06 Oct '09
06 Oct '09
#At lp:maria
2743 knielsen(a)knielsen-hq.org 2009-10-06 [merge]
Merge a bunch of small fixes from release tree into main lp:maria.
added:
mysql-test/include/have_working_dns.inc
mysql-test/r/have_working_dns.require
mysql-test/r/variables_debug_notembedded.result
mysql-test/t/variables_debug_notembedded.test
renamed:
storage/innodb_plugin/plug.in => storage/innodb_plugin/plug.in.disabled
storage/pbxt/src/CMakeLists.txt => storage/pbxt/CMakeLists.txt*
modified:
BUILD/SETUP.sh
CMakeLists.txt
Makefile.am
config/ac-macros/libevent.m4
configure.in
extra/libevent/Makefile.am
libmysql/libmysql.def
libmysqld/CMakeLists.txt
libmysqld/libmysqld.def
mysql-test/include/mtr_check.sql
mysql-test/mysql-test-run.pl
mysql-test/r/ctype_gbk_binlog.result
mysql-test/r/information_schema.result
mysql-test/r/innodb-index.result
mysql-test/r/merge-big.result
mysql-test/r/mysqlbinlog-cp932.result
mysql-test/r/mysqlbinlog_row_big.result
mysql-test/r/variables-big.result
mysql-test/r/variables_debug.result
mysql-test/suite/binlog/r/binlog_incident.result
mysql-test/suite/binlog/r/binlog_tmp_table.result
mysql-test/suite/binlog/t/binlog_incident.test
mysql-test/suite/binlog/t/binlog_tmp_table.test
mysql-test/suite/parts/inc/partition_key_32col.inc
mysql-test/suite/parts/r/partition_special_innodb.result
mysql-test/suite/parts/r/partition_special_myisam.result
mysql-test/t/ctype_gbk_binlog.test
mysql-test/t/events_time_zone.test
mysql-test/t/information_schema.test
mysql-test/t/innodb-index.test
mysql-test/t/merge-big.test
mysql-test/t/mysql.test
mysql-test/t/mysql_upgrade.test
mysql-test/t/mysqlbinlog-cp932.test
mysql-test/t/mysqlbinlog_row_big.test
mysql-test/t/variables-big.test
mysql-test/t/variables_debug.test
sql/sql_plugin.cc
storage/maria/ma_blockrec.c
storage/pbxt/Makefile.am
storage/pbxt/src/Makefile.am
storage/pbxt/src/pbms_enabled.cc
storage/pbxt/src/thread_xt.cc
support-files/compiler_warnings.supp
win/Makefile.am
storage/pbxt/CMakeLists.txt*
=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh 2009-09-10 08:11:23 +0000
+++ b/BUILD/SETUP.sh 2009-09-29 19:02:48 +0000
@@ -173,7 +173,7 @@ local_infile_configs="--enable-local-inf
max_no_embedded_configs="$SSL_LIBRARY --with-plugins=max"
max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent"
-max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server -with-libevent"
+max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server --with-libevent"
# Disable NDB in maria max builds
max_configs=$max_no_ndb_configs
=== modified file 'CMakeLists.txt'
--- a/CMakeLists.txt 2009-09-15 21:20:58 +0000
+++ b/CMakeLists.txt 2009-10-03 19:24:13 +0000
@@ -233,6 +233,9 @@ FOREACH(SUBDIR ${STORAGE_SUBDIRS})
# where appropriate.
STRING (REGEX MATCH "MYSQL_STORAGE_ENGINE.[a-z]*" PLUGIN_NAME ${PLUGIN_FILE_CONTENT})
STRING (REGEX REPLACE "MYSQL_STORAGE_ENGINE.(.*)" "\\1" PLUGIN_NAME ${PLUGIN_NAME})
+
+ # Also remember this "xtradb"/"innobase" name discrepancy for libmysqld/CMakeLists.txt:
+ SET (plugin_dir_${PLUGIN_NAME} ${DIRNAME})
IF(MYSQL_PLUGIN_MANDATORY)
SET(WITH_${ENGINE}_STORAGE_ENGINE TRUE)
@@ -245,6 +248,7 @@ FOREACH(SUBDIR ${STORAGE_SUBDIRS})
ELSE(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
SET(ENGINE_BUILD_TYPE "NONE")
ENDIF(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
+
IF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${PLUGIN_NAME}_plugin")
SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${PLUGIN_NAME})
=== modified file 'Makefile.am'
--- a/Makefile.am 2009-09-07 20:50:10 +0000
+++ b/Makefile.am 2009-10-02 09:40:03 +0000
@@ -60,6 +60,11 @@ dist-hook:
--srcdir=$(top_srcdir)
storage/myisam/myisamchk --silent --fast $(distdir)/win/data/mysql/*.MYI
+# Simple target to allow scripts etc. to get the name of the source
+# tarball easily.
+show-dist-name:
+ @echo "$(PACKAGE)-$(VERSION)"
+
all-local: @ABI_CHECK@
tags:
@@ -81,6 +86,9 @@ tags:
# environment variable MTR_BUILD_THREAD. The script "mysql-test-run"
# will then calculate the various port numbers it needs from this,
# making sure each user use different ports.
+#
+# Set MTR_EXTRA_OPTIONS to add custom options for mysql-test-run,
+# like MTR_EXTRA_OPTIONS"--parallel=3 --mem".
test-unit:
cd unittest; $(MAKE) test
@@ -90,29 +98,29 @@ test-unit-big:
test-ps:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) --ps-protocol --mysqld=--binlog-format=mixed
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) --ps-protocol --mysqld=--binlog-format=mixed
test-nr:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) --mysqld=--binlog-format=row
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) --mysqld=--binlog-format=row
test-pr:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol --mysqld=--binlog-format=row #@libevent_test_option@
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) $(mem) --ps-protocol --mysqld=--binlog-format=row #@libevent_test_option@
test-ns:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem) --mysqld=--binlog-format=mixed
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) $(mem) --mysqld=--binlog-format=mixed
test-binlog-statement:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) --mysqld=--binlog-format=statement
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) --mysqld=--binlog-format=statement
# This code is duplicated in "test-bt", see the Changeset comment of 2007-Dec-07
test-embedded:
if [ -e bin/mysqltest_embedded -o -e libmysqld/examples/mysqltest_embedded ] ; then \
cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=embedded --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=embedded --force --timer \
--embedded-server --skip-rpl --skip-ndbcluster ; \
else \
echo "no program found for 'embedded' tests - skipped testing" ; \
@@ -120,14 +128,14 @@ test-embedded:
test-reprepare:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) $(mem) --ps-protocol \
--mysqld=--debug=+d,reprepare_each_statement
test: test-ns test-pr
smoke:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --do-test=s
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --do-test=s
test-full: test test-nr test-ps
@@ -143,43 +151,43 @@ test-force-mem:
test-bt:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=normal --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=normal --force --timer \
--skip-ndbcluster --report-features
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ps --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ps --force --timer \
--skip-ndbcluster --ps-protocol
-if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \
cd mysql-test ; \
MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ndb+rpl_ndb+ps --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ndb+rpl_ndb+ps --force --timer \
--ps-protocol --mysqld=--binlog-format=row --suite=ndb,rpl_ndb ; \
MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ndb --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ndb --force --timer \
--with-ndbcluster-only ; \
else \
echo "no program found for 'ndbcluster' tests - skipped testing" ; \
fi
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=funcs1+ps --ps-protocol --reorder --suite=funcs_1
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=funcs1+ps --ps-protocol --reorder --suite=funcs_1
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=funcs2 --suite=funcs_2
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=partitions --suite=parts
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=partitions --suite=parts
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=stress --suite=stress
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=jp --suite=jp
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=jp --suite=jp
-if [ -d mysql-test/suite/nist ] ; then \
cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=nist --force --suite=nist ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=nist --force --suite=nist ; \
fi
-if [ -d mysql-test/suite/nist ] ; then \
cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=nist+ps --force --suite=nist --ps-protocol ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=nist+ps --force --suite=nist --ps-protocol ; \
fi
-if [ -e bin/mysqltest_embedded -o -e libmysqld/examples/mysqltest_embedded ] ; then \
cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=embedded --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=embedded --force --timer \
--embedded-server --skip-rpl --skip-ndbcluster ; \
else \
echo "no program found for 'embedded' tests - skipped testing" ; \
@@ -187,22 +195,22 @@ test-bt:
test-bt-fast:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ps --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ps --force --timer \
--skip-ndbcluster --ps-protocol --report-features
-if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \
cd mysql-test ; \
MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ndb --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ndb --force --timer \
--with-ndbcluster-only ; \
else \
echo "no program found for 'ndbcluster' tests - skipped testing" ; \
fi
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=stress --suite=stress
test-bt-debug:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=debug --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=debug --force --timer \
--skip-ndbcluster --skip-rpl --report-features
test-bt-debug-fast:
@@ -216,32 +224,32 @@ test-force-full-pl: test-force-full
test-ext-funcs:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --reorder --suite=funcs_1 ; \
- @PERL@ ./mysql-test-run.pl --force --suite=funcs_2
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --reorder --suite=funcs_1 ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --suite=funcs_2
test-ext-rpl:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --suite=rpl
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --suite=rpl
test-ext-partitions:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --suite=parts
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --suite=parts
test-ext-jp:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --suite=jp
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --suite=jp
test-ext-stress:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --big-test --suite=stress
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --big-test --suite=stress
test-ext: test-ext-funcs test-ext-rpl test-ext-partitions test-ext-jp test-ext-stress
test-fast:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(subset) --force --skip-ndb --skip-innodb --skip-im --skip-rpl ; \
- @PERL@ ./mysql-test-run.pl $(subset) --force --suite=funcs_1 --do-test=myisam ; \
- @PERL@ ./mysql-test-run.pl $(subset) --force --suite=stress --do-test=ddl_myisam
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(subset) --force --skip-ndb --skip-innodb --skip-im --skip-rpl ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(subset) --force --suite=funcs_1 --do-test=myisam ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(subset) --force --suite=stress --do-test=ddl_myisam
test-fast-view:
$(MAKE) subset=--view-protocol test-fast
=== modified file 'config/ac-macros/libevent.m4'
--- a/config/ac-macros/libevent.m4 2009-03-12 22:27:35 +0000
+++ b/config/ac-macros/libevent.m4 2009-09-29 23:36:15 +0000
@@ -13,7 +13,7 @@ AC_DEFUN([MYSQL_USE_BUNDLED_LIBEVENT], [
AC_SUBST([libevent_dir])
libevent_libs="\$(top_builddir)/extra/libevent/libevent.a"
- libevent_includes="-I\$(top_builddir)/extra/libevent"
+ libevent_includes="-I\$(top_srcdir)/extra/libevent"
libevent_test_option="--mysqld=--thread-handling=pool-of-threads"
AC_SUBST(libevent_libs)
AC_SUBST(libevent_includes)
=== modified file 'configure.in'
--- a/configure.in 2009-10-02 10:36:28 +0000
+++ b/configure.in 2009-10-02 12:55:16 +0000
@@ -2697,7 +2697,7 @@ case $SYSTEM_TYPE in
fi
# if there is no readline, but we want to build with readline, we fail
- if [test "$want_to_use_readline" = "yes"] && [test ! -d "./cmd-line-utils/readline"]
+ if [test "$want_to_use_readline" = "yes"] && [test ! -d "$srcdir/cmd-line-utils/readline"]
then
AC_MSG_ERROR([This commercially licensed MySQL source package can't
be built with libreadline. Please use --with-libedit to use
=== modified file 'extra/libevent/Makefile.am'
--- a/extra/libevent/Makefile.am 2009-03-12 22:27:35 +0000
+++ b/extra/libevent/Makefile.am 2009-09-29 23:00:57 +0000
@@ -22,7 +22,7 @@ include_HEADERS = event.h evutil.h event
BUILT_SOURCES = event-config.h
-event-config.h: $(top_srcdir)/include/config.h
+event-config.h: $(top_builddir)/include/config.h
echo '/* event-config.h' > $@
echo ' * Generated by autoconf; post-processed by libevent.' >> $@
echo ' * Do not edit this file.' >> $@
@@ -33,7 +33,7 @@ event-config.h: $(top_srcdir)/include/co
sed -e 's/#define /#define _EVENT_/' \
-e 's/#undef /#undef _EVENT_/' \
- -e 's/#ifndef /#ifndef _EVENT_/' < $(top_srcdir)/include/config.h >> $@
+ -e 's/#ifndef /#ifndef _EVENT_/' < $(top_builddir)/include/config.h >> $@
echo "#endif" >> $@
AM_CPPFLAGS = -Icompat -I$(top_srcdir)/include
=== modified file 'libmysql/libmysql.def'
--- a/libmysql/libmysql.def 2007-11-26 18:10:26 +0000
+++ b/libmysql/libmysql.def 2009-10-04 22:22:57 +0000
@@ -151,3 +151,4 @@ EXPORTS
mysql_get_character_set_info
get_defaults_options
modify_defaults_file
+ mysql_get_server_name
=== modified file 'libmysqld/CMakeLists.txt'
--- a/libmysqld/CMakeLists.txt 2009-09-07 20:50:10 +0000
+++ b/libmysqld/CMakeLists.txt 2009-10-03 19:24:13 +0000
@@ -88,10 +88,10 @@ FOREACH(rpath ${VIO_SOURCES})
ENDFOREACH(rpath)
FOREACH (ENGINE_LIB ${MYSQLD_STATIC_ENGINE_LIBS})
- INCLUDE(${CMAKE_SOURCE_DIR}/storage/${ENGINE_LIB}/CMakeLists.txt)
+ INCLUDE(${CMAKE_SOURCE_DIR}/storage/${plugin_dir_${ENGINE_LIB}}/CMakeLists.txt)
STRING(TOUPPER ${ENGINE_LIB} ENGINE_LIB_UPPER)
FOREACH(rpath ${${ENGINE_LIB_UPPER}_SOURCES})
- SET(LIB_SOURCES ${LIB_SOURCES} ${CMAKE_SOURCE_DIR}/storage/${ENGINE_LIB}/${rpath})
+ SET(LIB_SOURCES ${LIB_SOURCES} ${CMAKE_SOURCE_DIR}/storage/${plugin_dir_${ENGINE_LIB}}/${rpath})
ENDFOREACH(rpath)
ENDFOREACH(ENGINE_LIB)
@@ -112,6 +112,7 @@ SET(LIBMYSQLD_SOURCES emb_qcache.cc libm
../sql/item_xmlfunc.cc ../sql/key.cc ../sql/lock.cc ../sql/log.cc
../sql/log_event.cc ../sql/mf_iocache.cc ../sql/my_decimal.cc
../sql/net_serv.cc ../sql/opt_range.cc ../sql/opt_sum.cc
+ ../sql/opt_table_elimination.cc
../sql/parse_file.cc ../sql/procedure.cc ../sql/protocol.cc
../sql/records.cc ../sql/repl_failsafe.cc ../sql/rpl_filter.cc
../sql/rpl_record.cc
=== modified file 'libmysqld/libmysqld.def'
--- a/libmysqld/libmysqld.def 2008-12-04 18:41:53 +0000
+++ b/libmysqld/libmysqld.def 2009-10-04 22:22:57 +0000
@@ -108,3 +108,4 @@ EXPORTS
mysql_stmt_attr_get
mysql_stmt_attr_set
mysql_stmt_field_count
+ mysql_get_server_name
=== added file 'mysql-test/include/have_working_dns.inc'
--- a/mysql-test/include/have_working_dns.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/have_working_dns.inc 2009-10-05 13:22:23 +0000
@@ -0,0 +1,11 @@
+#
+# Check if we have a working DNS.
+# Some 'wildcard dns' return some address even for non-existing hosts. This
+# makes it hard to test connections to such host names.
+# The actual check for working DNS is done in Perl, and the result available
+# in an environment variable.
+#
+--require r/have_working_dns.require
+disable_query_log;
+eval SELECT LENGTH('$HAVE_BROKEN_DNS') = 0 AS 'have_working_dns';
+enable_query_log;
=== modified file 'mysql-test/include/mtr_check.sql'
--- a/mysql-test/include/mtr_check.sql 2009-09-07 20:50:10 +0000
+++ b/mysql-test/include/mtr_check.sql 2009-10-03 23:20:51 +0000
@@ -12,7 +12,7 @@ BEGIN
-- Dump all global variables except those
-- that are supposed to change
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
- WHERE variable_name != 'timestamp' AND variable_name != "debug"
+ WHERE variable_name != 'timestamp'
AND variable_name != 'INNODB_IBUF_MAX_SIZE'
ORDER BY variable_name;
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-10-05 12:26:57 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-06 18:37:55 +0000
@@ -126,13 +126,13 @@ my $path_config_file; # The ge
# executables will be used by the test suite.
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
-my $DEFAULT_SUITES= "binlog,federated,main,maria,rpl,innodb";
+my $DEFAULT_SUITES= "binlog,federated,main,maria,rpl,innodb,parts";
my $opt_suites;
our $opt_usage;
our $opt_list_options;
our $opt_suites;
-our $opt_suites_default= "main,backup,backup_engines,binlog,rpl"; # Default suites to run
+our $opt_suites_default= "main,backup,backup_engines,binlog,rpl,parts"; # Default suites to run
our $opt_script_debug= 0; # Script debugging, enable with --script-debug
our $opt_verbose= 0; # Verbose output, enable with --verbose
our $exe_mysql;
@@ -844,7 +844,7 @@ sub command_line_setup {
'ssl|with-openssl' => \$opt_ssl,
'skip-ssl' => \$opt_skip_ssl,
'compress' => \$opt_compress,
- 'vs-config' => \$opt_vs_config,
+ 'vs-config=s' => \$opt_vs_config,
# Max number of parallel threads to use
'parallel=s' => \$opt_parallel,
@@ -1886,7 +1886,8 @@ sub environment_setup {
# --------------------------------------------------------------------------
my $lib_udf_example=
mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'),
- "$basedir/sql/.libs/udf_example.so",);
+ "$basedir/sql/.libs/udf_example.so",
+ "$basedir/lib/mysql/plugin/udf_example.so",);
if ( $lib_udf_example )
{
@@ -1913,7 +1914,8 @@ sub environment_setup {
}
my $lib_example_plugin=
mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
- "$basedir/storage/example/.libs/".$plugin_filename);
+ "$basedir/storage/example/.libs/".$plugin_filename,
+ "$basedir/lib/mysql/plugin/".$plugin_filename);
$ENV{'EXAMPLE_PLUGIN'}=
($lib_example_plugin ? basename($lib_example_plugin) : "");
$ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
@@ -1928,7 +1930,8 @@ sub environment_setup {
# ----------------------------------------------------
my $lib_simple_parser=
mtr_file_exists(vs_config_dirs('plugin/fulltext', 'mypluglib.dll'),
- "$basedir/plugin/fulltext/.libs/mypluglib.so",);
+ "$basedir/plugin/fulltext/.libs/mypluglib.so",
+ "$basedir/lib/mysql/plugin/mypluglib.so",);
$ENV{'SIMPLE_PARSER'}=
($lib_simple_parser ? basename($lib_simple_parser) : "");
@@ -2000,6 +2003,15 @@ sub environment_setup {
$ENV{'MYSQL_TMP_DIR'}= $opt_tmpdir;
$ENV{'MYSQLTEST_VARDIR'}= $opt_vardir;
+ #
+ # Some stupid^H^H^H^H^H^Hignorant network providers set up "wildcard DNS"
+ # servers that return some given web server address for any lookup of a
+ # non-existent host name. This confuses test cases that want to test the
+ # behaviour when connecting to a non-existing host, so we need to be able
+ # to disable those tests when DNS is broken.
+ #
+ $ENV{HAVE_BROKEN_DNS}= defined(gethostbyname('invalid_hostname'));
+
# ----------------------------------------------------
# Setup env for NDB
# ----------------------------------------------------
=== modified file 'mysql-test/r/ctype_gbk_binlog.result'
--- a/mysql-test/r/ctype_gbk_binlog.result 2009-07-07 14:18:44 +0000
+++ b/mysql-test/r/ctype_gbk_binlog.result 2009-09-30 06:35:31 +0000
@@ -1,3 +1,4 @@
+RESET MASTER;
SET NAMES gbk;
CREATE TABLE t1 (
f1 BLOB
=== added file 'mysql-test/r/have_working_dns.require'
--- a/mysql-test/r/have_working_dns.require 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/have_working_dns.require 2009-10-05 13:22:23 +0000
@@ -0,0 +1,2 @@
+have_working_dns
+1
=== modified file 'mysql-test/r/information_schema.result'
--- a/mysql-test/r/information_schema.result 2009-09-23 11:03:47 +0000
+++ b/mysql-test/r/information_schema.result 2009-09-29 20:19:43 +0000
@@ -1385,7 +1385,7 @@ who
other connection here
SELECT IF(`time` > 0, 'OK', `time`) AS time_low,
IF(`time` < 1000, 'OK', `time`) AS time_high,
-IF(time_ms > 900, 'OK', time_ms) AS time_ms_low,
+IF(time_ms > 1500, 'OK', time_ms) AS time_ms_low,
IF(time_ms < 1000000, 'OK', time_ms) AS time_ms_high
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE ID=@tid;
=== modified file 'mysql-test/r/innodb-index.result'
--- a/mysql-test/r/innodb-index.result 2009-08-03 20:09:53 +0000
+++ b/mysql-test/r/innodb-index.result 2009-10-06 11:39:57 +0000
@@ -464,7 +464,7 @@ ERROR 23000: Cannot delete or update a p
drop index dc on t4;
ERROR 42000: Can't DROP 'dc'; check that column/key exists
alter table t3 drop foreign key dc;
-ERROR HY000: Error on rename of './test/t3' to '#sql2-temporary' (errno: 152)
+ERROR HY000: Error on rename of './test/t3' to './#sql2-temporary' (errno: 152)
alter table t4 drop foreign key dc;
select * from t2;
a b c d e
=== modified file 'mysql-test/r/merge-big.result'
--- a/mysql-test/r/merge-big.result 2009-03-12 22:29:39 +0000
+++ b/mysql-test/r/merge-big.result 2009-10-03 19:12:24 +0000
@@ -7,6 +7,7 @@ drop table if exists t1,t2,t3,t4,t5,t6;
CREATE TABLE t1 (c1 INT) ENGINE= MyISAM;
LOCK TABLE t1 WRITE;
# connection con1
+SET @orig_debug=@@debug;
SET GLOBAL debug="+d,sleep_open_and_lock_after_open";
INSERT INTO t1 VALUES (1);
# connection default
@@ -21,6 +22,6 @@ SELECT * FROM t1;
c1
UNLOCK TABLES;
# connection con1
-SET GLOBAL debug="-d,sleep_open_and_lock_after_open";
+SET GLOBAL debug=@orig_debug;
# connection default
DROP TABLE t1;
=== modified file 'mysql-test/r/mysqlbinlog-cp932.result'
--- a/mysql-test/r/mysqlbinlog-cp932.result 2007-02-19 10:57:06 +0000
+++ b/mysql-test/r/mysqlbinlog-cp932.result 2009-09-30 06:35:31 +0000
@@ -1,4 +1,4 @@
-flush logs;
+RESET MASTER;
create table t3 (f text character set utf8);
create table t4 (f text character set cp932);
flush logs;
=== modified file 'mysql-test/r/mysqlbinlog_row_big.result'
--- a/mysql-test/r/mysqlbinlog_row_big.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/mysqlbinlog_row_big.result 2009-10-03 23:20:51 +0000
@@ -1,9 +1,4 @@
#
-# We need big packets.
-#
-SET @old_global_max_allowed_packet=@@global.max_allowed_packet;
-SET @@global.max_allowed_packet= 1024*1024*1024;
-#
# Preparatory cleanup.
#
DROP TABLE IF EXISTS t1;
@@ -104,5 +99,4 @@ FLUSH LOGS;
# reset variable value to pass testcase checks
SET @@global.max_allowed_packet = 1048576;
DROP TABLE t1;
-SET @@global.max_allowed_packet=@old_global_max_allowed_packet;
remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_big_1.out
=== modified file 'mysql-test/r/variables-big.result'
--- a/mysql-test/r/variables-big.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/variables-big.result 2009-10-03 23:20:51 +0000
@@ -1,20 +1,20 @@
-set session transaction_prealloc_size=1024*1024*1024*1;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*2;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*3;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*4;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*5;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
+SET SESSION transaction_prealloc_size=1024*1024*1024*1;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*2;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*3;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*4;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*5;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
=== modified file 'mysql-test/r/variables_debug.result'
--- a/mysql-test/r/variables_debug.result 2009-06-24 22:22:20 +0000
+++ b/mysql-test/r/variables_debug.result 2009-10-03 18:56:54 +0000
@@ -10,18 +10,3 @@ set debug= '-P';
select @@debug;
@@debug
T
-set session debug="t";
-show session variables like 'debug';
-Variable_name Value
-debug t
-set session debug="t";
-show session variables like 'debug';
-Variable_name Value
-debug t
-set session debug="d:t";
-show session variables like 'debug';
-Variable_name Value
-debug d:t
-show session variables like 'debug';
-Variable_name Value
-debug t
=== added file 'mysql-test/r/variables_debug_notembedded.result'
--- a/mysql-test/r/variables_debug_notembedded.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/variables_debug_notembedded.result 2009-10-03 18:56:54 +0000
@@ -0,0 +1,15 @@
+set session debug="t";
+show session variables like 'debug';
+Variable_name Value
+debug t
+set session debug="t";
+show session variables like 'debug';
+Variable_name Value
+debug t
+set session debug="d:t";
+show session variables like 'debug';
+Variable_name Value
+debug d:t
+show session variables like 'debug';
+Variable_name Value
+debug t
=== modified file 'mysql-test/suite/binlog/r/binlog_incident.result'
--- a/mysql-test/suite/binlog/r/binlog_incident.result 2009-05-11 11:32:38 +0000
+++ b/mysql-test/suite/binlog/r/binlog_incident.result 2009-09-30 06:35:31 +0000
@@ -1,3 +1,4 @@
+RESET MASTER;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2),(3);
SELECT * FROM t1;
=== modified file 'mysql-test/suite/binlog/r/binlog_tmp_table.result'
--- a/mysql-test/suite/binlog/r/binlog_tmp_table.result 2009-01-28 14:35:12 +0000
+++ b/mysql-test/suite/binlog/r/binlog_tmp_table.result 2009-09-30 06:35:31 +0000
@@ -1,3 +1,4 @@
+RESET MASTER;
create table foo (a int);
flush logs;
create temporary table tmp1_foo like foo;
=== modified file 'mysql-test/suite/binlog/t/binlog_incident.test'
--- a/mysql-test/suite/binlog/t/binlog_incident.test 2009-05-11 11:32:38 +0000
+++ b/mysql-test/suite/binlog/t/binlog_incident.test 2009-09-30 06:35:31 +0000
@@ -6,6 +6,7 @@ source include/have_log_bin.inc;
source include/have_debug.inc;
let $MYSQLD_DATADIR= `select @@datadir`;
+RESET MASTER;
CREATE TABLE t1 (a INT);
@@ -24,4 +25,4 @@ exec $MYSQL_BINLOG --start-position=106
eval SELECT cont LIKE '%RELOAD DATABASE; # Shall generate syntax error%' AS `Contain RELOAD DATABASE` FROM (SELECT load_file('$MYSQLTEST_VARDIR/tmp/binlog_incident-bug44442.sql') AS cont) AS tbl;
--enable_query_log
-remove_file $MYSQLTEST_VARDIR/tmp/binlog_incident-bug44442.sql;
\ No newline at end of file
+remove_file $MYSQLTEST_VARDIR/tmp/binlog_incident-bug44442.sql;
=== modified file 'mysql-test/suite/binlog/t/binlog_tmp_table.test'
--- a/mysql-test/suite/binlog/t/binlog_tmp_table.test 2009-01-31 21:47:50 +0000
+++ b/mysql-test/suite/binlog/t/binlog_tmp_table.test 2009-09-30 06:35:31 +0000
@@ -30,6 +30,7 @@ source include/have_binlog_format_mixed_
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,);
+RESET MASTER;
create table foo (a int);
=== modified file 'mysql-test/suite/parts/inc/partition_key_32col.inc'
--- a/mysql-test/suite/parts/inc/partition_key_32col.inc 2009-01-31 15:47:35 +0000
+++ b/mysql-test/suite/parts/inc/partition_key_32col.inc 2009-10-06 11:39:57 +0000
@@ -1,10 +1,19 @@
+# In MariaDB, max key parts is extended from 16 to 32. But 33 keys don't work.
--error ER_TOO_MANY_KEY_PARTS
+eval create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4)) engine=$engine
+partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4) (
+partition pa1 max_rows=20 min_rows=2,
+partition pa2 max_rows=30 min_rows=3,
+partition pa3 max_rows=30 min_rows=4,
+partition pa4 max_rows=40 min_rows=2);
+
eval create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3)) engine=$engine
partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3) (
partition pa1 max_rows=20 min_rows=2,
partition pa2 max_rows=30 min_rows=3,
partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2);
+drop table t1;
eval create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1)) engine=$engine
partition by key(a,b,c,d,e,f,g,h) (
=== modified file 'mysql-test/suite/parts/r/partition_special_innodb.result'
--- a/mysql-test/suite/parts/r/partition_special_innodb.result 2008-12-04 09:47:25 +0000
+++ b/mysql-test/suite/parts/r/partition_special_innodb.result 2009-10-06 11:39:57 +0000
@@ -127,13 +127,20 @@ a b c d e f g h a1 b1 c1 d1 e1 f1 g1 h1
1980-10-14 fgbbd dtzndtz w 67856 5463354.67 3567845333 124 1980-10-14 fgbbd dtzndtz w 67856 5463354.67 3567845333 124 d,f söierugsig msireg siug ei5ggth lrutluitgzeöjrtnb.rkjthuekuhzrkuthgjdnffjmbr
1975-01-01 abcde abcde m 1234 123.45 32412341234 113 1975-01-01 abcde abcde m 1234 123.45 32412341234 113 tbhth nrzh ztfghgfh fzh ftzhj fztjh
drop table t1;
+create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4)) engine='InnoDB'
+partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4) (
+partition pa1 max_rows=20 min_rows=2,
+partition pa2 max_rows=30 min_rows=3,
+partition pa3 max_rows=30 min_rows=4,
+partition pa4 max_rows=40 min_rows=2);
+ERROR 42000: Too many key parts specified; max 32 parts allowed
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3)) engine='InnoDB'
partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3) (
partition pa1 max_rows=20 min_rows=2,
partition pa2 max_rows=30 min_rows=3,
partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2);
-ERROR 42000: Too many key parts specified; max 16 parts allowed
+drop table t1;
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1)) engine='InnoDB'
partition by key(a,b,c,d,e,f,g,h) (
partition pa1 max_rows=20 min_rows=2,
=== modified file 'mysql-test/suite/parts/r/partition_special_myisam.result'
--- a/mysql-test/suite/parts/r/partition_special_myisam.result 2008-11-04 07:43:21 +0000
+++ b/mysql-test/suite/parts/r/partition_special_myisam.result 2009-10-06 11:39:57 +0000
@@ -127,13 +127,20 @@ a b c d e f g h a1 b1 c1 d1 e1 f1 g1 h1
1980-10-14 fgbbd dtzndtz w 67856 5463354.67 3567845333 124 1980-10-14 fgbbd dtzndtz w 67856 5463354.67 3567845333 124 d,f söierugsig msireg siug ei5ggth lrutluitgzeöjrtnb.rkjthuekuhzrkuthgjdnffjmbr
1975-01-01 abcde abcde m 1234 123.45 32412341234 113 1975-01-01 abcde abcde m 1234 123.45 32412341234 113 tbhth nrzh ztfghgfh fzh ftzhj fztjh
drop table t1;
+create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4)) engine='MyISAM'
+partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4) (
+partition pa1 max_rows=20 min_rows=2,
+partition pa2 max_rows=30 min_rows=3,
+partition pa3 max_rows=30 min_rows=4,
+partition pa4 max_rows=40 min_rows=2);
+ERROR 42000: Too many key parts specified; max 32 parts allowed
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3)) engine='MyISAM'
partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3) (
partition pa1 max_rows=20 min_rows=2,
partition pa2 max_rows=30 min_rows=3,
partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2);
-ERROR 42000: Too many key parts specified; max 16 parts allowed
+drop table t1;
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1)) engine='MyISAM'
partition by key(a,b,c,d,e,f,g,h) (
partition pa1 max_rows=20 min_rows=2,
=== modified file 'mysql-test/t/ctype_gbk_binlog.test'
--- a/mysql-test/t/ctype_gbk_binlog.test 2009-07-07 14:18:44 +0000
+++ b/mysql-test/t/ctype_gbk_binlog.test 2009-09-30 06:35:31 +0000
@@ -1,6 +1,7 @@
-- source include/have_binlog_format_mixed_or_statement.inc
-- source include/have_gbk.inc
+RESET MASTER;
SET NAMES gbk;
--character_set gbk
=== modified file 'mysql-test/t/events_time_zone.test'
--- a/mysql-test/t/events_time_zone.test 2008-11-14 16:18:20 +0000
+++ b/mysql-test/t/events_time_zone.test 2009-10-06 18:15:09 +0000
@@ -36,6 +36,9 @@ let $N = 5;
# after a tests would be a perfect replacement.
#
+# Can't test with embedded server that doesn't support grants
+-- source include/not_embedded.inc
+
--source include/big_test.inc
=== modified file 'mysql-test/t/information_schema.test'
--- a/mysql-test/t/information_schema.test 2009-09-23 11:03:47 +0000
+++ b/mysql-test/t/information_schema.test 2009-09-29 20:19:43 +0000
@@ -1105,13 +1105,13 @@ connect (pslistcon,localhost,root,,test)
let $ID= `select connection_id()`;
SELECT 'other connection here' AS who;
connection default;
-sleep 1;
+sleep 2;
--disable_query_log
eval SET @tid=$ID;
--enable_query_log
SELECT IF(`time` > 0, 'OK', `time`) AS time_low,
IF(`time` < 1000, 'OK', `time`) AS time_high,
- IF(time_ms > 900, 'OK', time_ms) AS time_ms_low,
+ IF(time_ms > 1500, 'OK', time_ms) AS time_ms_low,
IF(time_ms < 1000000, 'OK', time_ms) AS time_ms_high
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE ID=@tid;
=== modified file 'mysql-test/t/innodb-index.test'
--- a/mysql-test/t/innodb-index.test 2009-08-03 20:09:53 +0000
+++ b/mysql-test/t/innodb-index.test 2009-10-06 11:39:57 +0000
@@ -148,7 +148,9 @@ delete from t1;
--error ER_CANT_DROP_FIELD_OR_KEY
drop index dc on t4;
# there is no foreign key dc on t3
---replace_regex /'\.\/test\/#sql2-[0-9a-f-]*'/'#sql2-temporary'/
+# Embedded server doesn't chdir to data directory
+--replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
+--replace_regex /\/test\/#sql2-[0-9a-f-]*'/\/#sql2-temporary'/
--error ER_ERROR_ON_RENAME
alter table t3 drop foreign key dc;
alter table t4 drop foreign key dc;
=== modified file 'mysql-test/t/merge-big.test'
--- a/mysql-test/t/merge-big.test 2009-03-12 22:27:35 +0000
+++ b/mysql-test/t/merge-big.test 2009-10-03 19:12:24 +0000
@@ -43,6 +43,7 @@ LOCK TABLE t1 WRITE;
--echo # connection con1
connect (con1,localhost,root,,);
let $con1_id= `SELECT CONNECTION_ID()`;
+ SET @orig_debug=@@debug;
SET GLOBAL debug="+d,sleep_open_and_lock_after_open";
send INSERT INTO t1 VALUES (1);
--echo # connection default
@@ -74,7 +75,7 @@ UNLOCK TABLES;
--echo # connection con1
connection con1;
reap;
- SET GLOBAL debug="-d,sleep_open_and_lock_after_open";
+ SET GLOBAL debug=@orig_debug;
disconnect con1;
--echo # connection default
connection default;
=== modified file 'mysql-test/t/mysql.test'
--- a/mysql-test/t/mysql.test 2009-07-31 00:51:25 +0000
+++ b/mysql-test/t/mysql.test 2009-10-05 13:22:23 +0000
@@ -1,3 +1,4 @@
+-- source include/have_working_dns.inc
# This test should work in embedded server after we fix mysqltest
-- source include/not_embedded.inc
#
=== modified file 'mysql-test/t/mysql_upgrade.test'
--- a/mysql-test/t/mysql_upgrade.test 2009-07-28 19:59:38 +0000
+++ b/mysql-test/t/mysql_upgrade.test 2009-10-05 13:22:23 +0000
@@ -1,3 +1,4 @@
+-- source include/have_working_dns.inc
# Can't run test of external client with embedded server
-- source include/not_embedded.inc
=== modified file 'mysql-test/t/mysqlbinlog-cp932.test'
--- a/mysql-test/t/mysqlbinlog-cp932.test 2007-12-12 17:19:24 +0000
+++ b/mysql-test/t/mysqlbinlog-cp932.test 2009-09-30 06:35:31 +0000
@@ -5,8 +5,9 @@
-- source include/have_cp932.inc
-- source include/have_log_bin.inc
+RESET MASTER;
+
# Bug#16217 (mysql client did not know how not switch its internal charset)
-flush logs;
create table t3 (f text character set utf8);
create table t4 (f text character set cp932);
--exec $MYSQL --default-character-set=utf8 test -e "insert into t3 values(_utf8'ソ')"
@@ -14,7 +15,7 @@ create table t4 (f text character set cp
flush logs;
rename table t3 to t03, t4 to t04;
let $MYSQLD_DATADIR= `select @@datadir`;
---exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000002 | $MYSQL --default-character-set=utf8
+--exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000001 | $MYSQL --default-character-set=utf8
# original and recovered data must be equal
select HEX(f) from t03;
select HEX(f) from t3;
=== modified file 'mysql-test/t/mysqlbinlog_row_big.test'
--- a/mysql-test/t/mysqlbinlog_row_big.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/mysqlbinlog_row_big.test 2009-10-03 23:20:51 +0000
@@ -24,16 +24,6 @@
--source include/big_test.inc
--echo #
---echo # We need big packets.
---echo #
-connect (con1, localhost, root,,);
-connection con1;
-SET @old_global_max_allowed_packet=@@global.max_allowed_packet;
-SET @@global.max_allowed_packet= 1024*1024*1024;
-connect (con2, localhost, root,,);
-connection con2;
-
---echo #
--echo # Preparatory cleanup.
--echo #
--disable_warnings
@@ -154,14 +144,9 @@ let $MYSQLD_DATADIR= `select @@datadir`;
eval SET @@global.max_allowed_packet = $orig_max_allowed_packet;
DROP TABLE t1;
-connection con1;
-SET @@global.max_allowed_packet=@old_global_max_allowed_packet;
-
--echo remove_file \$MYSQLTEST_VARDIR/$mysqlbinlog_output
#
# NOTE: If you want to see the *huge* mysqlbinlog output, disable next line:
#
--remove_file $MYSQLTEST_VARDIR/$mysqlbinlog_output
-disconnect con1
-disconnect con2
=== modified file 'mysql-test/t/variables-big.test'
--- a/mysql-test/t/variables-big.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/variables-big.test 2009-10-03 23:20:51 +0000
@@ -5,7 +5,7 @@
--source include/big_test.inc
#
-# Bug #27322 failure to allocate transaction_prealloc_size causes crash
+# Bug#27322 failure to allocate transaction_prealloc_size causes crash
#
#
# Manual (6.0):
@@ -35,20 +35,21 @@
# timeout if the testing box is not powerful enough.
#
-set @pid_temp = (select ID from information_schema.processlist);
-set session transaction_prealloc_size=1024*1024*1024*1;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-set session transaction_prealloc_size=1024*1024*1024*2;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
---replace_column 1 #
-set session transaction_prealloc_size=1024*1024*1024*3;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-set session transaction_prealloc_size=1024*1024*1024*4;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-set session transaction_prealloc_size=1024*1024*1024*5;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
+--disable_warnings
+SET SESSION transaction_prealloc_size=1024*1024*1024*1;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*2;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*3;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*4;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*5;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+--enable_warnings
+
=== modified file 'mysql-test/t/variables_debug.test'
--- a/mysql-test/t/variables_debug.test 2009-06-24 22:22:20 +0000
+++ b/mysql-test/t/variables_debug.test 2009-10-03 18:56:54 +0000
@@ -10,31 +10,3 @@ set debug= '+P';
select @@debug;
set debug= '-P';
select @@debug;
-
-#
-# Checks that assigning variable 'debug' in one session has no influence on
-# other session. (BUG#45632 of bugs.mysql.com)
-#
-connect(con1,localhost,root,,test,,);
-connect(con2,localhost,root,,test,,);
-
-# makes output independant of current debug status
-connection con1;
-set session debug="t";
-show session variables like 'debug';
-connection con2;
-set session debug="t";
-show session variables like 'debug';
-
-# checks influence one session debug variable on another
-connection con1;
-set session debug="d:t";
-show session variables like 'debug';
-connection con2;
-show session variables like 'debug';
-
-disconnect con1;
-disconnect con2;
-
-connection default;
-
=== added file 'mysql-test/t/variables_debug_notembedded.test'
--- a/mysql-test/t/variables_debug_notembedded.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/variables_debug_notembedded.test 2009-10-03 18:56:54 +0000
@@ -0,0 +1,34 @@
+#
+# Checks that assigning variable 'debug' in one session has no influence on
+# other session. (BUG#45632 of bugs.mysql.com)
+#
+# (this will not work with embedded server because mysqltest_embedded uses the
+# same thread for all connections)
+#
+--source include/have_debug.inc
+--source include/not_embedded.inc
+
+connect(con1,localhost,root,,test,,);
+connect(con2,localhost,root,,test,,);
+
+# makes output independant of current debug status
+connection con1;
+set session debug="t";
+show session variables like 'debug';
+connection con2;
+set session debug="t";
+show session variables like 'debug';
+
+# checks influence one session debug variable on another
+connection con1;
+set session debug="d:t";
+show session variables like 'debug';
+connection con2;
+show session variables like 'debug';
+
+disconnect con1;
+disconnect con2;
+
+connection default;
+
+
=== modified file 'sql/sql_plugin.cc'
--- a/sql/sql_plugin.cc 2009-09-11 13:20:03 +0000
+++ b/sql/sql_plugin.cc 2009-10-01 21:27:39 +0000
@@ -1168,6 +1168,22 @@ int plugin_init(int *argc, char **argv,
!my_strnncoll(&my_charset_latin1, (const uchar*) plugin->name,
6, (const uchar*) "InnoDB", 6))
continue;
+#ifdef EMBEDDED_LIBRARY
+ /*
+ MariaDB: disable PBXT in embedded server. We do this for two reasons
+ - PBXT currently doesn't work in embedded server (see
+ https://bugs.launchpad.net/maria/+bug/439889)
+ - Embedded server is supposed to be "leaner" and our current
+ understanding of that is "without PBXT". At the same time, we want
+ regular server to be with PBXT, and since we don't support compiling
+ embedded server with different options than the regular server,
+ the only way was to disable PBXT from here.
+ */
+ if (!my_strnncoll(&my_charset_latin1, (const uchar*) plugin->name,
+ 4, (const uchar*) "PBXT", 4))
+ continue;
+
+#endif
bzero(&tmp, sizeof(tmp));
tmp.plugin= plugin;
tmp.name.str= (char *)plugin->name;
=== renamed file 'storage/innodb_plugin/plug.in' => 'storage/innodb_plugin/plug.in.disabled'
=== modified file 'storage/maria/ma_blockrec.c'
--- a/storage/maria/ma_blockrec.c 2009-05-06 12:03:24 +0000
+++ b/storage/maria/ma_blockrec.c 2009-10-03 20:13:58 +0000
@@ -5448,7 +5448,7 @@ static size_t fill_insert_undo_parts(MAR
Store total blob length to make buffer allocation easier during UNDO
*/
log_parts->str= info->length_buff;
- log_parts->length= (uint) (ma_store_length((uchar *) log_parts->str,
+ log_parts->length= (uint) (ma_store_length(info->length_buff,
info->cur_row.blob_length) -
(uchar*) log_parts->str);
row_length+= log_parts->length;
@@ -5592,7 +5592,7 @@ static size_t fill_update_undo_parts(MAR
MARIA_SHARE *share= info->s;
MARIA_COLUMNDEF *column, *end_column;
MARIA_ROW *old_row= &info->cur_row, *new_row= &info->new_row;
- uchar *field_data, *start_field_data;
+ uchar *field_data, *start_field_data, *length_str;
uchar *old_field_lengths= old_row->field_lengths;
uchar *new_field_lengths= new_row->field_lengths;
size_t row_length= 0;
@@ -5749,9 +5749,9 @@ static size_t fill_update_undo_parts(MAR
/* Store length of field length data before the field/field_lengths */
field_lengths= (uint) (field_data - start_field_data);
- start_log_parts->str= ((start_field_data -
- ma_calc_length_for_store_length(field_lengths)));
- ma_store_length((uchar*)start_log_parts->str, field_lengths);
+ length_str= start_field_data - ma_calc_length_for_store_length(field_lengths);
+ start_log_parts->str= length_str;
+ ma_store_length(length_str, field_lengths);
start_log_parts->length= (size_t) (field_data - start_log_parts->str);
row_length+= start_log_parts->length;
DBUG_RETURN(row_length);
=== renamed file 'storage/pbxt/src/CMakeLists.txt' => 'storage/pbxt/CMakeLists.txt' (properties changed: +x to -x)
--- a/storage/pbxt/src/CMakeLists.txt 2009-03-26 12:18:01 +0000
+++ b/storage/pbxt/CMakeLists.txt 2009-10-06 18:26:11 +0000
@@ -32,22 +32,72 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/
${CMAKE_SOURCE_DIR}/regex
${CMAKE_SOURCE_DIR}/extra/yassl/include)
-SET(PBXT_SOURCES ha_pbxt.cc bsearch_xt.cc index_xt.cc strutil_xt.cc cache_xt.cc linklist_xt.cc
- ccutils_xt.cc lock_xt.cc table_xt.cc database_xt.cc thread_xt.cc
- datadic_xt.cc memory_xt.cc trace_xt.cc datalog_xt.cc myxt_xt.cc util_xt.cc
- filesys_xt.cc pthread_xt.cc xaction_xt.cc restart_xt.cc xactlog_xt.cc
- hashtab_xt.cc sortedlist_xt.cc heap_xt.cc streaming_xt.cc tabcache_xt.cc
- systab_xt.cc ha_xtsys.cc discover_xt.cc
- bsearch_xt.h linklist_xt.h tabcache_xt.h cache_xt.h lock_xt.h table_xt.h
- ccutils_xt.h thread_xt.h database_xt.h memory_xt.h trace_xt.h
- datadic_xt.h pbms.h util_xt.h datalog_xt.h myxt_xt.h xaction_xt.h
- filesys_xt.h pthread_xt.h xactlog_xt.h ha_pbxt.h restart_xt.h xt_config.h
- hashtab_xt.h sortedlist_xt.h xt_defs.h heap_xt.h streaming_xt.h xt_errno.h
- systab_xt.h ha_xtsys.h discover_xt.h
- index_xt.h strutil_xt.h)
-
-IF(NOT SOURCE_SUBLIBS)
- ADD_LIBRARY(pbxt ${PBXT_SOURCES})
- ADD_DEPENDENCIES(pbxt GenError)
-ENDIF(NOT SOURCE_SUBLIBS)
+SET(PBXT_SOURCES
+src/bsearch_xt.cc
+src/bsearch_xt.h
+src/cache_xt.cc
+src/cache_xt.h
+src/ccutils_xt.cc
+src/ccutils_xt.h
+src/database_xt.cc
+src/database_xt.h
+src/datadic_xt.cc
+src/datadic_xt.h
+src/datalog_xt.cc
+src/datalog_xt.h
+src/discover_xt.cc
+src/discover_xt.h
+src/filesys_xt.cc
+src/filesys_xt.h
+src/hashtab_xt.cc
+src/hashtab_xt.h
+src/ha_pbxt.cc
+src/ha_pbxt.h
+src/ha_xtsys.cc
+src/ha_xtsys.h
+src/heap_xt.cc
+src/heap_xt.h
+src/index_xt.cc
+src/index_xt.h
+src/linklist_xt.cc
+src/linklist_xt.h
+src/locklist_xt.cc
+src/locklist_xt.h
+src/lock_xt.cc
+src/lock_xt.h
+src/memory_xt.cc
+src/memory_xt.h
+src/myxt_xt.cc
+src/myxt_xt.h
+src/pbms.h
+src/pbms_enabled.cc
+src/pbms_enabled.h
+src/pthread_xt.cc
+src/pthread_xt.h
+src/restart_xt.cc
+src/restart_xt.h
+src/sortedlist_xt.cc
+src/sortedlist_xt.h
+src/strutil_xt.cc
+src/strutil_xt.h
+src/systab_xt.cc
+src/systab_xt.h
+src/tabcache_xt.cc
+src/tabcache_xt.h
+src/table_xt.cc
+src/table_xt.h
+src/thread_xt.cc
+src/thread_xt.h
+src/trace_xt.cc
+src/trace_xt.h
+src/util_xt.cc
+src/util_xt.h
+src/xaction_xt.cc
+src/xaction_xt.h
+src/xactlog_xt.cc
+src/xactlog_xt.h
+src/xt_config.h
+src/xt_defs.h
+src/xt_errno.h)
+MYSQL_STORAGE_ENGINE(PBXT)
=== modified file 'storage/pbxt/Makefile.am'
--- a/storage/pbxt/Makefile.am 2009-03-26 12:18:01 +0000
+++ b/storage/pbxt/Makefile.am 2009-10-06 18:26:11 +0000
@@ -1,3 +1,3 @@
SUBDIRS = src
-EXTRA_DIST = plug.in
+EXTRA_DIST = CMakeLists.txt plug.in
=== modified file 'storage/pbxt/src/Makefile.am'
--- a/storage/pbxt/src/Makefile.am 2009-09-04 07:29:34 +0000
+++ b/storage/pbxt/src/Makefile.am 2009-10-06 18:26:11 +0000
@@ -49,4 +49,4 @@ libpbxt_a_SOURCES = $(libpbxt_la_SOURCE
libpbxt_a_CXXFLAGS = $(AM_CXXFLAGS)
libpbxt_a_CFLAGS = $(AM_CFLAGS) -std=c99
-EXTRA_DIST = CMakeLists.txt pbms_enabled.cc
+EXTRA_DIST = pbms_enabled.cc
=== modified file 'storage/pbxt/src/pbms_enabled.cc'
--- a/storage/pbxt/src/pbms_enabled.cc 2009-08-18 07:46:53 +0000
+++ b/storage/pbxt/src/pbms_enabled.cc 2009-10-06 15:16:01 +0000
@@ -29,6 +29,12 @@
*
*/
+/*
+ The following two lines backported by psergey. Remove them when we merge from PBXT again.
+*/
+#include "xt_config.h"
+#ifdef PBMS_ENABLED
+
#define PBMS_API pbms_enabled_api
#include "pbms_enabled.h"
@@ -236,3 +242,4 @@ void pbms_completed(TABLE *table, bool o
return ;
}
+#endif
\ No newline at end of file
=== modified file 'storage/pbxt/src/thread_xt.cc'
--- a/storage/pbxt/src/thread_xt.cc 2009-09-03 06:15:03 +0000
+++ b/storage/pbxt/src/thread_xt.cc 2009-10-06 15:16:01 +0000
@@ -1016,7 +1016,7 @@ extern "C" void *thr_main(void *data)
#endif
try_(a) {
- if (!xt_set_key(thr_key, self, &self->t_exception))
+ if (!xt_set_key((pthread_key_t)thr_key, self, &self->t_exception))
throw_();
td->td_started = TRUE;
return_data = (*start_routine)(self);
@@ -1352,12 +1352,12 @@ xtPublic XTThreadPtr xt_get_self(void)
return self;
/* Then it must be a background process, and the
* thread info is stored in the local key: */
- return (XTThreadPtr) xt_get_key(thr_key);
+ return (XTThreadPtr) xt_get_key((pthread_key_t)thr_key);
}
xtPublic void xt_set_self(XTThreadPtr self)
{
- xt_set_key(thr_key, self, NULL);
+ xt_set_key((pthread_key_t)thr_key, self, NULL);
}
xtPublic void xt_clear_exception(XTThreadPtr thread)
@@ -1386,7 +1386,7 @@ xtPublic XTThreadPtr xt_create_thread(c_
return NULL;
}
- if (!xt_set_key(thr_key, self, e)) {
+ if (!xt_set_key((pthread_key_t)thr_key, self, e)) {
xt_free_ns(self);
return NULL;
}
@@ -1400,7 +1400,7 @@ xtPublic XTThreadPtr xt_create_thread(c_
}
catch_(a) {
*e = self->t_exception;
- xt_set_key(thr_key, NULL, NULL);
+ xt_set_key((pthread_key_t)thr_key, NULL, NULL);
xt_free_ns(self);
self = NULL;
}
@@ -1464,8 +1464,8 @@ void xt_free_thread(XTThreadPtr self)
* PBXT resources on all MySQL THDs created by PBMS for it's own pthreads. So the 'self'
* being freed is not the same 'self' associated with the PBXT 'thr_key'.
*/
- if (thr_key && (self == ((XTThreadPtr) xt_get_key(thr_key)))) {
- xt_set_key(thr_key, NULL, NULL);
+ if (thr_key && (self == ((XTThreadPtr) xt_get_key((pthread_key_t)thr_key)))) {
+ xt_set_key((pthread_key_t)thr_key, NULL, NULL);
}
xt_free_ns(self);
}
=== modified file 'support-files/compiler_warnings.supp'
--- a/support-files/compiler_warnings.supp 2009-09-03 13:20:22 +0000
+++ b/support-files/compiler_warnings.supp 2009-10-03 20:13:58 +0000
@@ -109,3 +109,6 @@ ma_packrec.c : .*result of 32-bit shift
#
.* : .*no matching operator delete found; memory will not be freed if initialization throws an exception.*
ctype-simple.c : .*unary minus operator applied to unsigned type, result still unsigned.*
+
+# Wrong warning due to GCC bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29478
+regexec\.c : .*passing argument 3 of.*matcher.* discards qualifiers from pointer target type.*
=== modified file 'win/Makefile.am'
--- a/win/Makefile.am 2009-06-18 08:49:44 +0000
+++ b/win/Makefile.am 2009-10-02 12:53:05 +0000
@@ -16,7 +16,8 @@
## Process this file with automake to create Makefile.in
EXTRA_DIST = build-vs71.bat build-vs8.bat build-vs8_x64.bat build-vs9.bat \
build-vs9_x64.bat configure.js README mysql_manifest.cmake \
- create_manifest.js create_def_file.js
+ create_manifest.js create_def_file.js build-nmake.bat \
+ build-nmake-x64.bat
# Don't update the files from bitkeeper
%::SCCS/s.%
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2759)
by knielsen@knielsen-hq.org 06 Oct '09
by knielsen@knielsen-hq.org 06 Oct '09
06 Oct '09
#At lp:maria
2759 knielsen(a)knielsen-hq.org 2009-10-06
Fix `make dist` after CMakeLists.txt rename in previous push.
modified:
storage/pbxt/CMakeLists.txt*
storage/pbxt/Makefile.am
storage/pbxt/src/Makefile.am
=== modified file 'storage/pbxt/CMakeLists.txt' (properties changed: +x to -x)
=== modified file 'storage/pbxt/Makefile.am'
--- a/storage/pbxt/Makefile.am 2009-03-26 12:18:01 +0000
+++ b/storage/pbxt/Makefile.am 2009-10-06 18:26:11 +0000
@@ -1,3 +1,3 @@
SUBDIRS = src
-EXTRA_DIST = plug.in
+EXTRA_DIST = CMakeLists.txt plug.in
=== modified file 'storage/pbxt/src/Makefile.am'
--- a/storage/pbxt/src/Makefile.am 2009-09-04 07:29:34 +0000
+++ b/storage/pbxt/src/Makefile.am 2009-10-06 18:26:11 +0000
@@ -49,4 +49,4 @@ libpbxt_a_SOURCES = $(libpbxt_la_SOURCE
libpbxt_a_CXXFLAGS = $(AM_CXXFLAGS)
libpbxt_a_CFLAGS = $(AM_CFLAGS) -std=c99
-EXTRA_DIST = CMakeLists.txt pbms_enabled.cc
+EXTRA_DIST = pbms_enabled.cc
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2758)
by knielsen@knielsen-hq.org 06 Oct '09
by knielsen@knielsen-hq.org 06 Oct '09
06 Oct '09
#At lp:maria
2758 knielsen(a)knielsen-hq.org 2009-10-06
Fix events_time_zone.test to be skipped for embedded (no event scheduler in embedded server)
modified:
mysql-test/t/events_time_zone.test
=== modified file 'mysql-test/t/events_time_zone.test'
--- a/mysql-test/t/events_time_zone.test 2008-11-14 16:18:20 +0000
+++ b/mysql-test/t/events_time_zone.test 2009-10-06 18:15:09 +0000
@@ -36,6 +36,9 @@ let $N = 5;
# after a tests would be a perfect replacement.
#
+# Can't test with embedded server that doesn't support grants
+-- source include/not_embedded.inc
+
--source include/big_test.inc
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2757)
by knielsen@knielsen-hq.org 06 Oct '09
by knielsen@knielsen-hq.org 06 Oct '09
06 Oct '09
#At lp:maria
2757 knielsen(a)knielsen-hq.org 2009-10-06 [merge]
Merge fixes for --big tests and compiler warnings.
modified:
mysql-test/include/mtr_check.sql
mysql-test/r/merge-big.result
mysql-test/r/mysqlbinlog_row_big.result
mysql-test/r/variables-big.result
mysql-test/t/merge-big.test
mysql-test/t/mysqlbinlog_row_big.test
mysql-test/t/variables-big.test
storage/maria/ma_blockrec.c
support-files/compiler_warnings.supp
=== modified file 'mysql-test/include/mtr_check.sql'
--- a/mysql-test/include/mtr_check.sql 2009-09-07 20:50:10 +0000
+++ b/mysql-test/include/mtr_check.sql 2009-10-03 23:20:51 +0000
@@ -12,7 +12,7 @@ BEGIN
-- Dump all global variables except those
-- that are supposed to change
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
- WHERE variable_name != 'timestamp' AND variable_name != "debug"
+ WHERE variable_name != 'timestamp'
AND variable_name != 'INNODB_IBUF_MAX_SIZE'
ORDER BY variable_name;
=== modified file 'mysql-test/r/merge-big.result'
--- a/mysql-test/r/merge-big.result 2009-03-12 22:29:39 +0000
+++ b/mysql-test/r/merge-big.result 2009-10-03 19:12:24 +0000
@@ -7,6 +7,7 @@ drop table if exists t1,t2,t3,t4,t5,t6;
CREATE TABLE t1 (c1 INT) ENGINE= MyISAM;
LOCK TABLE t1 WRITE;
# connection con1
+SET @orig_debug=@@debug;
SET GLOBAL debug="+d,sleep_open_and_lock_after_open";
INSERT INTO t1 VALUES (1);
# connection default
@@ -21,6 +22,6 @@ SELECT * FROM t1;
c1
UNLOCK TABLES;
# connection con1
-SET GLOBAL debug="-d,sleep_open_and_lock_after_open";
+SET GLOBAL debug=@orig_debug;
# connection default
DROP TABLE t1;
=== modified file 'mysql-test/r/mysqlbinlog_row_big.result'
--- a/mysql-test/r/mysqlbinlog_row_big.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/mysqlbinlog_row_big.result 2009-10-03 23:20:51 +0000
@@ -1,9 +1,4 @@
#
-# We need big packets.
-#
-SET @old_global_max_allowed_packet=@@global.max_allowed_packet;
-SET @@global.max_allowed_packet= 1024*1024*1024;
-#
# Preparatory cleanup.
#
DROP TABLE IF EXISTS t1;
@@ -104,5 +99,4 @@ FLUSH LOGS;
# reset variable value to pass testcase checks
SET @@global.max_allowed_packet = 1048576;
DROP TABLE t1;
-SET @@global.max_allowed_packet=@old_global_max_allowed_packet;
remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_big_1.out
=== modified file 'mysql-test/r/variables-big.result'
--- a/mysql-test/r/variables-big.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/variables-big.result 2009-10-03 23:20:51 +0000
@@ -1,20 +1,20 @@
-set session transaction_prealloc_size=1024*1024*1024*1;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*2;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*3;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*4;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*5;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
+SET SESSION transaction_prealloc_size=1024*1024*1024*1;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*2;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*3;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*4;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*5;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
=== modified file 'mysql-test/t/merge-big.test'
--- a/mysql-test/t/merge-big.test 2009-03-12 22:27:35 +0000
+++ b/mysql-test/t/merge-big.test 2009-10-03 19:12:24 +0000
@@ -43,6 +43,7 @@ LOCK TABLE t1 WRITE;
--echo # connection con1
connect (con1,localhost,root,,);
let $con1_id= `SELECT CONNECTION_ID()`;
+ SET @orig_debug=@@debug;
SET GLOBAL debug="+d,sleep_open_and_lock_after_open";
send INSERT INTO t1 VALUES (1);
--echo # connection default
@@ -74,7 +75,7 @@ UNLOCK TABLES;
--echo # connection con1
connection con1;
reap;
- SET GLOBAL debug="-d,sleep_open_and_lock_after_open";
+ SET GLOBAL debug=@orig_debug;
disconnect con1;
--echo # connection default
connection default;
=== modified file 'mysql-test/t/mysqlbinlog_row_big.test'
--- a/mysql-test/t/mysqlbinlog_row_big.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/mysqlbinlog_row_big.test 2009-10-03 23:20:51 +0000
@@ -24,16 +24,6 @@
--source include/big_test.inc
--echo #
---echo # We need big packets.
---echo #
-connect (con1, localhost, root,,);
-connection con1;
-SET @old_global_max_allowed_packet=@@global.max_allowed_packet;
-SET @@global.max_allowed_packet= 1024*1024*1024;
-connect (con2, localhost, root,,);
-connection con2;
-
---echo #
--echo # Preparatory cleanup.
--echo #
--disable_warnings
@@ -154,14 +144,9 @@ let $MYSQLD_DATADIR= `select @@datadir`;
eval SET @@global.max_allowed_packet = $orig_max_allowed_packet;
DROP TABLE t1;
-connection con1;
-SET @@global.max_allowed_packet=@old_global_max_allowed_packet;
-
--echo remove_file \$MYSQLTEST_VARDIR/$mysqlbinlog_output
#
# NOTE: If you want to see the *huge* mysqlbinlog output, disable next line:
#
--remove_file $MYSQLTEST_VARDIR/$mysqlbinlog_output
-disconnect con1
-disconnect con2
=== modified file 'mysql-test/t/variables-big.test'
--- a/mysql-test/t/variables-big.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/variables-big.test 2009-10-03 23:20:51 +0000
@@ -5,7 +5,7 @@
--source include/big_test.inc
#
-# Bug #27322 failure to allocate transaction_prealloc_size causes crash
+# Bug#27322 failure to allocate transaction_prealloc_size causes crash
#
#
# Manual (6.0):
@@ -35,20 +35,21 @@
# timeout if the testing box is not powerful enough.
#
-set @pid_temp = (select ID from information_schema.processlist);
-set session transaction_prealloc_size=1024*1024*1024*1;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-set session transaction_prealloc_size=1024*1024*1024*2;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
---replace_column 1 #
-set session transaction_prealloc_size=1024*1024*1024*3;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-set session transaction_prealloc_size=1024*1024*1024*4;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-set session transaction_prealloc_size=1024*1024*1024*5;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
+--disable_warnings
+SET SESSION transaction_prealloc_size=1024*1024*1024*1;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*2;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*3;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*4;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*5;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+--enable_warnings
+
=== modified file 'storage/maria/ma_blockrec.c'
--- a/storage/maria/ma_blockrec.c 2009-05-06 12:03:24 +0000
+++ b/storage/maria/ma_blockrec.c 2009-10-03 20:13:58 +0000
@@ -5448,7 +5448,7 @@ static size_t fill_insert_undo_parts(MAR
Store total blob length to make buffer allocation easier during UNDO
*/
log_parts->str= info->length_buff;
- log_parts->length= (uint) (ma_store_length((uchar *) log_parts->str,
+ log_parts->length= (uint) (ma_store_length(info->length_buff,
info->cur_row.blob_length) -
(uchar*) log_parts->str);
row_length+= log_parts->length;
@@ -5592,7 +5592,7 @@ static size_t fill_update_undo_parts(MAR
MARIA_SHARE *share= info->s;
MARIA_COLUMNDEF *column, *end_column;
MARIA_ROW *old_row= &info->cur_row, *new_row= &info->new_row;
- uchar *field_data, *start_field_data;
+ uchar *field_data, *start_field_data, *length_str;
uchar *old_field_lengths= old_row->field_lengths;
uchar *new_field_lengths= new_row->field_lengths;
size_t row_length= 0;
@@ -5749,9 +5749,9 @@ static size_t fill_update_undo_parts(MAR
/* Store length of field length data before the field/field_lengths */
field_lengths= (uint) (field_data - start_field_data);
- start_log_parts->str= ((start_field_data -
- ma_calc_length_for_store_length(field_lengths)));
- ma_store_length((uchar*)start_log_parts->str, field_lengths);
+ length_str= start_field_data - ma_calc_length_for_store_length(field_lengths);
+ start_log_parts->str= length_str;
+ ma_store_length(length_str, field_lengths);
start_log_parts->length= (size_t) (field_data - start_log_parts->str);
row_length+= start_log_parts->length;
DBUG_RETURN(row_length);
=== modified file 'support-files/compiler_warnings.supp'
--- a/support-files/compiler_warnings.supp 2009-09-03 13:20:22 +0000
+++ b/support-files/compiler_warnings.supp 2009-10-03 20:13:58 +0000
@@ -109,3 +109,6 @@ ma_packrec.c : .*result of 32-bit shift
#
.* : .*no matching operator delete found; memory will not be freed if initialization throws an exception.*
ctype-simple.c : .*unary minus operator applied to unsigned type, result still unsigned.*
+
+# Wrong warning due to GCC bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29478
+regexec\.c : .*passing argument 3 of.*matcher.* discards qualifiers from pointer target type.*
1
0
[Maria-developers] Rev 2756: Fix PBXT build on windows by backporting some of their changes (under advise of Vlad Kolesnikov): in file:///home/psergey/bzr-new/maria-5.1-build2/
by Sergey Petrunya 06 Oct '09
by Sergey Petrunya 06 Oct '09
06 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-build2/
------------------------------------------------------------
revno: 2756
revision-id: psergey(a)askmonty.org-20091006151601-t376udsq9kgnpx9d
parent: knielsen(a)knielsen-hq.org-20091006140253-4jkht94qyc9q5zho
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-build2
timestamp: Tue 2009-10-06 19:16:01 +0400
message:
Fix PBXT build on windows by backporting some of their changes (under advise of Vlad Kolesnikov):
- Adjust CMakeLists.txt to follow latest mysql's expectations about plugins
- Add typecasts
- wrap pbms_enabled.cc in #ifdef
=== renamed file 'storage/pbxt/src/CMakeLists.txt' => 'storage/pbxt/CMakeLists.txt'
--- a/storage/pbxt/src/CMakeLists.txt 2009-03-26 12:18:01 +0000
+++ b/storage/pbxt/CMakeLists.txt 2009-10-06 15:16:01 +0000
@@ -32,22 +32,72 @@
${CMAKE_SOURCE_DIR}/regex
${CMAKE_SOURCE_DIR}/extra/yassl/include)
-SET(PBXT_SOURCES ha_pbxt.cc bsearch_xt.cc index_xt.cc strutil_xt.cc cache_xt.cc linklist_xt.cc
- ccutils_xt.cc lock_xt.cc table_xt.cc database_xt.cc thread_xt.cc
- datadic_xt.cc memory_xt.cc trace_xt.cc datalog_xt.cc myxt_xt.cc util_xt.cc
- filesys_xt.cc pthread_xt.cc xaction_xt.cc restart_xt.cc xactlog_xt.cc
- hashtab_xt.cc sortedlist_xt.cc heap_xt.cc streaming_xt.cc tabcache_xt.cc
- systab_xt.cc ha_xtsys.cc discover_xt.cc
- bsearch_xt.h linklist_xt.h tabcache_xt.h cache_xt.h lock_xt.h table_xt.h
- ccutils_xt.h thread_xt.h database_xt.h memory_xt.h trace_xt.h
- datadic_xt.h pbms.h util_xt.h datalog_xt.h myxt_xt.h xaction_xt.h
- filesys_xt.h pthread_xt.h xactlog_xt.h ha_pbxt.h restart_xt.h xt_config.h
- hashtab_xt.h sortedlist_xt.h xt_defs.h heap_xt.h streaming_xt.h xt_errno.h
- systab_xt.h ha_xtsys.h discover_xt.h
- index_xt.h strutil_xt.h)
-
-IF(NOT SOURCE_SUBLIBS)
- ADD_LIBRARY(pbxt ${PBXT_SOURCES})
- ADD_DEPENDENCIES(pbxt GenError)
-ENDIF(NOT SOURCE_SUBLIBS)
-
+SET(PBXT_SOURCES
+src/bsearch_xt.cc
+src/bsearch_xt.h
+src/cache_xt.cc
+src/cache_xt.h
+src/ccutils_xt.cc
+src/ccutils_xt.h
+src/database_xt.cc
+src/database_xt.h
+src/datadic_xt.cc
+src/datadic_xt.h
+src/datalog_xt.cc
+src/datalog_xt.h
+src/discover_xt.cc
+src/discover_xt.h
+src/filesys_xt.cc
+src/filesys_xt.h
+src/hashtab_xt.cc
+src/hashtab_xt.h
+src/ha_pbxt.cc
+src/ha_pbxt.h
+src/ha_xtsys.cc
+src/ha_xtsys.h
+src/heap_xt.cc
+src/heap_xt.h
+src/index_xt.cc
+src/index_xt.h
+src/linklist_xt.cc
+src/linklist_xt.h
+src/locklist_xt.cc
+src/locklist_xt.h
+src/lock_xt.cc
+src/lock_xt.h
+src/memory_xt.cc
+src/memory_xt.h
+src/myxt_xt.cc
+src/myxt_xt.h
+src/pbms.h
+src/pbms_enabled.cc
+src/pbms_enabled.h
+src/pthread_xt.cc
+src/pthread_xt.h
+src/restart_xt.cc
+src/restart_xt.h
+src/sortedlist_xt.cc
+src/sortedlist_xt.h
+src/strutil_xt.cc
+src/strutil_xt.h
+src/systab_xt.cc
+src/systab_xt.h
+src/tabcache_xt.cc
+src/tabcache_xt.h
+src/table_xt.cc
+src/table_xt.h
+src/thread_xt.cc
+src/thread_xt.h
+src/trace_xt.cc
+src/trace_xt.h
+src/util_xt.cc
+src/util_xt.h
+src/xaction_xt.cc
+src/xaction_xt.h
+src/xactlog_xt.cc
+src/xactlog_xt.h
+src/xt_config.h
+src/xt_defs.h
+src/xt_errno.h)
+
+MYSQL_STORAGE_ENGINE(PBXT)
=== modified file 'storage/pbxt/src/pbms_enabled.cc'
--- a/storage/pbxt/src/pbms_enabled.cc 2009-08-18 07:46:53 +0000
+++ b/storage/pbxt/src/pbms_enabled.cc 2009-10-06 15:16:01 +0000
@@ -29,6 +29,12 @@
*
*/
+/*
+ The following two lines backported by psergey. Remove them when we merge from PBXT again.
+*/
+#include "xt_config.h"
+#ifdef PBMS_ENABLED
+
#define PBMS_API pbms_enabled_api
#include "pbms_enabled.h"
@@ -236,3 +242,4 @@
return ;
}
+#endif
\ No newline at end of file
=== modified file 'storage/pbxt/src/thread_xt.cc'
--- a/storage/pbxt/src/thread_xt.cc 2009-09-03 06:15:03 +0000
+++ b/storage/pbxt/src/thread_xt.cc 2009-10-06 15:16:01 +0000
@@ -1016,7 +1016,7 @@
#endif
try_(a) {
- if (!xt_set_key(thr_key, self, &self->t_exception))
+ if (!xt_set_key((pthread_key_t)thr_key, self, &self->t_exception))
throw_();
td->td_started = TRUE;
return_data = (*start_routine)(self);
@@ -1352,12 +1352,12 @@
return self;
/* Then it must be a background process, and the
* thread info is stored in the local key: */
- return (XTThreadPtr) xt_get_key(thr_key);
+ return (XTThreadPtr) xt_get_key((pthread_key_t)thr_key);
}
xtPublic void xt_set_self(XTThreadPtr self)
{
- xt_set_key(thr_key, self, NULL);
+ xt_set_key((pthread_key_t)thr_key, self, NULL);
}
xtPublic void xt_clear_exception(XTThreadPtr thread)
@@ -1386,7 +1386,7 @@
return NULL;
}
- if (!xt_set_key(thr_key, self, e)) {
+ if (!xt_set_key((pthread_key_t)thr_key, self, e)) {
xt_free_ns(self);
return NULL;
}
@@ -1400,7 +1400,7 @@
}
catch_(a) {
*e = self->t_exception;
- xt_set_key(thr_key, NULL, NULL);
+ xt_set_key((pthread_key_t)thr_key, NULL, NULL);
xt_free_ns(self);
self = NULL;
}
@@ -1464,8 +1464,8 @@
* PBXT resources on all MySQL THDs created by PBMS for it's own pthreads. So the 'self'
* being freed is not the same 'self' associated with the PBXT 'thr_key'.
*/
- if (thr_key && (self == ((XTThreadPtr) xt_get_key(thr_key)))) {
- xt_set_key(thr_key, NULL, NULL);
+ if (thr_key && (self == ((XTThreadPtr) xt_get_key((pthread_key_t)thr_key)))) {
+ xt_set_key((pthread_key_t)thr_key, NULL, NULL);
}
xt_free_ns(self);
}
1
0
[Maria-developers] Rev 2756: merge in file:///Users/bell/maria/bzr/work-merge/
by sanja@askmonty.org 06 Oct '09
by sanja@askmonty.org 06 Oct '09
06 Oct '09
At file:///Users/bell/maria/bzr/work-merge/
------------------------------------------------------------
revno: 2756 [merge]
revision-id: sanja(a)askmonty.org-20091006145346-1mt7op6z1zhm06od
parent: knielsen(a)knielsen-hq.org-20091006140253-4jkht94qyc9q5zho
parent: sanja(a)askmonty.org-20091006065722-ro0p0euffbtl4j05
committer: sanja(a)askmonty.org
branch nick: work-merge
timestamp: Tue 2009-10-06 17:53:46 +0300
message:
merge
added:
BUILD/compile-pentium-debug-max-no-qc compilepentiumdebugm-20090923065542-7a3x9z3bgfxn1rac-1
modified:
BUILD/SETUP.sh sp1f-setup.sh-20001218212418-itvzddls4bsqffggcsjklbawdmaxdhde
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
storage/maria/ha_maria.cc sp1f-ha_maria.cc-20060411134405-dmngb4v5x5fxlxhff527ud3etiutxuxk
storage/maria/ma_state.c sp1f-ma_state.c-20080529153331-ttwxiq5ksyib6sdrdsdl2lnbbm362lwh
storage/maria/maria_def.h sp1f-maria_def.h-20060411134454-urdx4joxwcwzxbmltpzejn53y2rgjs44
storage/myisam/ha_myisam.cc sp1f-ha_myisam.cc-19700101030959-7xzssylbn7zfz3nupnsw43wws6xlltsu
storage/myisam/mi_locking.c sp1f-mi_locking.c-19700101030959-27f7n7juexzv4qrhkiwcoylzh4yfibbl
storage/myisam/myisamdef.h sp1f-myisamdef.h-19700101030959-fzrxvpmzhzqfn5w2clasmcw7af4kanoa
=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh 2009-09-29 19:02:48 +0000
+++ b/BUILD/SETUP.sh 2009-10-06 14:53:46 +0000
@@ -172,6 +172,7 @@
max_no_embedded_configs="$SSL_LIBRARY --with-plugins=max"
+max_no_qc_configs="$SSL_LIBRARY --with-plugins=max --without-query-cache"
max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent"
max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server --with-libevent"
# Disable NDB in maria max builds
=== added file 'BUILD/compile-pentium-debug-max-no-qc'
--- a/BUILD/compile-pentium-debug-max-no-qc 1970-01-01 00:00:00 +0000
+++ b/BUILD/compile-pentium-debug-max-no-qc 2009-10-06 06:57:22 +0000
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+path=`dirname $0`
+. "$path/SETUP.sh"
+
+extra_flags="$pentium_cflags $debug_cflags"
+extra_configs="$pentium_configs $debug_configs $max_no_qc_configs"
+
+. "$path/FINISH.sh"
=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h 2009-09-15 10:46:35 +0000
+++ b/sql/mysql_priv.h 2009-10-06 14:53:46 +0000
@@ -947,7 +947,6 @@
#define query_cache_abort(A)
#define query_cache_end_of_result(A)
-#define query_cache_invalidate_by_MyISAM_filename_ref NULL
#define query_cache_maybe_disabled(T) 1
#define query_cache_is_cacheable_query(L) 0
#endif /*HAVE_QUERY_CACHE*/
=== modified file 'storage/maria/ha_maria.cc'
--- a/storage/maria/ha_maria.cc 2009-09-07 20:50:10 +0000
+++ b/storage/maria/ha_maria.cc 2009-10-06 14:53:46 +0000
@@ -28,6 +28,7 @@
#include <my_bit.h>
#include "ha_maria.h"
#include "trnman_public.h"
+#include "trnman.h"
C_MODE_START
#include "maria_def.h"
@@ -918,6 +919,8 @@
if (!(file= maria_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (test_if_locked & (HA_OPEN_IGNORE_IF_LOCKED | HA_OPEN_TMP_TABLE))
VOID(maria_extra(file, HA_EXTRA_NO_WAIT_LOCK, 0));
@@ -3238,6 +3241,9 @@
*/
*engine_data= 0;
+ if (file->s->now_transactional && file->s->have_versioning)
+ return (file->trn->trid >= file->s->state.last_change_trn);
+
/*
If a concurrent INSERT has happened just before the currently processed
SELECT statement, the total size of the table is unknown.
=== modified file 'storage/maria/ma_state.c'
--- a/storage/maria/ma_state.c 2008-12-27 02:05:16 +0000
+++ b/storage/maria/ma_state.c 2009-10-06 06:57:22 +0000
@@ -318,6 +318,13 @@
DBUG_ASSERT(!info->s->base.born_transactional);
share->state.state= *info->state;
info->state= &share->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->s->data_file_name.str));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->s->data_file_name.str);
+#endif
+
}
info->append_insert_at_end= 0;
}
@@ -469,6 +476,8 @@
tables->state_start.checksum);
history->trid= trn->commit_trid;
+ share->state.last_change_trn= trn->commit_trid;
+
if (history->next)
{
/* Remove not visible states */
=== modified file 'storage/maria/maria_def.h'
--- a/storage/maria/maria_def.h 2009-02-19 09:01:25 +0000
+++ b/storage/maria/maria_def.h 2009-10-06 06:57:22 +0000
@@ -83,6 +83,7 @@
pgcache_page_no_t first_bitmap_with_space;
ulonglong auto_increment;
TrID create_trid; /* Minum trid for file */
+ TrID last_change_trn; /* selfdescriptive */
ulong update_count; /* Updated for each write lock */
ulong status;
double *rec_per_key_part;
@@ -337,7 +338,10 @@
/* Mapings to read/write the data file */
size_t (*file_read)(MARIA_HA *, uchar *, size_t, my_off_t, myf);
size_t (*file_write)(MARIA_HA *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ /* query cache invalidator for merged tables */
+ invalidator_by_filename invalidator;
+ /* query cache invalidator for changing state */
+ invalidator_by_filename chst_invalidator;
my_off_t key_del_current; /* delete links for index pages */
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
=== modified file 'storage/myisam/ha_myisam.cc'
--- a/storage/myisam/ha_myisam.cc 2009-09-07 20:50:10 +0000
+++ b/storage/myisam/ha_myisam.cc 2009-10-06 14:53:46 +0000
@@ -690,6 +690,9 @@
if (!(file=mi_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (!table->s->tmp_table) /* No need to perform a check for tmp table */
{
if ((my_errno= table2myisam(table, &keyinfo, &recinfo, &recs)))
=== modified file 'storage/myisam/mi_locking.c'
--- a/storage/myisam/mi_locking.c 2009-09-03 14:05:38 +0000
+++ b/storage/myisam/mi_locking.c 2009-10-06 06:57:22 +0000
@@ -329,6 +329,12 @@
#endif
info->s->state.state= *info->state;
info->state= &info->s->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->filename));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->filename);
+#endif
}
info->append_insert_at_end= 0;
=== modified file 'storage/myisam/myisamdef.h'
--- a/storage/myisam/myisamdef.h 2009-04-25 09:04:38 +0000
+++ b/storage/myisam/myisamdef.h 2009-10-06 06:57:22 +0000
@@ -190,7 +190,10 @@
const uchar *record, my_off_t pos);
size_t (*file_read) (MI_INFO *, uchar *, size_t, my_off_t, myf);
size_t (*file_write) (MI_INFO *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ /* query cache invalidator for merged tables */
+ invalidator_by_filename invalidator;
+ /* query cache invalidator for changing state */
+ invalidator_by_filename chst_invalidator;
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
ulong last_version; /* Version on start */
1
0
[Maria-developers] Rev 2755: Added comment in file:///Users/bell/maria/bzr/work-maria-5.1-querycache-merge/
by sanja@askmonty.org 06 Oct '09
by sanja@askmonty.org 06 Oct '09
06 Oct '09
At file:///Users/bell/maria/bzr/work-maria-5.1-querycache-merge/
------------------------------------------------------------
revno: 2755
revision-id: sanja(a)askmonty.org-20091006142610-osutt1338w8nhyk1
parent: sanja(a)askmonty.org-20091006100053-mu2ek7z8rfxap4k3
committer: sanja(a)askmonty.org
branch nick: work-maria-5.1-querycache-merge
timestamp: Tue 2009-10-06 17:26:10 +0300
message:
Added comment
=== modified file 'BUILD/compile-pentium-debug-max-no-qc'
--- a/BUILD/compile-pentium-debug-max-no-qc 2009-10-06 06:57:22 +0000
+++ b/BUILD/compile-pentium-debug-max-no-qc 2009-10-06 14:26:10 +0000
@@ -1,4 +1,5 @@
#! /bin/sh
+# Builds this tree without query cache support.
path=`dirname $0`
. "$path/SETUP.sh"
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2755)
by knielsen@knielsen-hq.org 06 Oct '09
by knielsen@knielsen-hq.org 06 Oct '09
06 Oct '09
#At lp:maria
2755 knielsen(a)knielsen-hq.org 2009-10-06
Make sure that partition tests are included in mysql-test-run by default.
modified:
mysql-test/mysql-test-run.pl
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-10-06 06:46:45 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-06 14:02:53 +0000
@@ -126,13 +126,13 @@ my $path_config_file; # The ge
# executables will be used by the test suite.
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
-my $DEFAULT_SUITES= "binlog,federated,main,maria,ndb,rpl,rpl_ndb,innodb";
+my $DEFAULT_SUITES= "binlog,federated,main,maria,rpl,innodb,parts";
my $opt_suites;
our $opt_usage;
our $opt_list_options;
our $opt_suites;
-our $opt_suites_default= "main,backup,backup_engines,binlog,rpl,rpl_ndb,ndb"; # Default suites to run
+our $opt_suites_default= "main,backup,backup_engines,binlog,rpl,parts"; # Default suites to run
our $opt_script_debug= 0; # Script debugging, enable with --script-debug
our $opt_verbose= 0; # Verbose output, enable with --verbose
our $exe_mysql;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2754)
by knielsen@knielsen-hq.org 06 Oct '09
by knielsen@knielsen-hq.org 06 Oct '09
06 Oct '09
#At lp:maria
2754 knielsen(a)knielsen-hq.org 2009-10-06
Fix test failures in innodb-index and partition_special_*:
- innodb-index needs regexp replace for embedded like other similar tests.
- partitions_special_* need to be modified for the extension from 16 to 32
max key parts allowed that was made in MariaDB.
modified:
mysql-test/r/innodb-index.result
mysql-test/suite/parts/inc/partition_key_32col.inc
mysql-test/suite/parts/r/partition_special_innodb.result
mysql-test/suite/parts/r/partition_special_myisam.result
mysql-test/t/innodb-index.test
=== modified file 'mysql-test/r/innodb-index.result'
--- a/mysql-test/r/innodb-index.result 2009-08-03 20:09:53 +0000
+++ b/mysql-test/r/innodb-index.result 2009-10-06 11:39:57 +0000
@@ -464,7 +464,7 @@ ERROR 23000: Cannot delete or update a p
drop index dc on t4;
ERROR 42000: Can't DROP 'dc'; check that column/key exists
alter table t3 drop foreign key dc;
-ERROR HY000: Error on rename of './test/t3' to '#sql2-temporary' (errno: 152)
+ERROR HY000: Error on rename of './test/t3' to './#sql2-temporary' (errno: 152)
alter table t4 drop foreign key dc;
select * from t2;
a b c d e
=== modified file 'mysql-test/suite/parts/inc/partition_key_32col.inc'
--- a/mysql-test/suite/parts/inc/partition_key_32col.inc 2009-01-31 15:47:35 +0000
+++ b/mysql-test/suite/parts/inc/partition_key_32col.inc 2009-10-06 11:39:57 +0000
@@ -1,10 +1,19 @@
+# In MariaDB, max key parts is extended from 16 to 32. But 33 keys don't work.
--error ER_TOO_MANY_KEY_PARTS
+eval create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4)) engine=$engine
+partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4) (
+partition pa1 max_rows=20 min_rows=2,
+partition pa2 max_rows=30 min_rows=3,
+partition pa3 max_rows=30 min_rows=4,
+partition pa4 max_rows=40 min_rows=2);
+
eval create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3)) engine=$engine
partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3) (
partition pa1 max_rows=20 min_rows=2,
partition pa2 max_rows=30 min_rows=3,
partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2);
+drop table t1;
eval create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1)) engine=$engine
partition by key(a,b,c,d,e,f,g,h) (
=== modified file 'mysql-test/suite/parts/r/partition_special_innodb.result'
--- a/mysql-test/suite/parts/r/partition_special_innodb.result 2008-12-04 09:47:25 +0000
+++ b/mysql-test/suite/parts/r/partition_special_innodb.result 2009-10-06 11:39:57 +0000
@@ -127,13 +127,20 @@ a b c d e f g h a1 b1 c1 d1 e1 f1 g1 h1
1980-10-14 fgbbd dtzndtz w 67856 5463354.67 3567845333 124 1980-10-14 fgbbd dtzndtz w 67856 5463354.67 3567845333 124 d,f söierugsig msireg siug ei5ggth lrutluitgzeöjrtnb.rkjthuekuhzrkuthgjdnffjmbr
1975-01-01 abcde abcde m 1234 123.45 32412341234 113 1975-01-01 abcde abcde m 1234 123.45 32412341234 113 tbhth nrzh ztfghgfh fzh ftzhj fztjh
drop table t1;
+create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4)) engine='InnoDB'
+partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4) (
+partition pa1 max_rows=20 min_rows=2,
+partition pa2 max_rows=30 min_rows=3,
+partition pa3 max_rows=30 min_rows=4,
+partition pa4 max_rows=40 min_rows=2);
+ERROR 42000: Too many key parts specified; max 32 parts allowed
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3)) engine='InnoDB'
partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3) (
partition pa1 max_rows=20 min_rows=2,
partition pa2 max_rows=30 min_rows=3,
partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2);
-ERROR 42000: Too many key parts specified; max 16 parts allowed
+drop table t1;
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1)) engine='InnoDB'
partition by key(a,b,c,d,e,f,g,h) (
partition pa1 max_rows=20 min_rows=2,
=== modified file 'mysql-test/suite/parts/r/partition_special_myisam.result'
--- a/mysql-test/suite/parts/r/partition_special_myisam.result 2008-11-04 07:43:21 +0000
+++ b/mysql-test/suite/parts/r/partition_special_myisam.result 2009-10-06 11:39:57 +0000
@@ -127,13 +127,20 @@ a b c d e f g h a1 b1 c1 d1 e1 f1 g1 h1
1980-10-14 fgbbd dtzndtz w 67856 5463354.67 3567845333 124 1980-10-14 fgbbd dtzndtz w 67856 5463354.67 3567845333 124 d,f söierugsig msireg siug ei5ggth lrutluitgzeöjrtnb.rkjthuekuhzrkuthgjdnffjmbr
1975-01-01 abcde abcde m 1234 123.45 32412341234 113 1975-01-01 abcde abcde m 1234 123.45 32412341234 113 tbhth nrzh ztfghgfh fzh ftzhj fztjh
drop table t1;
+create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4)) engine='MyISAM'
+partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3,a4) (
+partition pa1 max_rows=20 min_rows=2,
+partition pa2 max_rows=30 min_rows=3,
+partition pa3 max_rows=30 min_rows=4,
+partition pa4 max_rows=40 min_rows=2);
+ERROR 42000: Too many key parts specified; max 32 parts allowed
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3)) engine='MyISAM'
partition by key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1,a2,b2,c2,d2,e2,f2,g2,h2,a3,b3,c3,d3,e3,f3,g3,h3) (
partition pa1 max_rows=20 min_rows=2,
partition pa2 max_rows=30 min_rows=3,
partition pa3 max_rows=30 min_rows=4,
partition pa4 max_rows=40 min_rows=2);
-ERROR 42000: Too many key parts specified; max 16 parts allowed
+drop table t1;
create table t1 (a date not null, b varchar(50) not null, c varchar(50) not null, d enum('m', 'w') not null, e int not null, f decimal (18,2) not null, g bigint not null, h tinyint not null, a1 date not null, b1 varchar(50) not null, c1 varchar(50) not null, d1 enum('m', 'w') not null, e1 int not null, f1 decimal (18,2) not null, g1 bigint not null, h1 tinyint not null, a2 date not null, b2 varchar(50) not null, c2 varchar(50) not null, d2 enum('m', 'w') not null, e2 int not null, f2 decimal (18,2) not null, g2 bigint not null, h2 tinyint not null, a3 date not null, b3 varchar(50) not null, c3 varchar(50) not null, d3 enum('m', 'w') not null, e3 int not null, f3 decimal (18,2) not null, g3 bigint not null, h3 tinyint not null, i char(255), primary key(a,b,c,d,e,f,g,h,a1,b1,c1,d1,e1,f1,g1,h1)) engine='MyISAM'
partition by key(a,b,c,d,e,f,g,h) (
partition pa1 max_rows=20 min_rows=2,
=== modified file 'mysql-test/t/innodb-index.test'
--- a/mysql-test/t/innodb-index.test 2009-08-03 20:09:53 +0000
+++ b/mysql-test/t/innodb-index.test 2009-10-06 11:39:57 +0000
@@ -148,7 +148,9 @@ delete from t1;
--error ER_CANT_DROP_FIELD_OR_KEY
drop index dc on t4;
# there is no foreign key dc on t3
---replace_regex /'\.\/test\/#sql2-[0-9a-f-]*'/'#sql2-temporary'/
+# Embedded server doesn't chdir to data directory
+--replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
+--replace_regex /\/test\/#sql2-[0-9a-f-]*'/\/#sql2-temporary'/
--error ER_ERROR_ON_RENAME
alter table t3 drop foreign key dc;
alter table t4 drop foreign key dc;
1
0
[Maria-developers] Rev 2702: merge in file:///Users/bell/maria/bzr/work-maria-5.1-mysql-test-run-merge-test1/
by sanja@askmonty.org 06 Oct '09
by sanja@askmonty.org 06 Oct '09
06 Oct '09
At file:///Users/bell/maria/bzr/work-maria-5.1-mysql-test-run-merge-test1/
------------------------------------------------------------
revno: 2702 [merge]
revision-id: sanja(a)askmonty.org-20091006101155-kohxrmkgnk1iig93
parent: psergey(a)askmonty.org-20090519002557-00dlusrzbnt40omj
parent: sanja(a)askmonty.org-20090924124939-nwi2kr48x0as70n8
committer: sanja(a)askmonty.org
branch nick: work-maria-5.1-mysql-test-run-merge-test1
timestamp: Tue 2009-10-06 13:11:55 +0300
message:
merge
removed:
BUILD/compile-solaris-amd64-forte-debug sp1f-compilesolarisamd64f-20071110100304-3yvpbmb5ujcqtrch6obkxwbcieq6dmou
cmd-line-utils/libedit/TEST/ sp1d-cmdlineutils_libedit_test-sl2i3okmzwze52dq3hcljhaoyemfh7gv
cmd-line-utils/libedit/TEST/test.c sp1f-test.c-20030118162815-fv7whrmrced3iy2qpvycgfqxwi2tdmt2
cmd-line-utils/libedit/compat.h sp1f-compat.h-20030118162815-i4tqhwpyeo62fghpl5n72w4onx4yoyk4
cmd-line-utils/libedit/compat_conf.h sp1f-compat_conf.h-20030118170458-qporj74yvyhjl3u7ayasnq3qxgvuywvx
cmd-line-utils/libedit/editline.3 sp1f-editline.3-20030118162815-ong633rioqakw4ieye2xtfzjc6j62y4r
cmd-line-utils/libedit/editrc.5 sp1f-editrc.5-20030118162815-72dhvzixfilxyeeqqrafiaskvbv7xzyr
cmd-line-utils/libedit/fgetln.c sp1f-fgetln.c-20030118162815-llowfgdstc2dmab7bx67joswogvjpmd2
cmd-line-utils/libedit/fgetln.h sp1f-fgetln.h-20030118162815-4ryuoofsirlrsyeyybrux3mwrblrru5c
cmd-line-utils/libedit/libedit_term.h sp1f-term.h-20030118162817-owaixsmn6cxizxxskf5dyeyhpnaqdm5k
cmd-line-utils/libedit/strlcpy.c sp1f-strlcpy.c-20030118162817-drw5ecyddtto7m5ro5saxv7taa2zdkir
cmd-line-utils/libedit/strlcpy.h sp1f-strlcpy.h-20030118162817-doxm22vktff6taq7whhp4krslwmhnbwz
cmd-line-utils/libedit/tokenizer.h sp1f-tokenizer.h-20030118162817-flq34tvnsp6v56dhg5s7yufh6as2qxbf
cmd-line-utils/libedit/unvis.c sp1f-unvis.c-20050421100639-zkeadzdus5rcxyzqwvni7zm4mudkfle3
cmd-line-utils/libedit/vis.c sp1f-vis.c-20050421100639-blpgof44agarr63aejfec4nkfzfgeksj
cmd-line-utils/libedit/vis.h sp1f-vis.h-20050421100639-eh4qneh5hgqeinx3rpilnjputhz34h73
mysql-test/include/ctype_innodb_like.inc sp1f-ctype_innodb_like.in-20050706121358-3tkzw2mwcfsettc73z7wzk4fx4sh5sk4
mysql-test/include/have_innodb.inc sp1f-have_innobase.inc-20010112144027-m7j2l7rwqewdpugmkwq5nkpcxx7tvweb
mysql-test/include/innodb_trx_weight.inc sp1f-innodb_trx_weight.in-20070710003220-gduj5nrhg425vick6uopxdg34pjcjeic
mysql-test/include/wait_for_query_to_suceed.inc sp1f-wait_for_query_to_su-20061030134225-dobpl3cb432swdr3iyop4qf2dzfstnaj
mysql-test/r/innodb-autoinc.result innodbautoinc.result-20080820011033-t6ci67x700jby4dt-1
mysql-test/r/innodb-lock.result sp1f-innodblock.result-20040429134230-i3dq3yx3lvsutqlypaqgv45wtanr6s6r
mysql-test/r/innodb-replace.result sp1f-innodbreplace.result-20050330000728-h3ru7w5cobi4cuqn5h3acooxpka2gubf
mysql-test/r/innodb-semi-consistent.result sp1f-innodbsemiconsistent-20071106222346-cux75sksjoig7fesccqo6k3pkgeivb4q
mysql-test/r/innodb.result sp1f-innobase.result-20010112144027-uy46ajwex4ez4tbibcn4wnopkxm2vamd
mysql-test/r/innodb_bug34053.result sp1f-innodb_bug34053.resu-20080219021126-mrvev3qveg5tu3fuu5g72j2i3cicuf3d
mysql-test/r/innodb_bug34300.result innodb_bug34300.resu-20080820011033-t6ci67x700jby4dt-2
mysql-test/r/innodb_bug35220.result innodb_bug35220.resu-20080808002154-8ndjebe0ousvoomb-2
mysql-test/r/innodb_trx_weight.result sp1f-innodb_trx_weight.re-20070710001601-t7p4qzukyhckrbuce7pz3ot6pg5plott
mysql-test/suite/sys_vars/r/event_scheduler_func.result sp1f-event_scheduler_func-20080410131241-llfmxvn4utb4ijcp3rmhdynvs7wxhtnv
mysql-test/suite/sys_vars/t/completion_type_func-master.opt sp1f-completion_type_func-20080410131349-n5smadw3zgnu54x6flpfvr5ffkumiv3z
mysql-test/suite/sys_vars/t/event_scheduler_func.test sp1f-event_scheduler_func-20080410131351-y4uyttxkdooka7es6mnglfvd3i2qtv7f
mysql-test/t/innodb-autoinc.test innodbautoinc.test-20080820011033-t6ci67x700jby4dt-3
mysql-test/t/innodb-lock.test sp1f-innodblock.test-20040429134230-ml3z54sjjeakf7rmih6oauxeqq67337r
mysql-test/t/innodb-master.opt sp1f-rpl_relayrotatemaste-20040401204453-gc25mccj3kwcvon5gsen5pajrg23vcur
mysql-test/t/innodb-replace.test sp1f-innodbreplace.test-20050330000728-oml77v6x5f43otx5dhgreap2djrs3dzr
mysql-test/t/innodb-semi-consistent-master.opt sp1f-innodbsemiconsistent-20071106222346-koz7m5muviqyi63sebzeflmdpba6a5mi
mysql-test/t/innodb-semi-consistent.test sp1f-innodbsemiconsistent-20071106222346-6hu67t6hebif5mkgeclhg44onlz2jrtm
mysql-test/t/innodb.test sp1f-innobase.test-20010112144027-wr4vc4ttrijucvuc5szdhgvh4rayp4nr
mysql-test/t/innodb_bug34053.test sp1f-innodb_bug34053.test-20080219021126-itfsxfjyoeijmhbduxzjori26d34azbz
mysql-test/t/innodb_bug34300.test innodb_bug34300.test-20080820011033-t6ci67x700jby4dt-4
mysql-test/t/innodb_bug35220.test innodb_bug35220.test-20080808002154-8ndjebe0ousvoomb-1
mysql-test/t/innodb_trx_weight.test sp1f-innodb_trx_weight.te-20070710001601-bl5fkk3k2l6nnjvp5gztv7mdyrdhiwni
sql-bench/TODO sp1f-todo-20010311192014-td5fd3lypg4elgwygie3gpwv7rakf4ff
storage/pbxt/src/streaming_xt.cc streaming_xt.cc-20090326121724-x683v32twzr3fi0y-57
storage/pbxt/src/streaming_xt.h streaming_xt.h-20090326121724-x683v32twzr3fi0y-58
added:
BUILD/compile-innodb compileinnodb-20081201061010-zymrrwrczns2vrex-9
BUILD/compile-innodb-debug compileinnodbdebug-20081201061010-zymrrwrczns2vrex-10
BUILD/compile-solaris-amd64-debug-forte compilesolarisamd64d-20090707110736-p2i53hs87u5tkgxs-1
BUILD/compile-solaris-x86-32 compilesolarisx8632-20090707110736-p2i53hs87u5tkgxs-2
BUILD/compile-solaris-x86-32-debug compilesolarisx8632d-20090707110736-p2i53hs87u5tkgxs-3
BUILD/compile-solaris-x86-32-debug-forte compilesolarisx8632d-20090707110736-p2i53hs87u5tkgxs-4
BUILD/compile-solaris-x86-forte-32 compilesolarisx86for-20090707110736-p2i53hs87u5tkgxs-5
cmd-line-utils/libedit/README readme-20090210110406-hx73z934mz47ger7-1
cmd-line-utils/libedit/filecomplete.c filecomplete.c-20090210110406-hx73z934mz47ger7-2
cmd-line-utils/libedit/filecomplete.h filecomplete.h-20090210110406-hx73z934mz47ger7-3
man/comp_err.1 comp_err.1-20090525095603-4fk5uwzrx2c7shtv-1
man/innochecksum.1 innochecksum.1-20090525095601-iqajpx4dd1tmgcv5-1
man/make_win_bin_dist.1 make_win_bin_dist.1-20090525095616-uxyflq5ybbyscodp-1
man/msql2mysql.1 msql2mysql.1-20090525095615-gdgvhigy9if7xq4g-1
man/my_print_defaults.1 my_print_defaults.1-20090525095609-tni7cnhq2jgs39kn-1
man/myisam_ftdump.1 myisam_ftdump.1-20090525095628-2jh4hkxgv438xsgv-1
man/myisamchk.1 myisamchk.1-20090525095638-dzseeu4ycd9e5ord-1
man/myisamlog.1 myisamlog.1-20090525095612-q6pse99hpl4xobaa-1
man/myisampack.1 myisampack.1-20090525095647-5dbjtz28ostitqta-1
man/mysql-stress-test.pl.1 mysqlstresstest.pl.1-20090525095649-19nwoj9hjrh2h5g6-1
man/mysql-test-run.pl.1 mysqltestrun.pl.1-20090525095613-lxqhkj31dtsojqe9-1
man/mysql.1 mysql.1-20090525095614-mcx09byxwzmmjve9-1
man/mysql.server.1 mysql.server.1-20090525095639-cn3iskg7mylu3f7y-1
man/mysql_client_test.1 mysql_client_test.1-20090525095633-wzvw7zq0frrhvzt9-1
man/mysql_client_test_embedded.1 mysql_client_test_em-20090525095635-glkk4hpvaa0pznu1-1
man/mysql_config.1 mysql_config.1-20090525095621-i03klu91hgc51v7v-1
man/mysql_convert_table_format.1 mysql_convert_table_-20090525095631-181nirm84ivqfftv-1
man/mysql_find_rows.1 mysql_find_rows.1-20090525095619-4siq8k2zias4vosn-1
man/mysql_fix_extensions.1 mysql_fix_extensions-20090525095608-bybthq626if21blt-1
man/mysql_fix_privilege_tables.1 mysql_fix_privilege_-20090525095618-7dbntbmbro9h1mq4-1
man/mysql_install_db.1 mysql_install_db.1-20090525095630-dmkfbumaw81atu24-1
man/mysql_secure_installation.1 mysql_secure_install-20090525095646-5j5oc7jsecqqi5fv-1
man/mysql_setpermission.1 mysql_setpermission.-20090525095648-7qb24l20njulwpaf-1
man/mysql_tzinfo_to_sql.1 mysql_tzinfo_to_sql.-20090525095622-95m0xn1wx377hecm-1
man/mysql_upgrade.1 mysql_upgrade.1-20090525095624-3lc34mq3fnbz0keh-1
man/mysql_waitpid.1 mysql_waitpid.1-20090525095623-ukknhxen5c561a01-1
man/mysql_zap.1 mysql_zap.1-20090525095636-fttn5to1r6eqoptk-1
man/mysqlaccess.1 mysqlaccess.1-20090525095634-e84nr9bc820h5lh3-1
man/mysqladmin.1 mysqladmin.1-20090525095607-93akc7rtgncf8d4z-1
man/mysqlbinlog.1 mysqlbinlog.1-20090525095626-jfmz563j8jg73xrb-1
man/mysqlbug.1 mysqlbug.1-20090525095618-hzp6y070bmc1a6cn-1
man/mysqlcheck.1 mysqlcheck.1-20090525095611-8xoc706tixmrd1jf-1
man/mysqld.8 mysqld.8-20090525095600-80gvk83sokzwkf93-1
man/mysqld_multi.1 mysqld_multi.1-20090525095604-4k46xzppayrgbb2p-1
man/mysqld_safe.1 mysqld_safe.1-20090525095642-929nskpxfqo13wst-1
man/mysqldump.1 mysqldump.1-20090525095617-c0vnkqb3h4a3blus-1
man/mysqldumpslow.1 mysqldumpslow.1-20090525095629-dwva1gytzeq6ebha-1
man/mysqlhotcopy.1 mysqlhotcopy.1-20090525095641-uaojhd5lf772ga9b-1
man/mysqlimport.1 mysqlimport.1-20090525095627-mfl13ovw3oornooa-1
man/mysqlmanager.8 mysqlmanager.8-20090525095605-1h3mmx4430hb2n18-1
man/mysqlshow.1 mysqlshow.1-20090525095602-g122t7jqoc3bnqcn-1
man/mysqlslap.1 mysqlslap.1-20090525095610-qfprw8oc5cgsp0wu-1
man/mysqltest.1 mysqltest.1-20090525095620-v74fgi55hw1sr3v8-1
man/mysqltest_embedded.1 mysqltest_embedded.1-20090525095625-8k75rtej4mauf1c1-1
man/ndbd.8 ndbd.8-20090525095643-bylmcypb2afkbix1-1
man/ndbd_redo_log_reader.1 ndbd_redo_log_reader-20090525095632-uavlb6ttl24fathd-1
man/ndbmtd.8 ndbmtd.8-20090525095640-qnk6tubhl257cee3-1
man/perror.1 perror.1-20090525095645-tik3ibzzfve4fvqu-1
man/replace.1 replace.1-20090525095644-t2e5pbl5bcho9z6l-1
man/resolve_stack_dump.1 resolve_stack_dump.1-20090525095637-enz9ko57nji5y4pa-1
man/resolveip.1 resolveip.1-20090525095606-x51yf7vy7vpijf0l-1
mysql-test/collections/ collections-20090224104203-xppl8kzoof2j1wdp-1
mysql-test/collections/README readme-20090224104203-xppl8kzoof2j1wdp-2
mysql-test/collections/README.experimental readme.experimental-20090224115153-en8qgzjquiw0dxzn-1
mysql-test/collections/default.daily default.daily-20090224104203-xppl8kzoof2j1wdp-3
mysql-test/collections/default.experimental default.experimental-20090224104813-e52mxw708penxv44-1
mysql-test/collections/default.push default.push-20090224104203-xppl8kzoof2j1wdp-4
mysql-test/collections/default.weekly default.weekly-20090224104203-xppl8kzoof2j1wdp-5
mysql-test/extra/binlog_tests/binlog_truncate.test mysqltestextrabinlog-20090203094328-cdlisgvgn61hfpm1-1
mysql-test/extra/rpl_tests/rpl_loadfile.test rpl_loadfile.test-20090324181743-ws26vxxloyd9sgeo-1
mysql-test/include/count_sessions.inc count_sessions.inc-20090202210258-iack5k5y7cwupbis-1
mysql-test/include/ctype_innodb_like.inc ctype_innodb_like.in-20081201061010-zymrrwrczns2vrex-278
mysql-test/include/have_dynamic_loading.inc have_dynamic_loading-20090522174437-1iywv3u2rmhtf5lw-1
mysql-test/include/have_innodb.inc have_innodb.inc-20081201061010-zymrrwrczns2vrex-279
mysql-test/include/innodb-index.inc innodbindex.inc-20081201061010-zymrrwrczns2vrex-283
mysql-test/include/innodb_trx_weight.inc innodb_trx_weight.in-20081201061010-zymrrwrczns2vrex-310
mysql-test/include/not_staging.inc not_staging.inc-20090605153548-bf77z4qkl6bttx7v-1
mysql-test/include/wait_for_query_to_succeed.inc wait_for_query_to_su-20090210122226-uw5c07dzm1irs2ua-1
mysql-test/include/wait_show_condition.inc wait_show_condition.-20090220090725-5igv749dl0zat94a-3
mysql-test/include/wait_until_count_sessions.inc wait_until_count_ses-20090202210305-sld3k0z3q574o1xx-1
mysql-test/lib/process-purecov-annotations.pl processpurecovannota-20090825145959-3tgucpo20ms8b5yb-1
mysql-test/r/innodb-analyze.result innodbanalyze.result-20081203050234-edoolglm28lyejuc-5
mysql-test/r/innodb-autoinc.result innodbautoinc.result-20081201061010-zymrrwrczns2vrex-280
mysql-test/r/innodb-index.result innodbindex.result-20081201061010-zymrrwrczns2vrex-284
mysql-test/r/innodb-index_ucs2.result innodbindex_ucs2.res-20081201061010-zymrrwrczns2vrex-286
mysql-test/r/innodb-lock.result innodblock.result-20081201061010-zymrrwrczns2vrex-288
mysql-test/r/innodb-replace.result innodbreplace.result-20081201061010-zymrrwrczns2vrex-291
mysql-test/r/innodb-semi-consistent.result innodbsemiconsistent-20081201061010-zymrrwrczns2vrex-294
mysql-test/r/innodb-timeout.result innodbtimeout.result-20081203050234-edoolglm28lyejuc-7
mysql-test/r/innodb-use-sys-malloc.result innodbusesysmalloc.r-20090326061054-ylrdb8libxw6u7e9-4
mysql-test/r/innodb-zip.result innodbzip.result-20081201061010-zymrrwrczns2vrex-296
mysql-test/r/innodb.result innodb.result-20081201061010-zymrrwrczns2vrex-298
mysql-test/r/innodb_bug34053.result innodb_bug34053.resu-20081201061010-zymrrwrczns2vrex-300
mysql-test/r/innodb_bug34300.result innodb_bug34300.resu-20081201061010-zymrrwrczns2vrex-302
mysql-test/r/innodb_bug35220.result innodb_bug35220.resu-20081201061010-zymrrwrczns2vrex-304
mysql-test/r/innodb_bug36169.result innodb_bug36169.resu-20081201061010-zymrrwrczns2vrex-306
mysql-test/r/innodb_bug36172.result innodb_bug36172.resu-20081203050234-edoolglm28lyejuc-9
mysql-test/r/innodb_bug40360.result innodb_bug40360.resu-20081203050234-edoolglm28lyejuc-11
mysql-test/r/innodb_bug41904.result innodb_bug41904.resu-20090326061054-ylrdb8libxw6u7e9-6
mysql-test/r/innodb_bug42419.result innodb_bug42419.resu-20090220090725-5igv749dl0zat94a-2
mysql-test/r/innodb_ignore_builtin.result innodb_ignore_builti-20090209143354-yogs1pgfeif8x1rn-1
mysql-test/r/innodb_information_schema.result innodb_information_s-20081201061010-zymrrwrczns2vrex-308
mysql-test/r/innodb_trx_weight.result innodb_trx_weight.re-20081201061010-zymrrwrczns2vrex-311
mysql-test/r/innodb_xtradb_bug317074.result innodb_xtradb_bug317-20090326061054-ylrdb8libxw6u7e9-8
mysql-test/r/lock_multi_bug38499.result lock_multi_bug38499.-20090323142134-x1hjhoaa9zzqbs9d-1
mysql-test/r/lock_multi_bug38691.result lock_multi_bug38691.-20090323142134-x1hjhoaa9zzqbs9d-2
mysql-test/r/log_slow.result log_slow.result-20090903130213-g4uekoxftd69o7cr-1
mysql-test/r/lowercase_utf8.result lowercase_utf8.resul-20090217142032-e2a6a2erd3547psn-1
mysql-test/r/mysql-bug41486.result mysqlbug41486.result-20090323135900-fobg67a3yzg0b7e8-1
mysql-test/r/mysqld_option_err.result mysqld_option_err.re-20090903125847-d311kra14ipqyi2o-1
mysql-test/r/not_staging.require not_staging.require-20090605153548-bf77z4qkl6bttx7v-2
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/suite/binlog/r/binlog_sql_mode.result binlog_sql_mode.resu-20090228013050-26xcia0pj5n6pb45-1
mysql-test/suite/binlog/r/binlog_truncate_innodb.result mysqltestsuitebinlog-20090203094328-cdlisgvgn61hfpm1-2
mysql-test/suite/binlog/r/binlog_truncate_myisam.result mysqltestsuitebinlog-20090203094328-cdlisgvgn61hfpm1-5
mysql-test/suite/binlog/t/binlog_sql_mode.test binlog_sql_mode.test-20090228013040-b237oc3mtgm8a2z3-1
mysql-test/suite/binlog/t/binlog_truncate_innodb-master.opt mysqltestsuitebinlog-20090203094328-cdlisgvgn61hfpm1-6
mysql-test/suite/binlog/t/binlog_truncate_innodb.test mysqltestsuitebinlog-20090203094328-cdlisgvgn61hfpm1-3
mysql-test/suite/binlog/t/binlog_truncate_myisam.test mysqltestsuitebinlog-20090203094328-cdlisgvgn61hfpm1-4
mysql-test/suite/pbxt/t/lowercase_table_grant-master.opt lowercase_table_gran-20090828130852-3duj73io0g345hxj-1
mysql-test/suite/pbxt/t/lowercase_table_qcache-master.opt lowercase_table_qcac-20090828130852-3duj73io0g345hxj-2
mysql-test/suite/pbxt/t/lowercase_view-master.opt lowercase_viewmaster-20090828130852-3duj73io0g345hxj-3
mysql-test/suite/pbxt/t/udf-master.opt udfmaster.opt-20090828130852-3duj73io0g345hxj-4
mysql-test/suite/rpl/r/rpl_drop_if_exists.result rpl_drop_if_exists.r-20090210104946-vnykqe4n1y3v6u6f-1
mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result rpl_mixed_bit_pk.res-20090223205054-qea0t30dizujzz5d-1
mysql-test/suite/rpl/r/rpl_row_wide_table.result rpl_row_wide_table.r-20090325105308-d42l2tbmvn78ybme-1
mysql-test/suite/rpl/r/rpl_slave_load_in.result rpl_slave_load_in.re-20090221093443-u7egrbvbd7ywzoqc-1
mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result rpl_slave_fail_load_-20090317104308-hlm8218eqojabbnb-1
mysql-test/suite/rpl/r/rpl_slave_load_tmpdir_not_exist.result rpl_slave_fail_load_-20090311233119-r8jlt6m785y3p3fd-1
mysql-test/suite/rpl/r/rpl_stm_loadfile.result rpl_stm_loadfile.res-20090324181743-ws26vxxloyd9sgeo-2
mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result rpl_temp_table_mix_r-20090218083041-dzndrvs1zwqy0w11-1
mysql-test/suite/rpl/t/rpl_drop_if_exists.test rpl_drop_if_exists.t-20090210104946-vnykqe4n1y3v6u6f-2
mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test rpl_mixed_bit_pk.tes-20090223205054-qea0t30dizujzz5d-2
mysql-test/suite/rpl/t/rpl_row_wide_table.test rpl_row_wide_table.t-20090325105308-d42l2tbmvn78ybme-2
mysql-test/suite/rpl/t/rpl_slave_load_in.test rpl_slave_load_in.te-20090221093443-u7egrbvbd7ywzoqc-2
mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile-slave.opt rpl_slave_fail_load_-20090316160719-dan8mju00yyg02kt-1
mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test rpl_slave_fail_load_-20090316155115-ydeyw4dljkuo6vf5-1
mysql-test/suite/rpl/t/rpl_slave_load_tmpdir_not_exist-slave.opt rpl_slave_fail_load_-20090312015427-uwe09z08j58v6skd-1
mysql-test/suite/rpl/t/rpl_slave_load_tmpdir_not_exist.test rpl_slave_fail_load_-20090311233144-1qhb4onl2vcj9oys-1
mysql-test/suite/rpl/t/rpl_stm_loadfile.test rpl_stm_loadfile.tes-20090324181743-ws26vxxloyd9sgeo-3
mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test rpl_temp_table_mix_r-20090218082753-7hvrfuol80st3mnu-1
mysql-test/t/innodb-analyze.test innodbanalyze.test-20081203050234-edoolglm28lyejuc-6
mysql-test/t/innodb-autoinc.test innodbautoinc.test-20081201061010-zymrrwrczns2vrex-281
mysql-test/t/innodb-index.test innodbindex.test-20081201061010-zymrrwrczns2vrex-285
mysql-test/t/innodb-index_ucs2.test innodbindex_ucs2.tes-20081201061010-zymrrwrczns2vrex-287
mysql-test/t/innodb-lock.test innodblock.test-20081201061010-zymrrwrczns2vrex-289
mysql-test/t/innodb-master.opt innodbmaster.opt-20081201061010-zymrrwrczns2vrex-290
mysql-test/t/innodb-replace.test innodbreplace.test-20081201061010-zymrrwrczns2vrex-292
mysql-test/t/innodb-semi-consistent-master.opt innodbsemiconsistent-20081201061010-zymrrwrczns2vrex-293
mysql-test/t/innodb-semi-consistent.test innodbsemiconsistent-20081201061010-zymrrwrczns2vrex-295
mysql-test/t/innodb-timeout.test innodbtimeout.test-20081203050234-edoolglm28lyejuc-8
mysql-test/t/innodb-use-sys-malloc-master.opt innodbusesysmallocma-20090326061054-ylrdb8libxw6u7e9-3
mysql-test/t/innodb-use-sys-malloc.test innodbusesysmalloc.t-20090326061054-ylrdb8libxw6u7e9-5
mysql-test/t/innodb-zip.test innodbzip.test-20081201061010-zymrrwrczns2vrex-297
mysql-test/t/innodb.test innodb.test-20081201061010-zymrrwrczns2vrex-299
mysql-test/t/innodb_bug34053.test innodb_bug34053.test-20081201061010-zymrrwrczns2vrex-301
mysql-test/t/innodb_bug34300.test innodb_bug34300.test-20081201061010-zymrrwrczns2vrex-303
mysql-test/t/innodb_bug35220.test innodb_bug35220.test-20081201061010-zymrrwrczns2vrex-305
mysql-test/t/innodb_bug36169.test innodb_bug36169.test-20081201061010-zymrrwrczns2vrex-307
mysql-test/t/innodb_bug36172.test innodb_bug36172.test-20081203050234-edoolglm28lyejuc-10
mysql-test/t/innodb_bug40360.test innodb_bug40360.test-20081203050234-edoolglm28lyejuc-12
mysql-test/t/innodb_bug41904.test innodb_bug41904.test-20090326061054-ylrdb8libxw6u7e9-7
mysql-test/t/innodb_bug42419.test innodb_bug42419.test-20090220090725-5igv749dl0zat94a-1
mysql-test/t/innodb_ignore_builtin-master.opt innodb_ignore_builti-20090209143412-mt485smy3zgijyz6-1
mysql-test/t/innodb_ignore_builtin.test innodb_ignore_builti-20090209143418-m5lc2pcmp68qocly-1
mysql-test/t/innodb_information_schema.test innodb_information_s-20081201061010-zymrrwrczns2vrex-309
mysql-test/t/innodb_trx_weight.test innodb_trx_weight.te-20081201061010-zymrrwrczns2vrex-312
mysql-test/t/innodb_xtradb_bug317074.test innodb_xtradb_bug317-20090326061054-ylrdb8libxw6u7e9-9
mysql-test/t/lock_multi_bug38499.test lock_multi_bug38499.-20090323142129-zy29x8evgcinsvud-1
mysql-test/t/lock_multi_bug38691.test lock_multi_bug38691.-20090323142129-zy29x8evgcinsvud-2
mysql-test/t/log_slow.test log_slow.test-20090903130444-i0i8h0k5qt9xatcx-2
mysql-test/t/lowercase_utf8-master.opt lowercase_utf8master-20090217142044-x649434r6nbg30pz-1
mysql-test/t/lowercase_utf8.test lowercase_utf8.test-20090217142049-8munjs6yn3mbd6rc-1
mysql-test/t/mysql-bug41486.test mysqlbug41486.test-20090323135900-fobg67a3yzg0b7e8-2
mysql-test/t/mysqld_option_err.test mysqld_option_err.te-20090903125847-d311kra14ipqyi2o-2
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql-bench/test-table-elimination.sh testtableelimination-20090616194329-gai92muve732qknl-1
sql/log_slow.h log_slow.h-20090903130444-i0i8h0k5qt9xatcx-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
storage/ibmdb2i/ ibmdb2i-20090215021022-15ov21fvravqaicb-1
storage/ibmdb2i/CMakeLists.txt cmakelists.txt-20090215021022-15ov21fvravqaicb-2
storage/ibmdb2i/Makefile.am makefile.am-20090215021022-15ov21fvravqaicb-3
storage/ibmdb2i/db2i_blobCollection.cc db2i_blobcollection.-20090215021022-15ov21fvravqaicb-4
storage/ibmdb2i/db2i_blobCollection.h db2i_blobcollection.-20090215021022-15ov21fvravqaicb-5
storage/ibmdb2i/db2i_charsetSupport.cc db2i_charsetsupport.-20090215021022-15ov21fvravqaicb-6
storage/ibmdb2i/db2i_charsetSupport.h db2i_charsetsupport.-20090215021022-15ov21fvravqaicb-7
storage/ibmdb2i/db2i_collationSupport.cc db2i_collationsuppor-20090215021022-15ov21fvravqaicb-8
storage/ibmdb2i/db2i_collationSupport.h db2i_collationsuppor-20090215021022-15ov21fvravqaicb-9
storage/ibmdb2i/db2i_constraints.cc db2i_constraints.cc-20090215021022-15ov21fvravqaicb-10
storage/ibmdb2i/db2i_conversion.cc db2i_conversion.cc-20090215021022-15ov21fvravqaicb-11
storage/ibmdb2i/db2i_errors.cc db2i_errors.cc-20090215021022-15ov21fvravqaicb-12
storage/ibmdb2i/db2i_errors.h db2i_errors.h-20090215021022-15ov21fvravqaicb-13
storage/ibmdb2i/db2i_file.cc db2i_file.cc-20090215021022-15ov21fvravqaicb-14
storage/ibmdb2i/db2i_file.h db2i_file.h-20090215021022-15ov21fvravqaicb-15
storage/ibmdb2i/db2i_global.h db2i_global.h-20090215021022-15ov21fvravqaicb-16
storage/ibmdb2i/db2i_iconv.h db2i_iconv.h-20090215021022-15ov21fvravqaicb-17
storage/ibmdb2i/db2i_ileBridge.cc db2i_ilebridge.cc-20090215021022-15ov21fvravqaicb-18
storage/ibmdb2i/db2i_ileBridge.h db2i_ilebridge.h-20090215021022-15ov21fvravqaicb-19
storage/ibmdb2i/db2i_ioBuffers.cc db2i_iobuffers.cc-20090215021022-15ov21fvravqaicb-20
storage/ibmdb2i/db2i_ioBuffers.h db2i_iobuffers.h-20090215021022-15ov21fvravqaicb-21
storage/ibmdb2i/db2i_misc.h db2i_misc.h-20090215021022-15ov21fvravqaicb-22
storage/ibmdb2i/db2i_myconv.cc db2i_myconv.cc-20090215021022-15ov21fvravqaicb-23
storage/ibmdb2i/db2i_myconv.h db2i_myconv.h-20090215021022-15ov21fvravqaicb-24
storage/ibmdb2i/db2i_rir.cc db2i_rir.cc-20090215021022-15ov21fvravqaicb-25
storage/ibmdb2i/db2i_safeString.h db2i_safestring.h-20090215021022-15ov21fvravqaicb-26
storage/ibmdb2i/db2i_sqlStatementStream.cc db2i_sqlstatementstr-20090215021022-15ov21fvravqaicb-27
storage/ibmdb2i/db2i_sqlStatementStream.h db2i_sqlstatementstr-20090215021022-15ov21fvravqaicb-28
storage/ibmdb2i/db2i_validatedPointer.h db2i_validatedpointe-20090215021022-15ov21fvravqaicb-29
storage/ibmdb2i/ha_ibmdb2i.cc ha_ibmdb2i.cc-20090215021022-15ov21fvravqaicb-30
storage/ibmdb2i/ha_ibmdb2i.h ha_ibmdb2i.h-20090215021022-15ov21fvravqaicb-31
storage/ibmdb2i/plug.in plug.in-20090215021022-15ov21fvravqaicb-32
storage/pbxt/src/pbms_enabled.cc pbms_enabled.cc-20090818074502-tybcb62hp1kdrk3l-1
storage/pbxt/src/pbms_enabled.h pbms_enabled.h-20090818074502-tybcb62hp1kdrk3l-2
storage/xtradb/ xtradb-20090609111544-098deb9y7nt1th5v-1
storage/xtradb/CMakeLists.txt cmakelists.txt-20081201061010-zymrrwrczns2vrex-1
storage/xtradb/COPYING.Google copying.google-20090326061054-ylrdb8libxw6u7e9-1
storage/xtradb/ChangeLog changelog-20081201061010-zymrrwrczns2vrex-3
storage/xtradb/Makefile.am makefile.am-20081201061010-zymrrwrczns2vrex-4
storage/xtradb/btr/ btr-20081201061010-zymrrwrczns2vrex-7
storage/xtradb/btr/btr0btr.c btr0btr.c-20081201061010-zymrrwrczns2vrex-44
storage/xtradb/btr/btr0cur.c btr0cur.c-20081201061010-zymrrwrczns2vrex-45
storage/xtradb/btr/btr0pcur.c btr0pcur.c-20081201061010-zymrrwrczns2vrex-46
storage/xtradb/btr/btr0sea.c btr0sea.c-20081201061010-zymrrwrczns2vrex-47
storage/xtradb/buf/ buf-20081201061010-zymrrwrczns2vrex-8
storage/xtradb/buf/buf0buddy.c buf0buddy.c-20081201061010-zymrrwrczns2vrex-48
storage/xtradb/buf/buf0buf.c buf0buf.c-20081201061010-zymrrwrczns2vrex-49
storage/xtradb/buf/buf0flu.c buf0flu.c-20081201061010-zymrrwrczns2vrex-50
storage/xtradb/buf/buf0lru.c buf0lru.c-20081201061010-zymrrwrczns2vrex-51
storage/xtradb/buf/buf0rea.c buf0rea.c-20081201061010-zymrrwrczns2vrex-52
storage/xtradb/data/ data-20081201061010-zymrrwrczns2vrex-11
storage/xtradb/data/data0data.c data0data.c-20081201061010-zymrrwrczns2vrex-53
storage/xtradb/data/data0type.c data0type.c-20081201061010-zymrrwrczns2vrex-54
storage/xtradb/dict/ dict-20081201061010-zymrrwrczns2vrex-12
storage/xtradb/dict/dict0boot.c dict0boot.c-20081201061010-zymrrwrczns2vrex-55
storage/xtradb/dict/dict0crea.c dict0crea.c-20081201061010-zymrrwrczns2vrex-56
storage/xtradb/dict/dict0dict.c dict0dict.c-20081201061010-zymrrwrczns2vrex-57
storage/xtradb/dict/dict0load.c dict0load.c-20081201061010-zymrrwrczns2vrex-58
storage/xtradb/dict/dict0mem.c dict0mem.c-20081201061010-zymrrwrczns2vrex-59
storage/xtradb/dyn/ dyn-20081201061010-zymrrwrczns2vrex-13
storage/xtradb/dyn/dyn0dyn.c dyn0dyn.c-20081201061010-zymrrwrczns2vrex-60
storage/xtradb/eval/ eval-20081201061010-zymrrwrczns2vrex-14
storage/xtradb/eval/eval0eval.c eval0eval.c-20081201061010-zymrrwrczns2vrex-61
storage/xtradb/eval/eval0proc.c eval0proc.c-20081201061010-zymrrwrczns2vrex-62
storage/xtradb/fil/ fil-20081201061010-zymrrwrczns2vrex-15
storage/xtradb/fil/fil0fil.c fil0fil.c-20081201061010-zymrrwrczns2vrex-63
storage/xtradb/fsp/ fsp-20081201061010-zymrrwrczns2vrex-16
storage/xtradb/fsp/fsp0fsp.c fsp0fsp.c-20081201061010-zymrrwrczns2vrex-64
storage/xtradb/fut/ fut-20081201061010-zymrrwrczns2vrex-17
storage/xtradb/fut/fut0fut.c fut0fut.c-20081201061010-zymrrwrczns2vrex-65
storage/xtradb/fut/fut0lst.c fut0lst.c-20081201061010-zymrrwrczns2vrex-66
storage/xtradb/ha/ ha-20081201061010-zymrrwrczns2vrex-18
storage/xtradb/ha/ha0ha.c ha0ha.c-20081201061010-zymrrwrczns2vrex-67
storage/xtradb/ha/ha0storage.c ha0storage.c-20081201061010-zymrrwrczns2vrex-68
storage/xtradb/ha/hash0hash.c hash0hash.c-20081201061010-zymrrwrczns2vrex-69
storage/xtradb/ha_innodb.def ha_innodb.def-20081203050234-edoolglm28lyejuc-1
storage/xtradb/handler/ handler-20081201061010-zymrrwrczns2vrex-19
storage/xtradb/handler/ha_innodb.cc ha_innodb.cc-20081201061010-zymrrwrczns2vrex-70
storage/xtradb/handler/ha_innodb.h ha_innodb.h-20081201061010-zymrrwrczns2vrex-71
storage/xtradb/handler/handler0alter.cc handler0alter.cc-20081201061010-zymrrwrczns2vrex-72
storage/xtradb/handler/handler0vars.h handler0vars.h-20081203050234-edoolglm28lyejuc-3
storage/xtradb/handler/i_s.cc i_s.cc-20081201061010-zymrrwrczns2vrex-73
storage/xtradb/handler/i_s.h i_s.h-20081201061010-zymrrwrczns2vrex-74
storage/xtradb/handler/innodb_patch_info.h innodb_patch_info.h-20081206234022-hep6ryfeacyr0572-1
storage/xtradb/handler/mysql_addons.cc mysql_addons.cc-20081201061010-zymrrwrczns2vrex-75
storage/xtradb/handler/win_delay_loader.cc win_delay_loader.cc-20081203050234-edoolglm28lyejuc-4
storage/xtradb/ibuf/ ibuf-20081201061010-zymrrwrczns2vrex-20
storage/xtradb/ibuf/ibuf0ibuf.c ibuf0ibuf.c-20081201061010-zymrrwrczns2vrex-76
storage/xtradb/include/ include-20081201061010-zymrrwrczns2vrex-21
storage/xtradb/include/btr0btr.h btr0btr.h-20081201061010-zymrrwrczns2vrex-77
storage/xtradb/include/btr0btr.ic btr0btr.ic-20081201061010-zymrrwrczns2vrex-78
storage/xtradb/include/btr0cur.h btr0cur.h-20081201061010-zymrrwrczns2vrex-79
storage/xtradb/include/btr0cur.ic btr0cur.ic-20081201061010-zymrrwrczns2vrex-80
storage/xtradb/include/btr0pcur.h btr0pcur.h-20081201061010-zymrrwrczns2vrex-81
storage/xtradb/include/btr0pcur.ic btr0pcur.ic-20081201061010-zymrrwrczns2vrex-82
storage/xtradb/include/btr0sea.h btr0sea.h-20081201061010-zymrrwrczns2vrex-83
storage/xtradb/include/btr0sea.ic btr0sea.ic-20081201061010-zymrrwrczns2vrex-84
storage/xtradb/include/btr0types.h btr0types.h-20081201061010-zymrrwrczns2vrex-85
storage/xtradb/include/buf0buddy.h buf0buddy.h-20081201061010-zymrrwrczns2vrex-86
storage/xtradb/include/buf0buddy.ic buf0buddy.ic-20081201061010-zymrrwrczns2vrex-87
storage/xtradb/include/buf0buf.h buf0buf.h-20081201061010-zymrrwrczns2vrex-88
storage/xtradb/include/buf0buf.ic buf0buf.ic-20081201061010-zymrrwrczns2vrex-89
storage/xtradb/include/buf0flu.h buf0flu.h-20081201061010-zymrrwrczns2vrex-90
storage/xtradb/include/buf0flu.ic buf0flu.ic-20081201061010-zymrrwrczns2vrex-91
storage/xtradb/include/buf0lru.h buf0lru.h-20081201061010-zymrrwrczns2vrex-92
storage/xtradb/include/buf0lru.ic buf0lru.ic-20081201061010-zymrrwrczns2vrex-93
storage/xtradb/include/buf0rea.h buf0rea.h-20081201061010-zymrrwrczns2vrex-94
storage/xtradb/include/buf0types.h buf0types.h-20081201061010-zymrrwrczns2vrex-95
storage/xtradb/include/data0data.h data0data.h-20081201061010-zymrrwrczns2vrex-96
storage/xtradb/include/data0data.ic data0data.ic-20081201061010-zymrrwrczns2vrex-97
storage/xtradb/include/data0type.h data0type.h-20081201061010-zymrrwrczns2vrex-98
storage/xtradb/include/data0type.ic data0type.ic-20081201061010-zymrrwrczns2vrex-99
storage/xtradb/include/data0types.h data0types.h-20081201061010-zymrrwrczns2vrex-100
storage/xtradb/include/db0err.h db0err.h-20081201061010-zymrrwrczns2vrex-101
storage/xtradb/include/dict0boot.h dict0boot.h-20081201061010-zymrrwrczns2vrex-102
storage/xtradb/include/dict0boot.ic dict0boot.ic-20081201061010-zymrrwrczns2vrex-103
storage/xtradb/include/dict0crea.h dict0crea.h-20081201061010-zymrrwrczns2vrex-104
storage/xtradb/include/dict0crea.ic dict0crea.ic-20081201061010-zymrrwrczns2vrex-105
storage/xtradb/include/dict0dict.h dict0dict.h-20081201061010-zymrrwrczns2vrex-106
storage/xtradb/include/dict0dict.ic dict0dict.ic-20081201061010-zymrrwrczns2vrex-107
storage/xtradb/include/dict0load.h dict0load.h-20081201061010-zymrrwrczns2vrex-108
storage/xtradb/include/dict0load.ic dict0load.ic-20081201061010-zymrrwrczns2vrex-109
storage/xtradb/include/dict0mem.h dict0mem.h-20081201061010-zymrrwrczns2vrex-110
storage/xtradb/include/dict0mem.ic dict0mem.ic-20081201061010-zymrrwrczns2vrex-111
storage/xtradb/include/dict0types.h dict0types.h-20081201061010-zymrrwrczns2vrex-112
storage/xtradb/include/dyn0dyn.h dyn0dyn.h-20081201061010-zymrrwrczns2vrex-113
storage/xtradb/include/dyn0dyn.ic dyn0dyn.ic-20081201061010-zymrrwrczns2vrex-114
storage/xtradb/include/eval0eval.h eval0eval.h-20081201061010-zymrrwrczns2vrex-115
storage/xtradb/include/eval0eval.ic eval0eval.ic-20081201061010-zymrrwrczns2vrex-116
storage/xtradb/include/eval0proc.h eval0proc.h-20081201061010-zymrrwrczns2vrex-117
storage/xtradb/include/eval0proc.ic eval0proc.ic-20081201061010-zymrrwrczns2vrex-118
storage/xtradb/include/fil0fil.h fil0fil.h-20081201061010-zymrrwrczns2vrex-119
storage/xtradb/include/fsp0fsp.h fsp0fsp.h-20081201061010-zymrrwrczns2vrex-120
storage/xtradb/include/fsp0fsp.ic fsp0fsp.ic-20081201061010-zymrrwrczns2vrex-121
storage/xtradb/include/fut0fut.h fut0fut.h-20081201061010-zymrrwrczns2vrex-122
storage/xtradb/include/fut0fut.ic fut0fut.ic-20081201061010-zymrrwrczns2vrex-123
storage/xtradb/include/fut0lst.h fut0lst.h-20081201061010-zymrrwrczns2vrex-124
storage/xtradb/include/fut0lst.ic fut0lst.ic-20081201061010-zymrrwrczns2vrex-125
storage/xtradb/include/ha0ha.h ha0ha.h-20081201061010-zymrrwrczns2vrex-126
storage/xtradb/include/ha0ha.ic ha0ha.ic-20081201061010-zymrrwrczns2vrex-127
storage/xtradb/include/ha0storage.h ha0storage.h-20081201061010-zymrrwrczns2vrex-128
storage/xtradb/include/ha0storage.ic ha0storage.ic-20081201061010-zymrrwrczns2vrex-129
storage/xtradb/include/ha_prototypes.h ha_prototypes.h-20081201061010-zymrrwrczns2vrex-130
storage/xtradb/include/handler0alter.h handler0alter.h-20081201061010-zymrrwrczns2vrex-131
storage/xtradb/include/hash0hash.h hash0hash.h-20081201061010-zymrrwrczns2vrex-132
storage/xtradb/include/hash0hash.ic hash0hash.ic-20081201061010-zymrrwrczns2vrex-133
storage/xtradb/include/ibuf0ibuf.h ibuf0ibuf.h-20081201061010-zymrrwrczns2vrex-134
storage/xtradb/include/ibuf0ibuf.ic ibuf0ibuf.ic-20081201061010-zymrrwrczns2vrex-135
storage/xtradb/include/ibuf0types.h ibuf0types.h-20081201061010-zymrrwrczns2vrex-136
storage/xtradb/include/lock0iter.h lock0iter.h-20081201061010-zymrrwrczns2vrex-137
storage/xtradb/include/lock0lock.h lock0lock.h-20081201061010-zymrrwrczns2vrex-138
storage/xtradb/include/lock0lock.ic lock0lock.ic-20081201061010-zymrrwrczns2vrex-139
storage/xtradb/include/lock0priv.h lock0priv.h-20081201061010-zymrrwrczns2vrex-140
storage/xtradb/include/lock0priv.ic lock0priv.ic-20081201061010-zymrrwrczns2vrex-141
storage/xtradb/include/lock0types.h lock0types.h-20081201061010-zymrrwrczns2vrex-142
storage/xtradb/include/log0log.h log0log.h-20081201061010-zymrrwrczns2vrex-143
storage/xtradb/include/log0log.ic log0log.ic-20081201061010-zymrrwrczns2vrex-144
storage/xtradb/include/log0recv.h log0recv.h-20081201061010-zymrrwrczns2vrex-145
storage/xtradb/include/log0recv.ic log0recv.ic-20081201061010-zymrrwrczns2vrex-146
storage/xtradb/include/mach0data.h mach0data.h-20081201061010-zymrrwrczns2vrex-147
storage/xtradb/include/mach0data.ic mach0data.ic-20081201061010-zymrrwrczns2vrex-148
storage/xtradb/include/mem0dbg.h mem0dbg.h-20081201061010-zymrrwrczns2vrex-149
storage/xtradb/include/mem0dbg.ic mem0dbg.ic-20081201061010-zymrrwrczns2vrex-150
storage/xtradb/include/mem0mem.h mem0mem.h-20081201061010-zymrrwrczns2vrex-151
storage/xtradb/include/mem0mem.ic mem0mem.ic-20081201061010-zymrrwrczns2vrex-152
storage/xtradb/include/mem0pool.h mem0pool.h-20081201061010-zymrrwrczns2vrex-153
storage/xtradb/include/mem0pool.ic mem0pool.ic-20081201061010-zymrrwrczns2vrex-154
storage/xtradb/include/mtr0log.h mtr0log.h-20081201061010-zymrrwrczns2vrex-155
storage/xtradb/include/mtr0log.ic mtr0log.ic-20081201061010-zymrrwrczns2vrex-156
storage/xtradb/include/mtr0mtr.h mtr0mtr.h-20081201061010-zymrrwrczns2vrex-157
storage/xtradb/include/mtr0mtr.ic mtr0mtr.ic-20081201061010-zymrrwrczns2vrex-158
storage/xtradb/include/mtr0types.h mtr0types.h-20081201061010-zymrrwrczns2vrex-159
storage/xtradb/include/mysql_addons.h mysql_addons.h-20081201061010-zymrrwrczns2vrex-160
storage/xtradb/include/os0file.h os0file.h-20081201061010-zymrrwrczns2vrex-161
storage/xtradb/include/os0proc.h os0proc.h-20081201061010-zymrrwrczns2vrex-162
storage/xtradb/include/os0proc.ic os0proc.ic-20081201061010-zymrrwrczns2vrex-163
storage/xtradb/include/os0sync.h os0sync.h-20081201061010-zymrrwrczns2vrex-164
storage/xtradb/include/os0sync.ic os0sync.ic-20081201061010-zymrrwrczns2vrex-165
storage/xtradb/include/os0thread.h os0thread.h-20081201061010-zymrrwrczns2vrex-166
storage/xtradb/include/os0thread.ic os0thread.ic-20081201061010-zymrrwrczns2vrex-167
storage/xtradb/include/page0cur.h page0cur.h-20081201061010-zymrrwrczns2vrex-168
storage/xtradb/include/page0cur.ic page0cur.ic-20081201061010-zymrrwrczns2vrex-169
storage/xtradb/include/page0page.h page0page.h-20081201061010-zymrrwrczns2vrex-170
storage/xtradb/include/page0page.ic page0page.ic-20081201061010-zymrrwrczns2vrex-171
storage/xtradb/include/page0types.h page0types.h-20081201061010-zymrrwrczns2vrex-172
storage/xtradb/include/page0zip.h page0zip.h-20081201061010-zymrrwrczns2vrex-173
storage/xtradb/include/page0zip.ic page0zip.ic-20081201061010-zymrrwrczns2vrex-174
storage/xtradb/include/pars0grm.h pars0grm.h-20081201061010-zymrrwrczns2vrex-175
storage/xtradb/include/pars0opt.h pars0opt.h-20081201061010-zymrrwrczns2vrex-176
storage/xtradb/include/pars0opt.ic pars0opt.ic-20081201061010-zymrrwrczns2vrex-177
storage/xtradb/include/pars0pars.h pars0pars.h-20081201061010-zymrrwrczns2vrex-178
storage/xtradb/include/pars0pars.ic pars0pars.ic-20081201061010-zymrrwrczns2vrex-179
storage/xtradb/include/pars0sym.h pars0sym.h-20081201061010-zymrrwrczns2vrex-180
storage/xtradb/include/pars0sym.ic pars0sym.ic-20081201061010-zymrrwrczns2vrex-181
storage/xtradb/include/pars0types.h pars0types.h-20081201061010-zymrrwrczns2vrex-182
storage/xtradb/include/que0que.h que0que.h-20081201061010-zymrrwrczns2vrex-183
storage/xtradb/include/que0que.ic que0que.ic-20081201061010-zymrrwrczns2vrex-184
storage/xtradb/include/que0types.h que0types.h-20081201061010-zymrrwrczns2vrex-185
storage/xtradb/include/read0read.h read0read.h-20081201061010-zymrrwrczns2vrex-186
storage/xtradb/include/read0read.ic read0read.ic-20081201061010-zymrrwrczns2vrex-187
storage/xtradb/include/read0types.h read0types.h-20081201061010-zymrrwrczns2vrex-188
storage/xtradb/include/rem0cmp.h rem0cmp.h-20081201061010-zymrrwrczns2vrex-189
storage/xtradb/include/rem0cmp.ic rem0cmp.ic-20081201061010-zymrrwrczns2vrex-190
storage/xtradb/include/rem0rec.h rem0rec.h-20081201061010-zymrrwrczns2vrex-191
storage/xtradb/include/rem0rec.ic rem0rec.ic-20081201061010-zymrrwrczns2vrex-192
storage/xtradb/include/rem0types.h rem0types.h-20081201061010-zymrrwrczns2vrex-193
storage/xtradb/include/row0ext.h row0ext.h-20081201061010-zymrrwrczns2vrex-194
storage/xtradb/include/row0ext.ic row0ext.ic-20081201061010-zymrrwrczns2vrex-195
storage/xtradb/include/row0ins.h row0ins.h-20081201061010-zymrrwrczns2vrex-196
storage/xtradb/include/row0ins.ic row0ins.ic-20081201061010-zymrrwrczns2vrex-197
storage/xtradb/include/row0merge.h row0merge.h-20081201061010-zymrrwrczns2vrex-198
storage/xtradb/include/row0mysql.h row0mysql.h-20081201061010-zymrrwrczns2vrex-199
storage/xtradb/include/row0mysql.ic row0mysql.ic-20081201061010-zymrrwrczns2vrex-200
storage/xtradb/include/row0purge.h row0purge.h-20081201061010-zymrrwrczns2vrex-201
storage/xtradb/include/row0purge.ic row0purge.ic-20081201061010-zymrrwrczns2vrex-202
storage/xtradb/include/row0row.h row0row.h-20081201061010-zymrrwrczns2vrex-203
storage/xtradb/include/row0row.ic row0row.ic-20081201061010-zymrrwrczns2vrex-204
storage/xtradb/include/row0sel.h row0sel.h-20081201061010-zymrrwrczns2vrex-205
storage/xtradb/include/row0sel.ic row0sel.ic-20081201061010-zymrrwrczns2vrex-206
storage/xtradb/include/row0types.h row0types.h-20081201061010-zymrrwrczns2vrex-207
storage/xtradb/include/row0uins.h row0uins.h-20081201061010-zymrrwrczns2vrex-208
storage/xtradb/include/row0uins.ic row0uins.ic-20081201061010-zymrrwrczns2vrex-209
storage/xtradb/include/row0umod.h row0umod.h-20081201061010-zymrrwrczns2vrex-210
storage/xtradb/include/row0umod.ic row0umod.ic-20081201061010-zymrrwrczns2vrex-211
storage/xtradb/include/row0undo.h row0undo.h-20081201061010-zymrrwrczns2vrex-212
storage/xtradb/include/row0undo.ic row0undo.ic-20081201061010-zymrrwrczns2vrex-213
storage/xtradb/include/row0upd.h row0upd.h-20081201061010-zymrrwrczns2vrex-214
storage/xtradb/include/row0upd.ic row0upd.ic-20081201061010-zymrrwrczns2vrex-215
storage/xtradb/include/row0vers.h row0vers.h-20081201061010-zymrrwrczns2vrex-216
storage/xtradb/include/row0vers.ic row0vers.ic-20081201061010-zymrrwrczns2vrex-217
storage/xtradb/include/srv0que.h srv0que.h-20081201061010-zymrrwrczns2vrex-218
storage/xtradb/include/srv0srv.h srv0srv.h-20081201061010-zymrrwrczns2vrex-219
storage/xtradb/include/srv0srv.ic srv0srv.ic-20081201061010-zymrrwrczns2vrex-220
storage/xtradb/include/srv0start.h srv0start.h-20081201061010-zymrrwrczns2vrex-221
storage/xtradb/include/sync0arr.h sync0arr.h-20081201061010-zymrrwrczns2vrex-222
storage/xtradb/include/sync0arr.ic sync0arr.ic-20081201061010-zymrrwrczns2vrex-223
storage/xtradb/include/sync0rw.h sync0rw.h-20081201061010-zymrrwrczns2vrex-224
storage/xtradb/include/sync0rw.ic sync0rw.ic-20081201061010-zymrrwrczns2vrex-225
storage/xtradb/include/sync0sync.h sync0sync.h-20081201061010-zymrrwrczns2vrex-226
storage/xtradb/include/sync0sync.ic sync0sync.ic-20081201061010-zymrrwrczns2vrex-227
storage/xtradb/include/sync0types.h sync0types.h-20081201061010-zymrrwrczns2vrex-228
storage/xtradb/include/thr0loc.h thr0loc.h-20081201061010-zymrrwrczns2vrex-229
storage/xtradb/include/thr0loc.ic thr0loc.ic-20081201061010-zymrrwrczns2vrex-230
storage/xtradb/include/trx0i_s.h trx0i_s.h-20081201061010-zymrrwrczns2vrex-231
storage/xtradb/include/trx0purge.h trx0purge.h-20081201061010-zymrrwrczns2vrex-232
storage/xtradb/include/trx0purge.ic trx0purge.ic-20081201061010-zymrrwrczns2vrex-233
storage/xtradb/include/trx0rec.h trx0rec.h-20081201061010-zymrrwrczns2vrex-234
storage/xtradb/include/trx0rec.ic trx0rec.ic-20081201061010-zymrrwrczns2vrex-235
storage/xtradb/include/trx0roll.h trx0roll.h-20081201061010-zymrrwrczns2vrex-236
storage/xtradb/include/trx0roll.ic trx0roll.ic-20081201061010-zymrrwrczns2vrex-237
storage/xtradb/include/trx0rseg.h trx0rseg.h-20081201061010-zymrrwrczns2vrex-238
storage/xtradb/include/trx0rseg.ic trx0rseg.ic-20081201061010-zymrrwrczns2vrex-239
storage/xtradb/include/trx0sys.h trx0sys.h-20081201061010-zymrrwrczns2vrex-240
storage/xtradb/include/trx0sys.ic trx0sys.ic-20081201061010-zymrrwrczns2vrex-241
storage/xtradb/include/trx0trx.h trx0trx.h-20081201061010-zymrrwrczns2vrex-242
storage/xtradb/include/trx0trx.ic trx0trx.ic-20081201061010-zymrrwrczns2vrex-243
storage/xtradb/include/trx0types.h trx0types.h-20081201061010-zymrrwrczns2vrex-244
storage/xtradb/include/trx0undo.h trx0undo.h-20081201061010-zymrrwrczns2vrex-245
storage/xtradb/include/trx0undo.ic trx0undo.ic-20081201061010-zymrrwrczns2vrex-246
storage/xtradb/include/trx0xa.h trx0xa.h-20081201061010-zymrrwrczns2vrex-247
storage/xtradb/include/univ.i univ.i-20081201061010-zymrrwrczns2vrex-248
storage/xtradb/include/usr0sess.h usr0sess.h-20081201061010-zymrrwrczns2vrex-249
storage/xtradb/include/usr0sess.ic usr0sess.ic-20081201061010-zymrrwrczns2vrex-250
storage/xtradb/include/usr0types.h usr0types.h-20081201061010-zymrrwrczns2vrex-251
storage/xtradb/include/ut0auxconf.h ut0auxconf.h-20090326061054-ylrdb8libxw6u7e9-2
storage/xtradb/include/ut0byte.h ut0byte.h-20081201061010-zymrrwrczns2vrex-252
storage/xtradb/include/ut0byte.ic ut0byte.ic-20081201061010-zymrrwrczns2vrex-253
storage/xtradb/include/ut0dbg.h ut0dbg.h-20081201061010-zymrrwrczns2vrex-254
storage/xtradb/include/ut0list.h ut0list.h-20081201061010-zymrrwrczns2vrex-255
storage/xtradb/include/ut0list.ic ut0list.ic-20081201061010-zymrrwrczns2vrex-256
storage/xtradb/include/ut0lst.h ut0lst.h-20081201061010-zymrrwrczns2vrex-257
storage/xtradb/include/ut0mem.h ut0mem.h-20081201061010-zymrrwrczns2vrex-258
storage/xtradb/include/ut0mem.ic ut0mem.ic-20081201061010-zymrrwrczns2vrex-259
storage/xtradb/include/ut0rnd.h ut0rnd.h-20081201061010-zymrrwrczns2vrex-260
storage/xtradb/include/ut0rnd.ic ut0rnd.ic-20081201061010-zymrrwrczns2vrex-261
storage/xtradb/include/ut0sort.h ut0sort.h-20081201061010-zymrrwrczns2vrex-262
storage/xtradb/include/ut0ut.h ut0ut.h-20081201061010-zymrrwrczns2vrex-263
storage/xtradb/include/ut0ut.ic ut0ut.ic-20081201061010-zymrrwrczns2vrex-264
storage/xtradb/include/ut0vec.h ut0vec.h-20081201061010-zymrrwrczns2vrex-265
storage/xtradb/include/ut0vec.ic ut0vec.ic-20081201061010-zymrrwrczns2vrex-266
storage/xtradb/include/ut0wqueue.h ut0wqueue.h-20081201061010-zymrrwrczns2vrex-267
storage/xtradb/lock/ lock-20081201061010-zymrrwrczns2vrex-22
storage/xtradb/lock/lock0iter.c lock0iter.c-20081201061010-zymrrwrczns2vrex-268
storage/xtradb/lock/lock0lock.c lock0lock.c-20081201061010-zymrrwrczns2vrex-269
storage/xtradb/log/ log-20081201061010-zymrrwrczns2vrex-23
storage/xtradb/log/log0log.c log0log.c-20081201061010-zymrrwrczns2vrex-270
storage/xtradb/log/log0recv.c log0recv.c-20081201061010-zymrrwrczns2vrex-271
storage/xtradb/mach/ mach-20081201061010-zymrrwrczns2vrex-24
storage/xtradb/mach/mach0data.c mach0data.c-20081201061010-zymrrwrczns2vrex-272
storage/xtradb/mem/ mem-20081201061010-zymrrwrczns2vrex-25
storage/xtradb/mem/mem0dbg.c mem0dbg.c-20081201061010-zymrrwrczns2vrex-273
storage/xtradb/mem/mem0mem.c mem0mem.c-20081201061010-zymrrwrczns2vrex-274
storage/xtradb/mem/mem0pool.c mem0pool.c-20081201061010-zymrrwrczns2vrex-275
storage/xtradb/mtr/ mtr-20081201061010-zymrrwrczns2vrex-26
storage/xtradb/mtr/mtr0log.c mtr0log.c-20081201061010-zymrrwrczns2vrex-276
storage/xtradb/mtr/mtr0mtr.c mtr0mtr.c-20081201061010-zymrrwrczns2vrex-277
storage/xtradb/os/ os-20081201061010-zymrrwrczns2vrex-28
storage/xtradb/os/os0file.c os0file.c-20081201061010-zymrrwrczns2vrex-313
storage/xtradb/os/os0proc.c os0proc.c-20081201061010-zymrrwrczns2vrex-314
storage/xtradb/os/os0sync.c os0sync.c-20081201061010-zymrrwrczns2vrex-315
storage/xtradb/os/os0thread.c os0thread.c-20081201061010-zymrrwrczns2vrex-316
storage/xtradb/page/ page-20081201061010-zymrrwrczns2vrex-29
storage/xtradb/page/page0cur.c page0cur.c-20081201061010-zymrrwrczns2vrex-317
storage/xtradb/page/page0page.c page0page.c-20081201061010-zymrrwrczns2vrex-318
storage/xtradb/page/page0zip.c page0zip.c-20081201061010-zymrrwrczns2vrex-319
storage/xtradb/pars/ pars-20081201061010-zymrrwrczns2vrex-30
storage/xtradb/pars/lexyy.c lexyy.c-20081201061010-zymrrwrczns2vrex-320
storage/xtradb/pars/make_bison.sh make_bison.sh-20081201061010-zymrrwrczns2vrex-321
storage/xtradb/pars/make_flex.sh make_flex.sh-20081201061010-zymrrwrczns2vrex-322
storage/xtradb/pars/pars0grm.c pars0grm.c-20081201061010-zymrrwrczns2vrex-323
storage/xtradb/pars/pars0grm.y pars0grm.y-20081201061010-zymrrwrczns2vrex-324
storage/xtradb/pars/pars0lex.l pars0lex.l-20081201061010-zymrrwrczns2vrex-325
storage/xtradb/pars/pars0opt.c pars0opt.c-20081201061010-zymrrwrczns2vrex-326
storage/xtradb/pars/pars0pars.c pars0pars.c-20081201061010-zymrrwrczns2vrex-327
storage/xtradb/pars/pars0sym.c pars0sym.c-20081201061010-zymrrwrczns2vrex-328
storage/xtradb/plug.in plug.in-20081201061010-zymrrwrczns2vrex-31
storage/xtradb/que/ que-20081201061010-zymrrwrczns2vrex-32
storage/xtradb/que/que0que.c que0que.c-20081201061010-zymrrwrczns2vrex-329
storage/xtradb/read/ read-20081201061010-zymrrwrczns2vrex-33
storage/xtradb/read/read0read.c read0read.c-20081201061010-zymrrwrczns2vrex-330
storage/xtradb/rem/ rem-20081201061010-zymrrwrczns2vrex-34
storage/xtradb/rem/rem0cmp.c rem0cmp.c-20081201061010-zymrrwrczns2vrex-331
storage/xtradb/rem/rem0rec.c rem0rec.c-20081201061010-zymrrwrczns2vrex-332
storage/xtradb/row/ row-20081201061010-zymrrwrczns2vrex-35
storage/xtradb/row/row0ext.c row0ext.c-20081201061010-zymrrwrczns2vrex-333
storage/xtradb/row/row0ins.c row0ins.c-20081201061010-zymrrwrczns2vrex-334
storage/xtradb/row/row0merge.c row0merge.c-20081201061010-zymrrwrczns2vrex-335
storage/xtradb/row/row0mysql.c row0mysql.c-20081201061010-zymrrwrczns2vrex-336
storage/xtradb/row/row0purge.c row0purge.c-20081201061010-zymrrwrczns2vrex-337
storage/xtradb/row/row0row.c row0row.c-20081201061010-zymrrwrczns2vrex-338
storage/xtradb/row/row0sel.c row0sel.c-20081201061010-zymrrwrczns2vrex-339
storage/xtradb/row/row0uins.c row0uins.c-20081201061010-zymrrwrczns2vrex-340
storage/xtradb/row/row0umod.c row0umod.c-20081201061010-zymrrwrczns2vrex-341
storage/xtradb/row/row0undo.c row0undo.c-20081201061010-zymrrwrczns2vrex-342
storage/xtradb/row/row0upd.c row0upd.c-20081201061010-zymrrwrczns2vrex-343
storage/xtradb/row/row0vers.c row0vers.c-20081201061010-zymrrwrczns2vrex-344
storage/xtradb/scripts/ scripts-20081201061010-zymrrwrczns2vrex-36
storage/xtradb/scripts/install_innodb_plugins.sql install_innodb_plugi-20081201061010-zymrrwrczns2vrex-345
storage/xtradb/scripts/install_innodb_plugins_win.sql install_innodb_plugi-20081203050234-edoolglm28lyejuc-14
storage/xtradb/srv/ srv-20081201061010-zymrrwrczns2vrex-38
storage/xtradb/srv/srv0que.c srv0que.c-20081201061010-zymrrwrczns2vrex-346
storage/xtradb/srv/srv0srv.c srv0srv.c-20081201061010-zymrrwrczns2vrex-347
storage/xtradb/srv/srv0start.c srv0start.c-20081201061010-zymrrwrczns2vrex-348
storage/xtradb/sync/ sync-20081201061010-zymrrwrczns2vrex-39
storage/xtradb/sync/sync0arr.c sync0arr.c-20081201061010-zymrrwrczns2vrex-349
storage/xtradb/sync/sync0rw.c sync0rw.c-20081201061010-zymrrwrczns2vrex-350
storage/xtradb/sync/sync0sync.c sync0sync.c-20081201061010-zymrrwrczns2vrex-351
storage/xtradb/thr/ thr-20081201061010-zymrrwrczns2vrex-40
storage/xtradb/thr/thr0loc.c thr0loc.c-20081201061010-zymrrwrczns2vrex-352
storage/xtradb/trx/ trx-20081201061010-zymrrwrczns2vrex-41
storage/xtradb/trx/trx0i_s.c trx0i_s.c-20081201061010-zymrrwrczns2vrex-353
storage/xtradb/trx/trx0purge.c trx0purge.c-20081201061010-zymrrwrczns2vrex-354
storage/xtradb/trx/trx0rec.c trx0rec.c-20081201061010-zymrrwrczns2vrex-355
storage/xtradb/trx/trx0roll.c trx0roll.c-20081201061010-zymrrwrczns2vrex-356
storage/xtradb/trx/trx0rseg.c trx0rseg.c-20081201061010-zymrrwrczns2vrex-357
storage/xtradb/trx/trx0sys.c trx0sys.c-20081201061010-zymrrwrczns2vrex-358
storage/xtradb/trx/trx0trx.c trx0trx.c-20081201061010-zymrrwrczns2vrex-359
storage/xtradb/trx/trx0undo.c trx0undo.c-20081201061010-zymrrwrczns2vrex-360
storage/xtradb/usr/ usr-20081201061010-zymrrwrczns2vrex-42
storage/xtradb/usr/usr0sess.c usr0sess.c-20081201061010-zymrrwrczns2vrex-361
storage/xtradb/ut/ ut-20081201061010-zymrrwrczns2vrex-43
storage/xtradb/ut/ut0auxconf.c ut0auxconf.c-20090326061054-ylrdb8libxw6u7e9-10
storage/xtradb/ut/ut0byte.c ut0byte.c-20081201061010-zymrrwrczns2vrex-362
storage/xtradb/ut/ut0dbg.c ut0dbg.c-20081201061010-zymrrwrczns2vrex-363
storage/xtradb/ut/ut0list.c ut0list.c-20081201061010-zymrrwrczns2vrex-364
storage/xtradb/ut/ut0mem.c ut0mem.c-20081201061010-zymrrwrczns2vrex-365
storage/xtradb/ut/ut0rnd.c ut0rnd.c-20081201061010-zymrrwrczns2vrex-366
storage/xtradb/ut/ut0ut.c ut0ut.c-20081201061010-zymrrwrczns2vrex-367
storage/xtradb/ut/ut0vec.c ut0vec.c-20081201061010-zymrrwrczns2vrex-368
storage/xtradb/ut/ut0wqueue.c ut0wqueue.c-20081201061010-zymrrwrczns2vrex-369
storage/xtradb/win-plugin/ winplugin-20081203050234-edoolglm28lyejuc-2
storage/xtradb/win-plugin/README readme-20081203050234-edoolglm28lyejuc-15
storage/xtradb/win-plugin/win-plugin.diff winplugin.diff-20081203050234-edoolglm28lyejuc-16
strings/strmov_overlapp.c strmov_overlapp.c-20090608135132-403c5p4dlnexqwxi-1
support-files/ccfilter ccfilter-20090903130840-kgbb9xgba492f3z4-1
renamed:
netware/BUILD/nwbootstrap => netware/BUILD/nwbuild sp1f-nwbootstrap-20030304040435-rz4o5ic6onmenwlgmz2ggjccc2plsxlk
storage/innobase/plug.in => storage/innobase/plug.in.disabled sp1f-plug.in-20060819041916-e2qz7hvnurrcqbv6qvymjerpn4xngex6
modified:
.bzrignore sp1f-ignore-20001018235455-q4gxfbritt5f42nwix354ufpsvrf5ebj
BUILD/Makefile.am sp1f-makefile.am-20020102192940-dza66ux2yxyklupzjz4q3km3hvye5rnj
BUILD/compile-solaris-amd64 sp1f-compilesolarisamd64-20070412112033-k3p7pepnawnmg22754nilwhffftopjcl
BUILD/compile-solaris-amd64-debug sp1f-compilesolarisamd64d-20071110100304-4sqi33indc7tz4ggxpt756izzw236er4
CMakeLists.txt sp1f-cmakelists.txt-20060831175236-433hkm7nrqfjbwios4ancgytabw354nr
Docs/INSTALL-BINARY sp1f-installbinary-20071102002932-lm64vo6qp4t3tz7t2edp2mrg5udn2xsy
INSTALL-SOURCE sp1f-installsource-20071102002932-2zshtrwogoj3cs24gl2smml7cigenare
INSTALL-WIN-SOURCE sp1f-installwinsource-20071102113629-gnlyyhvspfpki3lit2lps4hw6blq6u3q
KNOWN_BUGS.txt sp1f-known_bugs.txt-20080112111653-zzflmm3ji2fwldqezas63y53pssozvb7
README sp1f-readme-19700101030959-ipf4glwvob7zbr3norl5feyy3jwy3sod
client/my_readline.h sp1f-my_readline.h-19700101030959-eub23pcrbw42bchwmaw6hzikcn7qjrss
client/mysql.cc sp1f-mysql.cc-19700101030959-5sipizk7ehvbsi3tywrkdords5qy5zdl
client/mysqladmin.cc sp1f-mysqladmin.c-19700101030959-ud6encjcx2oypzvp7ptmojbi3xdos2fs
client/mysqlbinlog.cc sp1f-mysqlbinlog.cc-19700101030959-b3vgyo47ljent5mhbyj6ik33bi4bukad
client/mysqlcheck.c sp1f-mysqlcheck.c-20010419220847-mlhe2ixwl5ajjyneyciytsdsis3iujhl
client/mysqldump.c sp1f-mysqldump.c-19700101030959-thxq2iabzu3yo5snymsubfeclf7v5rac
client/mysqlslap.c sp1f-mysqlslap.c-20051130000206-7t375hf5mtlqof5xd4nj76yckxvxykhv
client/mysqltest.cc sp1f-mysqltest.c-20001010065317-ix4zw26srlev7yugcz455ux22zwyynyf
client/readline.cc sp1f-readline.cc-19700101030959-wjugtcop5u6u5ty2lhuhmu5vxsav3l5r
client/sql_string.cc sp1f-sql_string.cc-19700101030959-72h4johdz5mgcc6z2xceguohasr3pkrx
cmd-line-utils/libedit/Makefile.am sp1f-makefile.am-20030118162814-qgzt264ki5avaszfmezvvzuwbb6mymto
cmd-line-utils/libedit/chared.c sp1f-chared.c-20030118162815-i5k4crwfjqbyoib7r2yii3gcjjsurw4c
cmd-line-utils/libedit/chared.h sp1f-chared.h-20030118162815-4sgyxqrcu4ev76t2wv7lghiixkhxzziz
cmd-line-utils/libedit/common.c sp1f-common.c-20030118162815-2ypym7qxt6ekwtoa64ltu2c2ub2m5oxh
cmd-line-utils/libedit/config.h sp1f-config.h-20040824203656-isijtnsifrhhmcr7dm3qjgc2xzhsyazn
cmd-line-utils/libedit/el.c sp1f-el.c-20030118162815-k5fcctizdi3cr7erlomkt32epjmstpez
cmd-line-utils/libedit/el.h sp1f-el.h-20030118162815-n3gzh5icmnsyh6zidsaiwe4feyjvnyst
cmd-line-utils/libedit/el_term.h sp1f-el_term.h-20050421100639-5ownqfnq6lpvqly2scar4jjlazvzt72a
cmd-line-utils/libedit/emacs.c sp1f-emacs.c-20030118162815-ruvym4xasbn3tiiow7geyqwhe26qctjm
cmd-line-utils/libedit/hist.c sp1f-hist.c-20030118162816-rgnbnjgxjwthkckmpea76eho7q7bvzzd
cmd-line-utils/libedit/histedit.h sp1f-histedit.h-20030118162816-cphc4pboxgrd7erljveanjvtsa4msc47
cmd-line-utils/libedit/history.c sp1f-history.c-20030118162816-r6ljnwt6p2wa4elrbn4makhp6cr3v7fa
cmd-line-utils/libedit/key.c sp1f-key.c-20030118162816-vnrv3leif5xdrthnz32ns2cqk5jzfw6p
cmd-line-utils/libedit/key.h sp1f-key.h-20030118162816-4jwwlmghklrucpmaa64z4cqm3wgd6q4h
cmd-line-utils/libedit/makelist.sh sp1f-makelist-20030118162816-eao42io4hv3yaym3wkxebicqlbdxql32
cmd-line-utils/libedit/map.c sp1f-map.c-20030118162816-ajxn7bjlnqlf7yl57semoxnuyijrtenc
cmd-line-utils/libedit/np/fgetln.c sp1f-fgetln.c-20040824165209-baraluwnpcg5zwu47kcydsrujv6xeezs
cmd-line-utils/libedit/np/strlcat.c sp1f-strlcat.c-20040824165209-5xin5nhe5ghebwhdoyxjey6z4hx3wjwi
cmd-line-utils/libedit/np/strlcpy.c sp1f-strlcpy.c-20040824165209-avewjmfjdonlhdpt7yx4vfweloskmtjt
cmd-line-utils/libedit/np/unvis.c sp1f-unvis.c-20040824165209-gouef2gpxcah7z56mebj7hp3kxbaolxz
cmd-line-utils/libedit/np/vis.c sp1f-vis.c-20040824165209-siah3r5p6x635mvs4zioe4wnzb7v5u2a
cmd-line-utils/libedit/np/vis.h sp1f-vis.h-20040824165209-mu3tvgreejmzdczjqygsljcpgszgqsri
cmd-line-utils/libedit/parse.c sp1f-parse.c-20030118162816-5pg4d23gnhe5lc3ocpucbiflf52qkl53
cmd-line-utils/libedit/parse.h sp1f-parse.h-20030118162816-kyvg2o7duacs7n3cecouhz3ivypktdfq
cmd-line-utils/libedit/prompt.c sp1f-prompt.c-20030118162816-iecgqv6w6kf23ywlu32afnzqdvnpsmh3
cmd-line-utils/libedit/read.c sp1f-read.c-20030118162816-rrz3ohfcuevg4mjb2tvsfivat74357yj
cmd-line-utils/libedit/read.h sp1f-read.h-20040824165210-jzc3vus4sk5ztkmqc4vbir3qycjazoxc
cmd-line-utils/libedit/readline.c sp1f-readline.c-20030118162817-wgha472ylf2zp3wz4dwbmxuxspnha3bs
cmd-line-utils/libedit/readline/readline.h sp1f-readline.h-20050421100639-c4woa6gyaurqg23ic3lyhaiz5fu62lab
cmd-line-utils/libedit/refresh.c sp1f-refresh.c-20030118162817-2sok3p5thyzww4qqleh3zl5oj33qzuof
cmd-line-utils/libedit/search.c sp1f-search.c-20030118162817-ne7pmkplpdowlakdzq56c6f3cvf2bbwb
cmd-line-utils/libedit/sig.c sp1f-sig.c-20030118162817-dzupct54ncaxggq23bjslv2xz666rtze
cmd-line-utils/libedit/sig.h sp1f-sig.h-20030118162817-brefs5dgtuyh3hbl7lxdxkahb2x2gezn
cmd-line-utils/libedit/sys.h sp1f-sys.h-20030118162817-kl7xd5h7bw7ddvglr2rsaihr2vlx476y
cmd-line-utils/libedit/term.c sp1f-term.c-20030118162817-wmxnixjzzft3lqbapbslqjc7ru2spmdc
cmd-line-utils/libedit/tokenizer.c sp1f-tokenizer.c-20030118162817-qve55jb6tooffwziiwvyzibgtgj2orgu
cmd-line-utils/libedit/tty.c sp1f-tty.c-20030118162818-vft4ez6czhowoljvrniaprbr2dazhttx
cmd-line-utils/libedit/tty.h sp1f-tty.h-20030118162818-f4zrpmcyjyh7v7dzlgu5iyhnbvpgmfv5
cmd-line-utils/libedit/vi.c sp1f-vi.c-20030118162818-r7vcbl7swhez7q2r5twwjtuwiue6tkex
config/ac-macros/ha_ndbcluster.m4 sp1f-ha_ndbcluster.m4-20041202010046-krgwwrqt4rqizfla6suqzptcyinu52qy
config/ac-macros/misc.m4 sp1f-misc.m4-20041202010047-eedogcoko3sndn3nhe3krdole675uamr
config/ac-macros/plugins.m4 sp1f-plugins.m4-20060413204924-cltp6uagmyygsgdno6od3mamfizdhk3m
configure.in sp1f-configure.in-19700101030959-mgdpoxtnh2ewmvusvfpkreuhwvffkcjw
extra/comp_err.c sp1f-comp_err.c-19700101030959-xhnod5xbbwq5dckoic5y65at66d3sgik
extra/yassl/include/yassl_int.hpp sp1f-yassl_int.hpp-20050428132307-uqdopnog3njo2nicimdqmt7fco35gagn
extra/yassl/src/buffer.cpp sp1f-buffer.cpp-20050428132309-kbwq62tc7v4c2zpnz3hsua2d2r6no54s
extra/yassl/src/handshake.cpp sp1f-handshake.cpp-20050428132310-fmtqaesmdo3txlm6dnhqmef23jgyrmih
extra/yassl/src/yassl_imp.cpp sp1f-yassl_imp.cpp-20050428132311-kbtb6sfna2iec57rsngc5wa76djjl76p
extra/yassl/src/yassl_int.cpp sp1f-yassl_int.cpp-20050428132311-hjgnphdasudo2ncxocoetyb7twor5fpq
extra/yassl/taocrypt/include/block.hpp sp1f-block.hpp-20050428132313-36s5yrjvbk36ud3nkobt5zsv2ctac72e
extra/yassl/taocrypt/include/modes.hpp sp1f-modes.hpp-20050428132316-td6cnzuargeuvsxs2vqse74d62tzbxtj
extra/yassl/taocrypt/src/algebra.cpp sp1f-algebra.cpp-20050428132318-l4wul3z6jyhw35f2lt3dcjumpfo4a6k5
extra/yassl/taocrypt/src/asn.cpp sp1f-asn.cpp-20050428132318-okq6hllvtur6rcfg4gc5pbxebunf764v
include/atomic/nolock.h sp1f-nolock.h-20060531164337-mzhyjxmq2ta5h7utpkjebowmsqtwuy2j
include/config-win.h sp1f-configwin.h-19700101030959-5jisatcch5e354bfnojnqaygf3ow2zyt
include/m_ctype.h sp1f-m_ctype.h-19700101030959-dsoy764fhlrdbb6tsjldsk3e5fohfai6
include/m_string.h sp1f-m_string.h-19700101030959-rraattbvw5ffkokv4sixxf3s7brqqaga
include/my_getopt.h sp1f-my_getopt.h-20020125212018-wxrgonczg7uaw6w5ohby34eicbbwehct
include/my_global.h sp1f-my_global.h-20010915021246-4vawdgfw4vg3tuxq6mejt7lrchcnceha
include/my_handler.h sp1f-my_handler.h-20020425083649-mlhhxmyvbhv2wqh7wp5ifxsxxq3ofgso
include/my_md5.h sp1f-md5.h-19700101030959-leegtzth2c57hzsjxnlgjkxdk7aycqz7
include/my_pthread.h sp1f-my_pthread.h-19700101030959-z4yp3kljwx5fgmhlyvumtwxuw73xgrjn
include/my_sys.h sp1f-my_sys.h-19700101030959-lyllvna5vzqfcjnmlcrutgqocylhtb54
include/thr_lock.h sp1f-thr_lock.h-19700101030959-kno333bw76cie6vypbxrrtnk53bficcp
libmysql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-3bbprkzqdl3gopcnlt3evmaikau67bcq
libmysql/Makefile.shared sp1f-makefile.shared-20000818182429-m3kdhxi23vorlqjct2y2hl3yw357jtxt
libmysql/libmysql.c sp1f-libmysql.c-19700101030959-ba4gwsjdmik5puh2qyrfpvoflwer257l
libmysqld/CMakeLists.txt sp1f-cmakelists.txt-20060403082523-x3vxka3k56u2wpzwcrlpykznlz2akpxd
libmysqld/Makefile.am sp1f-makefile.am-20010411110351-26htpk3ynkyh7pkfvnshztqrxx3few4g
libmysqld/examples/CMakeLists.txt sp1f-cmakelists.txt-20060403082846-qs2z7khuwbdcejrq62ruchgkp4vewfxd
libmysqld/lib_sql.cc sp1f-lib_sql.cc-20010411110351-gt5febleap73tqvapkesopvqtuht5sf5
mysql-test/Makefile.am sp1f-makefile.am-20001206082022-36vvdlhec52v4kcxab5ees7yomxvj4dl
mysql-test/extra/binlog_tests/binlog.test sp1f-binlog.test-20050223135508-76cdewwz46hwby5kk5g5wmkoxb74yv4y
mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test sp1f-rpl_extramaster_col.-20070729221032-2bmf7oriwr6ocmrpxqmlewlbtvyhg3jq
mysql-test/extra/rpl_tests/rpl_truncate.test sp1f-rpl_truncate.test-20060601095311-zldoy3j6b6fwpjwkiqe4alyg6srbmmpz
mysql-test/extra/rpl_tests/rpl_truncate_helper.test sp1f-rpl_truncate_helper.-20060601095311-cm77uxwptlrrjf7hangjc75r7pls5phz
mysql-test/include/check-warnings.test sp1f-checkwarnings.test-20080408145123-h7zoaw4uh3notptmpiebbf3ot3ltza4q
mysql-test/include/concurrent.inc sp1f-innodb_concurrent.te-20051222053459-lwg5sp2ww5pt2wipchfkjjvnmslyp3g3
mysql-test/include/handler.inc sp1f-handler.test-20010406221832-gfvg6n4rp4py6lunazzembziuu5qxvi5
mysql-test/include/mtr_check.sql sp1f-mtr_check.sql-20080409102737-d44u354i4sbvhamdh4fgbkf2sqvsvgty
mysql-test/include/ndb_backup.inc sp1f-ndb_backup.inc-20070307061928-wj47ywjajhggrexjr6nkvzfd2jls4igc
mysql-test/include/ps_modify.inc sp1f-ps_modify.inc-20040701142627-645gu4gku7jokwh723fb5genk63274ih
mysql-test/include/setup_fake_relay_log.inc setup_fake_relay_log-20081113174908-ha6gaq0z4mt31re9-2
mysql-test/include/varchar.inc sp1f-varchar.inc-20041206000029-5nxzm3cgcebokzjarr3dfeddfn7yl6vu
mysql-test/lib/My/ConfigFactory.pm sp1f-configfactory.pm-20071212171904-umibosyolpj2kzgk32rt5p6pl6vztmaq
mysql-test/lib/My/CoreDump.pm coredump.pm-20080906061044-aei6n1dr1setnfk4-1
mysql-test/lib/My/Platform.pm sp1f-platform.pm-20080220135528-i7dsgofojc7pzjnisb6y43f3kmu6j4ci
mysql-test/lib/My/SafeProcess.pm sp1f-safeprocess.pm-20071212171904-5dvgbxdpklkwzt5ti7tudtpid4iugxmy
mysql-test/lib/My/SafeProcess/safe_process.cc sp1f-safe_process.cc-20080117230334-4bfz2lwq2jqsrrx4r6rbw5ddn3njuu7d
mysql-test/lib/My/SafeProcess/safe_process_win.cc sp1f-safe_process_win.cc-20071212171905-5fxmtbbzzyquscvb7nvjxobmzfwasomh
mysql-test/lib/mtr_cases.pm sp1f-mtr_cases.pl-20050203205008-rrteoawyobvgq6u7zeyce4tmuu334ayg
mysql-test/lib/mtr_gcov.pl sp1f-mtr_gcov.pl-20041230152646-g7ukx2aojk6vlfbrurijutdkqshwljue
mysql-test/lib/mtr_misc.pl sp1f-mtr_misc.pl-20041230152647-z3fkxvkkqfydzuwdmzjgkfo3tyetnp3a
mysql-test/lib/mtr_report.pm sp1f-mtr_report.pl-20041230152648-5foxu5uozo2rvqqrcdpi6gnt4o3z47is
mysql-test/lib/mtr_unique.pm sp1f-mtr_unique.pl-20061117155219-ak3gkg7lqonmlsl2z2afdqipalgjhtsd
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/r/alter_table.result sp1f-alter_table.result-20001228015632-hk5kqhiea33uxdjhnqa2vnagoypjqbi3
mysql-test/r/archive_gis.result sp1f-archive_gis.result-20051025062026-xjiktd7m4tkx76nq365mwve7oa5pbvl6
mysql-test/r/auto_increment.result sp1f-auto_increment.resul-20001228015632-kbskyr7q5v4v323qyj46kh6yldhp6rys
mysql-test/r/backup.result sp1f-backup.result-20010119003620-n6vzt6xughxo432s5hxprxmsna3ia2sw
mysql-test/r/commit_1innodb.result sp1f-commit_1innodb.resul-20080219114259-sa3xkckfii5ijnu24s6pj6e5m75axpcu
mysql-test/r/concurrent_innodb_safelog.result mysqltestrconcurrent-20080815184607-o3b7qk2sgmrmva8u-1
mysql-test/r/concurrent_innodb_unsafelog.result mysqltestrconcurrent-20080815184607-o3b7qk2sgmrmva8u-2
mysql-test/r/connect.result sp1f-connect.result-20021205110110-stxwtj2vtbhl6fx3xr6zans2byprrfhc
mysql-test/r/consistent_snapshot.result sp1f-consistent_snapshot.-20041110165636-xrhkkmxjdiudujjblywn62ghs6izdizr
mysql-test/r/create.result sp1f-create.result-20001228015633-uy7n6oztnd6vmqcrw6z5tloij5yxv4ov
mysql-test/r/csv_not_null.result sp1f-csv_not_null.result-20080121184902-2vfg4tyqyejawosqw3xgbuivpgrzpa3t
mysql-test/r/ctype_collate.result sp1f-ctype_collate.result-20030302121648-mcglydjvis2sb2sbjjp4ffcd2ksyfklr
mysql-test/r/ddl_i18n_koi8r.result sp1f-ddl_i18n_koi8r.resul-20070628173450-7m72ydvq325s6jcwrwnvtegp7nnjly6a
mysql-test/r/ddl_i18n_utf8.result sp1f-ddl_i18n_utf8.result-20070628173450-hr5qu2zidvuj6aikfpgazsaexidsw7so
mysql-test/r/delayed.result sp1f-delayed.result-20001228015633-d5brh5c3ulnb2qshtfvxu5cvvvxf4lsr
mysql-test/r/dirty_close.result sp1f-dirtyclose.result-20010120054015-om25tkfy5dz3oaxyjgj2lsuqhpot37ak
mysql-test/r/events_bugs.result sp1f-events_bugs.result-20060220225211-jzbz6uk6vlho4vlbzbfymaub54fll3ou
mysql-test/r/events_stress.result sp1f-events_stress.result-20060215234303-j3r3p2xw7ycbhmzryjmw4lwrkrkb33ff
mysql-test/r/explain.result sp1f-explain.result-20001228015633-fcck4ixyixae4yjfpahxubumufcrdc7p
mysql-test/r/flush_block_commit.result sp1f-flush_block_commit.r-20040820143520-fkynalygfolyakf5uvgzofxhaw42q4rg
mysql-test/r/flush_block_commit_notembedded.result sp1f-flush_block_commit_n-20061113160642-g4kimbir4hudhmuvoaaek7bchkdkbskp
mysql-test/r/flush_read_lock_kill.result sp1f-flush_read_lock_kill-20041202220228-z2od4huv6466dfdd2nmbcgvn762q2wk6
mysql-test/r/fulltext.result sp1f-fulltext.result-20001228015633-fi5pm63lvhgn665dsef6fjihfkijbrvt
mysql-test/r/func_group.result sp1f-func_group.result-20001228015633-oe57bieiww3s6erojiyha7p26m5ul5ql
mysql-test/r/func_math.result sp1f-func_math.result-20001228015633-nygokawoekqcp2e2qhrtffbkqwtnwyh5
mysql-test/r/func_misc.result sp1f-func_misc.result-20001228015633-4sy6dzzt7xcs4ubzcxloyguc7zhougbr
mysql-test/r/func_sapdb.result sp1f-func_sapdb.result-20030623075631-kd3o45rwsfzikxjuk7r2deumuhaphbn7
mysql-test/r/func_str.result sp1f-strfunc.result-20001215085543-qraqxeite2ybbq4se6ojb2lwaxem3br3
mysql-test/r/gis.result sp1f-gis.result-20030301091631-7oyzcwsw4xnrr5tisytvtyymj3p6lvak
mysql-test/r/grant.result sp1f-grant.result-20020905131705-2gfwpyej777fcllxzcvadzd6tqdxfho3
mysql-test/r/grant2.result sp1f-grant2.result-20030722200047-flh2uaxcbwah7yfj5uohcoxndutgaced
mysql-test/r/group_by.result sp1f-group_by.result-20001228015633-bgjibbiwynctdjq73ms5muj5g6hfpv4d
mysql-test/r/group_min_max.result sp1f-group_min_max.result-20040827133611-aqzadxttbw23mkanmvdsiaambv2pcy27
mysql-test/r/handler_innodb.result sp1f-innodb_handler.resul-20020821205505-jopsqbjuqwwxb5hvf3r2wn37vobunxru
mysql-test/r/handler_myisam.result sp1f-handler.result-20010406221832-ybo3cgjo6qapqc6776ivjpdngwmk6plu
mysql-test/r/have_outfile.require sp1f-have_outfile.require-20050508215604-d4fe2r2cupexh5jmfck4cphvessyehkb
mysql-test/r/index_merge_innodb.result sp1f-index_merge_innodb.r-20060816114352-umgqkfavfljswrg7qhdkcoptdwi5gipo
mysql-test/r/index_merge_myisam.result sp1f-index_merge_myisam.r-20060816114353-wd2664hjxwyjdvm4snup647av5fmxfln
mysql-test/r/information_schema.result sp1f-information_schema.r-20041113105544-waoxa2fjjsicturpothmjmi6jc3yrovn
mysql-test/r/information_schema_all_engines.result information_schema_a-20090408133348-au36idguotknighe-2
mysql-test/r/information_schema_db.result sp1f-information_schema_d-20050506190605-i2emmavt52skkx7n6b5jklprebhrdrxo
mysql-test/r/innodb_gis.result sp1f-innodb_gis.result-20051025065536-p5ypaofrzjq6woupvwul7cfvql3rfcbb
mysql-test/r/key_cache.result sp1f-key_cache.result-20030706160952-w2k4i7umxfnkjp2xhhkmacoikxgxrpw5
mysql-test/r/limit.result sp1f-limit.result-20001228015634-bd4ecpwqbska2l5buwfurkj2mq3rxoq3
mysql-test/r/lock.result sp1f-lock.result-20010327100548-v7vnhudpyvpujzoumsnowmqxa26ojsji
mysql-test/r/lock_multi.result sp1f-lock_multi.result-20011008015806-j56mw7cxenwk7wmwzgciunzotxn2oopp
mysql-test/r/lock_tables_lost_commit.result sp1f-lock_tables_lost_com-20030605150151-tacid54sxmq7pumbxx574ivhw345ipld
mysql-test/r/log_tables.result sp1f-log_tables.result-20060119025601-mp6o7xc6ybvlt3zc6j5kvlfvs6upl7aj
mysql-test/r/lowercase_table3.result sp1f-lowercase_table3.res-20040306084333-bdleyleqjz73g4ocjm43zmbf6zkjsipm
mysql-test/r/merge.result sp1f-merge.result-20001228015634-pf2nbswryog4ykgcx7icbva7tgga7ppt
mysql-test/r/multi_update.result sp1f-multi_update.result-20010611232825-7f2vetuxiyd3bu5lefd5a2ze43xed33y
mysql-test/r/myisam.result sp1f-myisam.result-20010411215653-pgxkk2xg4lh3nxresmfnsuszf5h3nont
mysql-test/r/mysql.result sp1f-mysql.result-20050517191330-5ywsflw7k6pttof273om5l2mb7pyiu22
mysql-test/r/mysqlbinlog.result sp1f-mysqlbinlog.result-20030924192555-7477cirsvcmvihphlv4wbcvd5dfoh3bm
mysql-test/r/mysqlbinlog_row_big.result mysqlbinlog_row_big.-20080820140336-qltyuhvnlnekw1ir-1
mysql-test/r/mysqlbinlog_row_trans.result mysqlbinlog_row_tran-20080820140336-qltyuhvnlnekw1ir-5
mysql-test/r/mysqlcheck.result sp1f-mysqlcheck.result-20051018092453-6xc4m7ejwbivkyyfsddccepyg7iupgui
mysql-test/r/mysqldump-max.result sp1f-mysqldumpmax.result-20050927054257-ywa6ifvppleguicfrejkvsidkalcmzv7
mysql-test/r/mysqldump.result sp1f-mysqldump.result-20030924111344-ly2xhpckbj53fyoa7kllzxyruwj4cg54
mysql-test/r/mysqltest.result sp1f-mysqltest.result-20041022024801-dfor5httbrm4yhbhqtfjzpkst5hoejym
mysql-test/r/null.result sp1f-null.result-20001228015634-eu7snzgpkoadmi72tkozk7rjsbbonewc
mysql-test/r/openssl_1.result sp1f-ssl.result-20010831211351-xa6w74zno32dlg3iwugerlalsvrsq5hn
mysql-test/r/outfile.result sp1f-outfile.result-20050508215605-jbyp2n63oush5cslesnamovfumixcpht
mysql-test/r/packet.result sp1f-packet.result-20030104131713-5wsnno5z6x5rtrsy6godpdsnanjvcp4y
mysql-test/r/parser.result parser.result-20080707155630-vdiryhmexytcgu8d-1
mysql-test/r/partition.result sp1f-partition.result-20050718113029-xlmjyugiq5h2b5wjp236ipsmkmej7i62
mysql-test/r/partition_error.result sp1f-partition_error.resu-20050720124221-iacosg62tkflqhizuvhtiem5oeicwjit
mysql-test/r/partition_mgm_err.result sp1f-partition_mgm_err.re-20050819142419-camjmypv6qoovqeteit3papixdcd45ly
mysql-test/r/preload.result sp1f-preload.result-20030612122616-r2gthlqmuxk4ibdjzodgqguiqn7qngsm
mysql-test/r/ps.result sp1f-ps.result-20040405154119-efxzt5onloys45nfjak4gt44kr4awkdi
mysql-test/r/ps_11bugs.result sp1f-ps_11bugs.result-20041012140047-4pktjlfeq27q6bxqfdsbcszr5nybv6zz
mysql-test/r/ps_1general.result sp1f-ps_1general.result-20040701142628-mnroykiputkb67hocznz5eijpxjhx4da
mysql-test/r/ps_2myisam.result sp1f-ps_2myisam.result-20040701142628-22vop64okggcdoqso4kw7aq3d2augzd4
mysql-test/r/ps_3innodb.result sp1f-ps_3innodb.result-20040701142628-fyardhwsjvwfcltumzytqqssdpgu3e5d
mysql-test/r/ps_4heap.result sp1f-ps_4heap.result-20040701142628-qkny2md7rdyjymvmzg3d3c2x73o2wbfo
mysql-test/r/ps_5merge.result sp1f-ps_5merge.result-20040701142628-iu2zuhkhkly6pfhedemkatfcnxidbg6x
mysql-test/r/query_cache_debug.result sp1f-query_cache_debug.re-20080107200614-s256l72hwdf7po2ijmfjn3nj7zikjeem
mysql-test/r/query_cache_notembedded.result sp1f-query_cache_notembed-20050729121335-enxz2r7srcrudvsmkq357ior3n4nlqpq
mysql-test/r/read_only.result sp1f-read_only.result-20051017085222-vogxy6cqaatb3frlbvaw4kbtr6tdy7l5
mysql-test/r/repair.result sp1f-repair.result-20020901175217-bbx3pgbuq4pcl73i4n64nqm42ymdvc3b
mysql-test/r/row-checksum-old.result rowchecksumold.resul-20080628121229-ldwb4etmwlrhbzbu-4
mysql-test/r/row-checksum.result rowchecksum.result-20080628121229-ldwb4etmwlrhbzbu-5
mysql-test/r/row.result sp1f-row_test.result-20021115183203-2qzydlreofsgtadezzalgmeueddetwbq
mysql-test/r/select.result sp1f-select.result-20010103001548-znkoalxem6wchsbxizfosjhpfmhfyxuk
mysql-test/r/show_check.result sp1f-show_check.result-20001228015634-5hf7elb3nj3zmuz6tosvytmbu52bploi
mysql-test/r/skip_name_resolve.result sp1f-skip_name_resolve.re-20050215043241-ot7jyy3ntpkka5c75zaa2av2x3bqyxfj
mysql-test/r/sp-error.result sp1f-sperror.result-20030305184512-euxcpn3oxmcl4dn2kqbdx73ljcbivzto
mysql-test/r/sp-security.result sp1f-spsecurity.result-20031213154048-xglie74lizlzappe5papku3ysbvrzg75
mysql-test/r/sp.result sp1f-sp.result-20030117133802-duandg3yzagzyv7zhhbbt2kcomcegpc7
mysql-test/r/sp_trans.result sp1f-sp_trans.result-20050317211403-amfk6jiohkogv24ai7uzzzwugmlru4uk
mysql-test/r/status.result sp1f-status.result-20010127030042-xmcayiu3ythpazhcl57hxwab2xefawxh
mysql-test/r/strict.result sp1f-strict.result-20040928170753-t5ampq424to7n62krizjgbhom3w5uffk
mysql-test/r/subselect.result sp1f-subselect.result-20020512204640-zgegcsgavnfd7t7eyrf7ibuqomsw7uzo
mysql-test/r/synchronization.result sp1f-synchronization.resu-20040402215037-l6xcolzk43zwwvtkuwzlb7z6o6auzfoa
mysql-test/r/system_mysql_db.result sp1f-system_mysql_db.resu-20040310185404-f7br5g4442iqwxireltudlyu5ppbkijo
mysql-test/r/trigger-compat.result sp1f-triggercompat.result-20051110192454-4trsxvsnunrdc6mt37ydf5ukexan3fkz
mysql-test/r/type_blob.result sp1f-type_blob.result-20001228015634-nu3obuxqigefjmoyytjqftp6ukhhijm2
mysql-test/r/type_datetime.result sp1f-type_datetime.result-20001228015634-jrgwqpilnfn4kvdp6wm5hp5imvf3tkek
mysql-test/r/type_float.result sp1f-type_float.result-20001228015634-4d3sz6mi64emzblbohhgiphbeeuddhms
mysql-test/r/type_timestamp.result sp1f-type_timestamp.resul-20001228015634-kqvoszdkv7vbactvtbpvwo66gohlxmvw
mysql-test/r/union.result sp1f-unions_one.result-20010725122836-ofxtwraxeohz7whhrmfdz57sl4a5prmp
mysql-test/r/variables-big.result sp1f-variablesbig.result-20070412220324-eqo7ss2qindlk7jejk2ey3teq45b7kmu
mysql-test/r/variables.result sp1f-variables.result-20001228015635-w5m2doorn7gzhyyhpqrlqsupnwn6f6xh
mysql-test/r/variables_debug.result sp1f-variables_debug.resu-20080226150357-xrpcjxbbb6lhnyicksx3a7ozn3i5wh5x
mysql-test/r/view.result sp1f-view.result-20040715221517-nqk3l34grrhprjiitidhfjyjqlgh6a5v
mysql-test/r/view_grant.result sp1f-view_grant.result-20050404194355-hbbr5ud3thpo5tn65q6eyecswq5mdhwk
mysql-test/r/warnings.result sp1f-warnings.result-20010928050551-uka7prbsewkm4k6eu4jrzvvwjvhxgw3y
mysql-test/r/windows.result sp1f-windows.result-20050901013212-d5xc5u66d6z25c2hig2xgc2zjyazfh6i
mysql-test/r/xml.result sp1f-xml.result-20051221130430-ptjfewmwl625gpjwpose3u5qu67h6nxe
mysql-test/suite/binlog/r/binlog_auto_increment_bug33029.result sp1f-binlog_auto_incremen-20080314033536-fjp626h23begtpm7cw4t5tmwhjyv2djp
mysql-test/suite/binlog/r/binlog_row_binlog.result sp1f-binlog_row_binlog.re-20051222053451-vl3rsa7i5wuxj6pjofa7aylzersn25i6
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result sp1f-binlog_row_mix_innod-20051222053451-e65hkpwkx65zhmyddgnozkwk6mudqlhi
mysql-test/suite/binlog/r/binlog_stm_binlog.result sp1f-binlog.result-20050223135507-y6mkcjto5zdkpgaevaqo5epoafa3yiq5
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result sp1f-mix_innodb_myisam_bi-20030822133916-l72xhg2oxjthj6ichxowk55lrbjebfxa
mysql-test/suite/binlog/r/binlog_unsafe.result sp1f-binlog_unsafe.result-20070514124535-jqttmp2p2jfelgeewle4swp5rb4j7pbi
mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test sp1f-binlog_auto_incremen-20080314033536-vkr4fgcozxy7qgjq24cveclyzpieqkb3
mysql-test/suite/binlog/t/binlog_unsafe.test sp1f-binlog_unsafe.test-20070514124535-pau2ov4yta3qsk5zbdwkywce3vhd54xr
mysql-test/suite/binlog/t/disabled.def sp1f-disabled.def-20070717072209-5mfg73ixqm4ivn3gyq7rvceprr4ht3wr
mysql-test/suite/federated/federated.result sp1f-federated.result-20041211200117-zbuxe4bh3vyrane2ehku7szsgbfbhkvd
mysql-test/suite/federated/federated.test sp1f-federated.test-20041211200119-aht6hujozcouca6joz5eaiq55jk6psb5
mysql-test/suite/federated/federated_server.test sp1f-federated_server.tes-20061202004730-idhp5qb6ntspupkz2wftb5aguipv27kk
mysql-test/suite/funcs_1/r/innodb_func_view.result sp1f-innodb_func_view.res-20070206175435-zksozsfanah6kcpyvvlsojjqamdrlaix
mysql-test/suite/funcs_1/r/innodb_storedproc_08.result sp1f-innodb_storedproc_08-20070206175436-3o54axjfbq2dllibey7bwh3cwzoy3kqn
mysql-test/suite/funcs_1/r/innodb_trig_0102.result sp1f-innodb_trig_0102.res-20070206175436-qayw77hubof3kdsbrmfmuzlhp4truay3
mysql-test/suite/funcs_1/r/innodb_trig_0407.result sp1f-innodb_trig_0407.res-20070206175436-lr26htv2b4kgrxtjyuwq6jgeqasuw64d
mysql-test/suite/funcs_1/r/innodb_trig_09.result sp1f-innodb_trig_09.resul-20070206175436-iyvorcoemrp6r5aj4ljzyg47lafvpbme
mysql-test/suite/funcs_1/r/innodb_views.result sp1f-innodb_views.result-20070206175436-acalajog5wgzhofwzkuezca4lxqta6lr
mysql-test/suite/funcs_1/r/is_columns_innodb.result sp1f-is_columns_innodb.re-20080307163304-7nvpqbmjf5zbzojk4qdiaynstw3y3j2g
mysql-test/suite/funcs_1/r/is_columns_is.result sp1f-is_columns_is.result-20080307163304-7bd6seaxklddmff6f3bb54inlyw6unpw
mysql-test/suite/funcs_1/r/is_columns_memory.result sp1f-is_columns_memory.re-20080307163304-w4pvmhlppwq7353yai3dn4grdmlhelnx
mysql-test/suite/funcs_1/r/is_columns_myisam.result sp1f-is_columns_myisam.re-20080307163304-yilcnout3bbyjf6a6axasqktx5uraj7v
mysql-test/suite/funcs_1/r/is_columns_mysql.result sp1f-is_columns_mysql.res-20080307163304-a2ymkif2vzliwqqqzr22cglbaf75tthe
mysql-test/suite/funcs_1/r/memory_func_view.result sp1f-memory_func_view.res-20070206175436-3fqxnwbedehhtbacqfdpguyzlzigftqi
mysql-test/suite/funcs_1/r/memory_storedproc_08.result sp1f-memory_storedproc_08-20070206175436-76ha7p4xjz53vo6uu2hai2auo5aovihe
mysql-test/suite/funcs_1/r/memory_trig_0102.result sp1f-memory_trig_0102.res-20070206175436-3vo6jvwyznevrpzwxagzuvd7pjnwgu32
mysql-test/suite/funcs_1/r/memory_trig_0407.result sp1f-memory_trig_0407.res-20070206175436-ami35yone2dq3k5mwehgyqkykjfqrzw6
mysql-test/suite/funcs_1/r/memory_trig_09.result sp1f-memory_trig_09.resul-20070206175436-wpykodzbwjreeqwlkrcdgq2spuiwcdk4
mysql-test/suite/funcs_1/r/memory_views.result sp1f-memory_views.result-20070206175437-khvv746ejvtr4mpnkcmar2cw7vakd3dy
mysql-test/suite/funcs_1/r/myisam_func_view.result sp1f-myisam_func_view.res-20070206175437-hx5547ncsoco2bpruecyswjziotocyhd
mysql-test/suite/funcs_1/r/myisam_storedproc_08.result sp1f-myisam_storedproc_08-20070206175437-z46xsvscoscrlklrejjtprhjp67cklp3
mysql-test/suite/funcs_1/r/myisam_trig_0102.result sp1f-myisam_trig_0102.res-20070206175437-lsgr75qs52skqoxhdrmgrfykhylpj22u
mysql-test/suite/funcs_1/r/myisam_trig_0407.result sp1f-myisam_trig_0407.res-20070206175437-cnomsj2jcwpfpfoop2cran2lszr33ig2
mysql-test/suite/funcs_1/r/myisam_trig_09.result sp1f-myisam_trig_09.resul-20070206175437-o5nt24kekznzixwwetwhvxd3qsfrdbdl
mysql-test/suite/funcs_1/r/myisam_views.result sp1f-myisam_views.result-20070206175437-lee63kgmijo2j5tzireezdypyd7hdk2v
mysql-test/suite/funcs_1/r/ndb_func_view.result sp1f-ndb_func_view.result-20070206121932-q2le4t73bl6tpejj7p2akoqjob4ea7ad
mysql-test/suite/funcs_1/r/ndb_storedproc_08.result sp1f-ndb_storedproc_08.re-20070206121932-dlver7ml4xsjxj7ryolxxz76rsd7bibe
mysql-test/suite/funcs_1/r/ndb_trig_0102.result ndb_trig_0102.result-20080530150730-o6suyuevwnd21dnb-1
mysql-test/suite/funcs_1/r/ndb_trig_0407.result ndb_trig_0407.result-20080530150730-o6suyuevwnd21dnb-3
mysql-test/suite/funcs_1/r/ndb_trig_09.result ndb_trig_09.result-20080530150730-o6suyuevwnd21dnb-5
mysql-test/suite/funcs_1/r/ndb_views.result sp1f-ndb_views.result-20070206121933-4o7hdotgtchnnzm7ti7va4icoip4amba
mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result sp1f-a_processlist_priv_n-20070815194641-dlvb2zym4djihvxmbsmib5bvpgytiuoe
mysql-test/suite/funcs_1/r/processlist_priv_ps.result sp1f-b_processlist_priv_p-20070815194641-wvgg7pf5qwl5hwxe5rmd2lefnwfiaz7e
mysql-test/suite/funcs_1/r/processlist_val_no_prot.result sp1f-a_processlist_val_no-20070815194641-puz2vi6caqirb4nqzumushorqyuniraq
mysql-test/suite/funcs_1/r/processlist_val_ps.result sp1f-b_processlist_val_ps-20070815194641-kl4wj4y6bete5txk6xnyppp2h5atsodw
mysql-test/suite/funcs_1/r/storedproc.result sp1f-innodb_storedproc.re-20070206175435-rgnzc2jds3aldhbgzkercseghr6gn3ea
mysql-test/suite/funcs_1/storedproc/storedproc_08_show.inc sp1f-storedproc_08_show.i-20070206175437-7iymz4fyxcmqdreawbfhjvs6ermc2oqd
mysql-test/suite/funcs_1/t/storedproc.test sp1f-storedproc_master.in-20070206175437-kmzbscdyh3kuwaj7hjkx77a652ukh5zv
mysql-test/suite/funcs_1/triggers/triggers_0102.inc sp1f-triggers_0102.inc-20070206175439-7gcmfnamt4jktnn5ksfrh2zdylfvqtvg
mysql-test/suite/funcs_1/triggers/triggers_0407.inc sp1f-triggers_0407.inc-20070206175439-7nivnderbsg2gcbk6n7ru36sw4vdzpdl
mysql-test/suite/funcs_1/triggers/triggers_09.inc sp1f-triggers_09.inc-20070206175439-fuwb4lyxepp2si3iyd4ldh7w7us57t6b
mysql-test/suite/maria/r/maria-preload.result sp1f-mariapreload.result-20080304114700-5uurscio7g7lodoyp2zmzo27up5vsjsc
mysql-test/suite/maria/r/maria.result sp1f-maria.result-20060411134403-xrrw2657ctr6et4vhmohpoev5ze42pti
mysql-test/suite/maria/r/maria3.result maria3.result-20080701120735-95p69v855sl5nh1m-1
mysql-test/suite/maria/r/ps_maria.result sp1f-ps_maria.result-20060411134403-dmqfdnvwryhqidpvozasc6ref3gwm72a
mysql-test/suite/maria/t/maria-preload.test sp1f-mariapreload.test-20080304114700-4g7kk5s33imgoqijhx4s72tapr2wwnmv
mysql-test/suite/maria/t/maria3.test maria3.test-20080701120729-b8g279bfeomagayo-1
mysql-test/suite/ndb/r/ndb_gis.result sp1f-ndb_gis.result-20051025062027-r3oyct2ytnh7dkegfvw2cmnfz5ifkdyx
mysql-test/suite/ndb/r/ndb_restore.result sp1f-ndb_restore.result-20050124120423-ikn2jquomq3l4r4jmsadf4bb4ubekggm
mysql-test/suite/ndb/r/ndb_restore_partition.result sp1f-ndb_restore_partitio-20060614102107-73hl3xcqkzjrhiy3u2se2cg5qcex7te6
mysql-test/suite/ndb/r/ndb_restore_print.result sp1f-ndb_restore_print.re-20070307061929-o2ox3odnb6afs4kuzy6pluhs5zu5k7vk
mysql-test/suite/ndb/r/ps_7ndb.result sp1f-ps_7ndb.result-20040925150736-rcbl5rusdndurdccp43qyii5seddo34w
mysql-test/suite/ndb_team/r/ndb_dd_backuprestore.result sp1f-ndb_dd_backuprestore-20060215130530-h3bzdeqt5d5kf5jnu6pcgqe2nbzqpxfg
mysql-test/suite/ndb_team/t/ndb_autodiscover.test sp1f-ndb_autodiscover.tes-20040517075311-n5xshkvqua5sz7umcvs3r6rlgecffmmu
mysql-test/suite/parts/inc/partition_auto_increment.inc partition_auto_incre-20080902080504-smrqvl9x3yj3y30u-1
mysql-test/suite/parts/r/ndb_dd_backuprestore.result sp1f-ndb_dd_backuprestore-20070206122236-vlvsb3x3cue4pvzdew2456bd6rncb6fa
mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result sp1f-partition_alter1_1_2-20080513231048-gvhb6v7nwg7es5oa2fgsyepczwbbsjgz
mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result sp1f-partition_alter1_1_2-20080513231048-ibvqvplo53vrvjs2wzrkrh5vaxmodixm
mysql-test/suite/parts/r/partition_alter1_1_innodb.result sp1f-partition_alter1_1_i-20080513231048-vw2fpqt45z7sziy2g2fygoa5bkl7p7jh
mysql-test/suite/parts/r/partition_alter1_1_myisam.result sp1f-partition_alter1_1_m-20080513231048-c6i674jghn6f4qszjht76lxfxtfshxxp
mysql-test/suite/parts/r/partition_alter2_1_innodb.result sp1f-partition_alter2_inn-20070206122236-eyhxvxhpzj3lubwixqbk3kzvjjgjhimo
mysql-test/suite/parts/r/partition_alter2_1_maria.result partition_alter2_1_m-20081121141947-lh5ecnr2v4dkwli4-1
mysql-test/suite/parts/r/partition_alter2_1_myisam.result sp1f-partition_alter2_myi-20070206122236-jpkrr2v2pgpksws5xs3ecgy3jjd5od6c
mysql-test/suite/parts/r/partition_alter2_2_innodb.result partition_alter2_2_i-20080908140941-884mge0s10lxgki2-1
mysql-test/suite/parts/r/partition_alter2_2_maria.result partition_alter2_2_m-20081121141947-lh5ecnr2v4dkwli4-2
mysql-test/suite/parts/r/partition_alter2_2_myisam.result partition_alter2_2_m-20080908140941-884mge0s10lxgki2-2
mysql-test/suite/parts/r/partition_auto_increment_blackhole.result partition_auto_incre-20080902130251-otbifbb7638h2boy-2
mysql-test/suite/parts/r/partition_auto_increment_innodb.result partition_auto_incre-20080902080538-cpp3r5wsg1iaf0hq-1
mysql-test/suite/parts/r/partition_auto_increment_maria.result partition_auto_incre-20081121141947-lh5ecnr2v4dkwli4-3
mysql-test/suite/parts/r/partition_auto_increment_memory.result partition_auto_incre-20080902130257-psqogw2uun5wtb8c-1
mysql-test/suite/parts/r/partition_auto_increment_myisam.result partition_auto_incre-20080902080538-cpp3r5wsg1iaf0hq-2
mysql-test/suite/parts/r/partition_auto_increment_ndb.result partition_auto_incre-20080902130251-otbifbb7638h2boy-3
mysql-test/suite/parts/r/partition_basic_innodb.result sp1f-partition_basic_inno-20070206122237-pzpy2hvit34fxpvkxic73muh7h66lqhm
mysql-test/suite/parts/r/partition_basic_myisam.result sp1f-partition_basic_myis-20070206122237-ra3v2mwwwyd2tuddpu2ahvjvhg6wipqy
mysql-test/suite/parts/r/partition_basic_symlink_myisam.result sp1f-partition_basic_syml-20080206141352-wwg6qk37quijmoqlubhbsgrkvybphmoc
mysql-test/suite/parts/r/partition_mgm_lc0_archive.result partition_mgm_lc0_ar-20080628201310-zy2ine5dj8cvtbja-1
mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result partition_mgm_lc0_in-20080628201310-zy2ine5dj8cvtbja-2
mysql-test/suite/parts/r/partition_mgm_lc0_memory.result partition_mgm_lc0_me-20080628201310-zy2ine5dj8cvtbja-3
mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result partition_mgm_lc0_my-20080628201310-zy2ine5dj8cvtbja-4
mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result partition_mgm_lc0_nd-20080628201310-zy2ine5dj8cvtbja-5
mysql-test/suite/parts/r/partition_mgm_lc1_archive.result partition_mgm_lc1_ar-20080628201310-zy2ine5dj8cvtbja-6
mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result partition_mgm_lc1_in-20080628201310-zy2ine5dj8cvtbja-7
mysql-test/suite/parts/r/partition_mgm_lc1_memory.result partition_mgm_lc1_me-20080628201310-zy2ine5dj8cvtbja-8
mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result partition_mgm_lc1_my-20080628201310-zy2ine5dj8cvtbja-9
mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result partition_mgm_lc1_nd-20080628201310-zy2ine5dj8cvtbja-10
mysql-test/suite/parts/r/partition_mgm_lc2_archive.result partition_mgm_lc2_ar-20080628201310-zy2ine5dj8cvtbja-11
mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result partition_mgm_lc2_in-20080628201310-zy2ine5dj8cvtbja-12
mysql-test/suite/parts/r/partition_mgm_lc2_memory.result partition_mgm_lc2_me-20080628201310-zy2ine5dj8cvtbja-13
mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result partition_mgm_lc2_my-20080628201310-zy2ine5dj8cvtbja-14
mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result partition_mgm_lc2_nd-20080628201310-zy2ine5dj8cvtbja-15
mysql-test/suite/pbxt/r/alter_table.result alter_table.result-20090402100035-4ilk9i91sh65vjcb-5
mysql-test/suite/pbxt/r/analyze.result analyze.result-20090402100035-4ilk9i91sh65vjcb-7
mysql-test/suite/pbxt/r/auto_increment.result auto_increment.resul-20090402100035-4ilk9i91sh65vjcb-9
mysql-test/suite/pbxt/r/delete.result delete.result-20090402100035-4ilk9i91sh65vjcb-31
mysql-test/suite/pbxt/r/distinct.result distinct.result-20090402100035-4ilk9i91sh65vjcb-34
mysql-test/suite/pbxt/r/func_group.result func_group.result-20090402100035-4ilk9i91sh65vjcb-50
mysql-test/suite/pbxt/r/func_math.result func_math.result-20090402100035-4ilk9i91sh65vjcb-55
mysql-test/suite/pbxt/r/func_str.result func_str.result-20090402100035-4ilk9i91sh65vjcb-61
mysql-test/suite/pbxt/r/grant.result grant.result-20090402100035-4ilk9i91sh65vjcb-65
mysql-test/suite/pbxt/r/group_min_max.result group_min_max.result-20090402100035-4ilk9i91sh65vjcb-69
mysql-test/suite/pbxt/r/join.result join.result-20090402100035-4ilk9i91sh65vjcb-79
mysql-test/suite/pbxt/r/join_nested.result join_nested.result-20090402100035-4ilk9i91sh65vjcb-81
mysql-test/suite/pbxt/r/key.result key.result-20090402100035-4ilk9i91sh65vjcb-83
mysql-test/suite/pbxt/r/key_cache.result key_cache.result-20090402100035-4ilk9i91sh65vjcb-84
mysql-test/suite/pbxt/r/key_diff.result key_diff.result-20090402100035-4ilk9i91sh65vjcb-85
mysql-test/suite/pbxt/r/lowercase_view.result lowercase_view.resul-20090402100035-4ilk9i91sh65vjcb-96
mysql-test/suite/pbxt/r/mysqlshow.result mysqlshow.result-20090402100035-4ilk9i91sh65vjcb-101
mysql-test/suite/pbxt/r/null.result null.result-20090402100035-4ilk9i91sh65vjcb-104
mysql-test/suite/pbxt/r/null_key.result null_key.result-20090402100035-4ilk9i91sh65vjcb-105
mysql-test/suite/pbxt/r/partition_pruning.result partition_pruning.re-20090402100035-4ilk9i91sh65vjcb-117
mysql-test/suite/pbxt/r/pbxt_bugs.result pbxt_bugs.result-20090402100035-4ilk9i91sh65vjcb-120
mysql-test/suite/pbxt/r/pbxt_ref_int.result pbxt_ref_int.result-20090402100035-4ilk9i91sh65vjcb-123
mysql-test/suite/pbxt/r/preload.result preload.result-20090402100035-4ilk9i91sh65vjcb-127
mysql-test/suite/pbxt/r/ps_1general.result ps_1general.result-20090402100035-4ilk9i91sh65vjcb-130
mysql-test/suite/pbxt/r/range.result range.result-20090402100035-4ilk9i91sh65vjcb-132
mysql-test/suite/pbxt/r/schema.result schema.result-20090402100035-4ilk9i91sh65vjcb-138
mysql-test/suite/pbxt/r/select.result select.result-20090402100035-4ilk9i91sh65vjcb-139
mysql-test/suite/pbxt/r/select_safe.result select_safe.result-20090402100035-4ilk9i91sh65vjcb-141
mysql-test/suite/pbxt/r/subselect.result subselect.result-20090402100035-4ilk9i91sh65vjcb-146
mysql-test/suite/pbxt/r/type_enum.result type_enum.result-20090402100035-4ilk9i91sh65vjcb-155
mysql-test/suite/pbxt/r/type_ranges.result type_ranges.result-20090402100035-4ilk9i91sh65vjcb-159
mysql-test/suite/pbxt/r/type_timestamp.result type_timestamp.resul-20090402100035-4ilk9i91sh65vjcb-162
mysql-test/suite/pbxt/r/union.result union.result-20090402100035-4ilk9i91sh65vjcb-166
mysql-test/suite/pbxt/r/view_grant.result view_grant.result-20090402100035-4ilk9i91sh65vjcb-169
mysql-test/suite/pbxt/t/auto_increment.test auto_increment.test-20090402100035-4ilk9i91sh65vjcb-176
mysql-test/suite/pbxt/t/delete.test delete.test-20090402100035-4ilk9i91sh65vjcb-198
mysql-test/suite/pbxt/t/join_nested.test join_nested.test-20090402100035-4ilk9i91sh65vjcb-248
mysql-test/suite/pbxt/t/null.test null.test-20090402100035-4ilk9i91sh65vjcb-271
mysql-test/suite/pbxt/t/pbxt_bugs.test pbxt_bugs.test-20090402100035-4ilk9i91sh65vjcb-287
mysql-test/suite/pbxt/t/rename.test rename.test-20090402100035-4ilk9i91sh65vjcb-301
mysql-test/suite/pbxt/t/schema.test schema.test-20090402100035-4ilk9i91sh65vjcb-305
mysql-test/suite/pbxt/t/type_enum.test type_enum.test-20090402100035-4ilk9i91sh65vjcb-322
mysql-test/suite/pbxt/t/union.test union.test-20090402100035-4ilk9i91sh65vjcb-333
mysql-test/suite/rpl/r/rpl_do_grant.result sp1f-rpl_do_grant.result-20030802214618-dy6h6p3wwcdlud4mk6ivfxsgu5celg5t
mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result sp1f-rpl_extracolmaster_i-20070729221031-tojyio72quaoid7ey2lnmx6khdftxqtr
mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result sp1f-rpl_extracolmaster_m-20070729221031-dlr6ie2eo7cmwnmiw7ccfiwghfvgtily
mysql-test/suite/rpl/r/rpl_failed_optimize.result sp1f-rpl_failed_optimize.-20041103172259-bsr2f2kj7hrg6w4p3cjoztpznhjzsrrn
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result sp1f-rpl_innodb_mixed_dml-20070206122521-55gg47nv2ebmatncbhfe7ihcle7wzd6n
mysql-test/suite/rpl/r/rpl_loaddatalocal.result sp1f-rpl_loaddatalocal.re-20030228202359-vlyqlboybbakyklqm2lhptrbwruhia2n
mysql-test/suite/rpl/r/rpl_loadfile.result sp1f-rpl_loadfile.result-20051222053451-anxtbc4wfge6gdkww6klzocyje53735x
mysql-test/suite/rpl/r/rpl_rotate_logs.result sp1f-rpl000016.result-20001215004309-cb7o2ahawq7tlqn2c5be5wemg2fe5m7x
mysql-test/suite/rpl/r/rpl_row_until.result sp1f-rpl_row_until.result-20051222053457-tsvnofhpratotljoeydt5bbz7z7illje
mysql-test/suite/rpl/r/rpl_sp.result sp1f-rpl_sp.result-20050505122047-6pz3qkb234acgvxly33c2rm665rolo6w
mysql-test/suite/rpl/r/rpl_stm_log.result sp1f-rpl_log.result-20010621191923-r3yiuhrqrbautxnc66pw6bzlo6qp7sds
mysql-test/suite/rpl/r/rpl_temporary.result sp1f-rpl_temporary.result-20021229214238-uwyas6jaay7ygaqsdwolzlcec6reyckw
mysql-test/suite/rpl/r/rpl_timezone.result sp1f-rpl_timezone.result-20040618061114-vvb4fmiyukog5haqzfhdpsrv6ib6da3w
mysql-test/suite/rpl/r/rpl_truncate_2myisam.result sp1f-rpl_truncate_2myisam-20060601095313-haplklq2ymptuy72evedlxoytwekzvk7
mysql-test/suite/rpl/r/rpl_truncate_3innodb.result sp1f-rpl_truncate_3innodb-20060601095313-icwl4xuxsmb5cr6kdbsepi2no7cviest
mysql-test/suite/rpl/t/disabled.def sp1f-disabled.def-20070627122758-vdqevwzhnizicdrxrmfy4w4afgprx46x
mysql-test/suite/rpl/t/rpl_cross_version.test rpl_cross_version.te-20090122144409-ocwkhf1fg8al2q5w-1
mysql-test/suite/rpl/t/rpl_do_grant.test sp1f-rpl_do_grant.test-20030802214619-wincvjltx3w7wntnmnquss36fcszy2wa
mysql-test/suite/rpl/t/rpl_err_ignoredtable.test sp1f-rpl_error_ignored_ta-20030708095933-nrriw3pbfsfrugbgvjpriczjb3dwm4mn
mysql-test/suite/rpl/t/rpl_loaddatalocal.test sp1f-rpl_loaddatalocal.te-20030228202359-thkinry6nfontmohwt4ppxanoj2g2yfd
mysql-test/suite/rpl/t/rpl_loadfile.test sp1f-rpl_loadfile.test-20051222053459-urwfbakmaokhxjs56kxsrrhy3lxesaat
mysql-test/suite/rpl/t/rpl_optimize.test sp1f-rpl_optimize.test-20040222102242-sa235qkcz6ilnydeaz2vkcubkou7kkyr
mysql-test/suite/rpl/t/rpl_relayrotate.test sp1f-rpl_relayrotate.test-20030424132916-bjgijvliitnig2bhlyfkghpnm4ujx5zv
mysql-test/suite/rpl/t/rpl_rotate_logs.test sp1f-rpl000016.test-20001215004309-uqid5ejphbyjwielf3t6nd7523ynp353
mysql-test/suite/rpl/t/rpl_row_001.test sp1f-rpl_row_001.test-20051222053500-2hfny3tjpqiyxhviuq3ycvh5yeyhzbhi
mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test sp1f-rpl_row_mysqlbinlog.-20060222210147-bya5x534z2x22ahcz5ej4xxwoaacjnkz
mysql-test/suite/rpl/t/rpl_row_sp003.test sp1f-rpl_row_sp003.test-20051222053504-gptfueg42ucmbkoo2ktvmf3molhsaop4
mysql-test/suite/rpl/t/rpl_row_until.test sp1f-rpl_row_until.test-20051222053506-4eny7nq5dwf6gk6bx6i3gj7tpa6x4oyj
mysql-test/suite/rpl/t/rpl_start_stop_slave.test sp1f-rpl_start_stop_slave-20041125082126-dkafmip36n5zdykbnlcpgwczz4hjkaqk
mysql-test/suite/rpl/t/rpl_temporary.test sp1f-rpl_temporary.test-20021229214239-nxqbr5fvrk5sm3d5xf2gwzhfim3xdy7k
mysql-test/suite/rpl/t/rpl_timezone.test sp1f-rpl_timezone.test-20040618061121-pvoxjozqh37mmxq6duvd5limkzd2hj2m
mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result sp1f-rpl_ndb_sync.result-20060112185041-i7zfrbht6slo5nct2v72jrv2vvxfavbv
mysql-test/suite/rpl_ndb/t/disabled.def sp1f-disabled.def-20070627122758-45lp6netjm4252w3f7gby7yzpiimkijr
mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc slave_transaction_re-20080723133134-xy6alzainhlavevf-39
mysql-test/suite/sys_vars/inc/sync_binlog_basic.inc sync_binlog_basic.in-20080723133134-xy6alzainhlavevf-41
mysql-test/suite/sys_vars/r/auto_increment_increment_basic.result sp1f-auto_increment_incre-20080410131230-ypg6viusw6fprfpt2ssqhtwj32g3e36k
mysql-test/suite/sys_vars/r/auto_increment_increment_func.result sp1f-auto_increment_incre-20080410131230-2gfe3yy7bfcpzu7ku6vij45nnifw4htg
mysql-test/suite/sys_vars/r/auto_increment_offset_basic.result sp1f-auto_increment_offse-20080410131230-4tmue5cghmlqolia4kmtuhqdsvw4shnh
mysql-test/suite/sys_vars/r/auto_increment_offset_func.result sp1f-auto_increment_offse-20080410131230-h6ysdzqudrog6mttrre5x2nqc3fbenrd
mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result binlog_cache_size_ba-20080723133134-xy6alzainhlavevf-47
mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result bulk_insert_buffer_s-20080723133134-xy6alzainhlavevf-49
mysql-test/suite/sys_vars/r/completion_type_func.result sp1f-completion_type_func-20080410131237-k7ox5bj6o6h6nnv746gpe57xzri5idlr
mysql-test/suite/sys_vars/r/concurrent_insert_basic.result sp1f-concurrent_insert_ba-20080410131237-drnm6bt6w5ssogqtnsxe7ycejkzf4cj7
mysql-test/suite/sys_vars/r/connect_timeout_basic.result sp1f-connect_timeout_basi-20080410131237-2d4kifyb565yrnhgoj6ca3ljg3setnhh
mysql-test/suite/sys_vars/r/default_week_format_basic.result sp1f-default_week_format_-20080410131238-iqph5lue4spsrwibs5iqqgkxq7zrjeqk
mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result delayed_insert_limit-20080723133134-xy6alzainhlavevf-51
mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result sp1f-delayed_insert_limit-20080410131239-cjzfhpzbhsdsdp6t3oklklnkybywwoqr
mysql-test/suite/sys_vars/r/delayed_insert_timeout_basic.result sp1f-delayed_insert_timeo-20080410131239-hspi3f22amptzbklik6wv5mk4gxwuxi4
mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result delayed_queue_size_b-20080723133134-xy6alzainhlavevf-53
mysql-test/suite/sys_vars/r/div_precision_increment_basic.result sp1f-div_precision_increm-20080410131239-plap3esr7qqvqm7zwnlto5pviztp4ccb
mysql-test/suite/sys_vars/r/expire_logs_days_basic.result sp1f-expire_logs_days_bas-20080410131241-ongndlaxwubkm5blybrkkrx4wu56idgx
mysql-test/suite/sys_vars/r/ft_boolean_syntax_func.result sp1f-ft_boolean_syntax_fu-20080410131243-u3np7w33rmqmifvpi5qs53ngjrwkn3ep
mysql-test/suite/sys_vars/r/group_concat_max_len_basic.result sp1f-group_concat_max_len-20080410131245-a4mnjrfwcvosv5ctnl2b2v7vqvscvlte
mysql-test/suite/sys_vars/r/interactive_timeout_basic.result sp1f-interactive_timeout_-20080410131333-q4sms7fguvnpdnuxtloypts2sx6oe2r2
mysql-test/suite/sys_vars/r/interactive_timeout_func.result sp1f-interactive_timeout_-20080410131333-rvfy6dmm4pa7wpqp3euqu7d6kokgx7qn
mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result join_buffer_size_bas-20080723133134-xy6alzainhlavevf-61
mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result key_buffer_size_basi-20080723133134-xy6alzainhlavevf-63
mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_32.result key_cache_age_thresh-20080723133134-xy6alzainhlavevf-65
mysql-test/suite/sys_vars/r/key_cache_block_size_basic_32.result key_cache_block_size-20080723133134-xy6alzainhlavevf-67
mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_32.result key_cache_division_l-20080723133134-xy6alzainhlavevf-69
mysql-test/suite/sys_vars/r/log_bin_trust_routine_creators_basic.result sp1f-log_bin_trust_routin-20080410131334-e7iigyn2ftrkqb2hemegx4pdragxh7vf
mysql-test/suite/sys_vars/r/log_warnings_basic_32.result log_warnings_basic_3-20080723133134-xy6alzainhlavevf-71
mysql-test/suite/sys_vars/r/max_allowed_packet_basic.result sp1f-max_allowed_packet_b-20080410131335-dkk2q6ghqt4r6ihxk53nc7ntjunw75cf
mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_32.result max_binlog_cache_siz-20080723133134-xy6alzainhlavevf-73
mysql-test/suite/sys_vars/r/max_binlog_size_basic.result sp1f-max_binlog_size_basi-20080410131335-vpnlqlnriat53hdqkuoqb2m3vx7xe23q
mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result max_connect_errors_b-20080723133134-xy6alzainhlavevf-75
mysql-test/suite/sys_vars/r/max_connections_basic.result sp1f-max_connections_basi-20080410131335-om5bltdoffrm456b34rfs56t2kk5s3y2
mysql-test/suite/sys_vars/r/max_delayed_threads_basic.result sp1f-max_delayed_threads_-20080410131335-bmchtkafyotbyldudrksk4vtyjamlkqq
mysql-test/suite/sys_vars/r/max_error_count_basic.result sp1f-max_error_count_basi-20080410131335-77ntlvenprhtc3nljeldjlcxmfcclau3
mysql-test/suite/sys_vars/r/max_heap_table_size_basic_32.result max_heap_table_size_-20080723133134-xy6alzainhlavevf-77
mysql-test/suite/sys_vars/r/max_insert_delayed_threads_basic.result sp1f-max_insert_delayed_t-20080410131335-3d357cb2z7qxb6nh2hkiul7lwru7o4dh
mysql-test/suite/sys_vars/r/max_length_for_sort_data_basic.result sp1f-max_length_for_sort_-20080410131336-674cywztj2xn6exwxjvscimhbh5yrt3q
mysql-test/suite/sys_vars/r/max_prepared_stmt_count_basic.result sp1f-max_prepared_stmt_co-20080410131336-v5pupfgc37mu6gxoqziw74vj42tbtyxj
mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result sp1f-max_relay_log_size_b-20080410131336-im325vrakuu2j3govnlroylaiukz46lj
mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result max_seeks_for_key_ba-20080723133134-xy6alzainhlavevf-79
mysql-test/suite/sys_vars/r/max_sort_length_basic.result sp1f-max_sort_length_basi-20080410131336-cuacv7fdbn4r5l2mti56c33xa76tvivd
mysql-test/suite/sys_vars/r/max_sp_recursion_depth_basic.result sp1f-max_sp_recursion_dep-20080410131336-33yjywm73v2dx6zavsy6qjbbiza7jw7g
mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result max_tmp_tables_basic-20080723133134-xy6alzainhlavevf-81
mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result max_write_lock_count-20080723133134-xy6alzainhlavevf-83
mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result min_examined_row_lim-20080723133134-xy6alzainhlavevf-85
mysql-test/suite/sys_vars/r/multi_range_count_basic_32.result multi_range_count_ba-20080723133134-xy6alzainhlavevf-87
mysql-test/suite/sys_vars/r/myisam_data_pointer_size_basic.result sp1f-myisam_data_pointer_-20080410131337-b3hijnfcze4nep42qaqw7on646bgnm56
mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result myisam_max_sort_file-20080723133134-xy6alzainhlavevf-89
mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result myisam_repair_thread-20080723133134-xy6alzainhlavevf-91
mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result myisam_sort_buffer_s-20080723133134-xy6alzainhlavevf-93
mysql-test/suite/sys_vars/r/net_buffer_length_basic.result sp1f-net_buffer_length_ba-20080410131338-edtgxcnnd6b7f3zdzjyevvvzuvjomimr
mysql-test/suite/sys_vars/r/net_read_timeout_basic.result sp1f-net_read_timeout_bas-20080410131338-hzhwfednszopixfay4skmsu242fils5h
mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result net_retry_count_basi-20080723133134-xy6alzainhlavevf-95
mysql-test/suite/sys_vars/r/net_write_timeout_basic.result sp1f-net_write_timeout_ba-20080410131338-4sqgt6m7ceq7xnbnmr54ivgwbfqy3wdb
mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result sp1f-optimizer_prune_leve-20080410131338-brz2665z63rf4eg6nodaob5j7ma2inzd
mysql-test/suite/sys_vars/r/optimizer_search_depth_basic.result sp1f-optimizer_search_dep-20080410131338-xbuznceciivzxx5rcrp4kt5dqw2gdfyv
mysql-test/suite/sys_vars/r/preload_buffer_size_basic.result sp1f-preload_buffer_size_-20080410131338-ono33mttglmvvk3sqw4jwy4ak5hbxfcl
mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result query_alloc_block_si-20080723133134-xy6alzainhlavevf-97
mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result query_cache_limit_ba-20080723133134-xy6alzainhlavevf-99
mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result query_cache_min_res_-20080723133134-xy6alzainhlavevf-101
mysql-test/suite/sys_vars/r/query_cache_size_basic_32.result query_cache_size_bas-20080723133134-xy6alzainhlavevf-103
mysql-test/suite/sys_vars/r/query_cache_wlock_invalidate_func.result sp1f-query_cache_wlock_in-20080422130403-ab4dwpr4p53x4fhkpztzqz2nc33e6rfq
mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result range_alloc_block_si-20080723133134-xy6alzainhlavevf-111
mysql-test/suite/sys_vars/r/read_buffer_size_basic.result sp1f-read_buffer_size_bas-20080410131339-zbmiu6tg5scposlll3bx4powwkkqfg5v
mysql-test/suite/sys_vars/r/read_rnd_buffer_size_basic.result sp1f-read_rnd_buffer_size-20080410131339-ts3lwo6yjphv45mjaue4p35rwoyaykrl
mysql-test/suite/sys_vars/r/rpl_init_slave_func.result sp1f-rpl_init_slave_func.-20080410131339-djufckm4jdu5xgujdb5qzuy3ivizgxb5
mysql-test/suite/sys_vars/r/rpl_max_binlog_size_func.result sp1f-rpl_max_binlog_size_-20080410131340-kahmoby6ceymujrypjai7tgwz67yobbh
mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result rpl_recovery_rank_ba-20080723133134-xy6alzainhlavevf-113
mysql-test/suite/sys_vars/r/server_id_basic_32.result server_id_basic_32.r-20080723133134-xy6alzainhlavevf-115
mysql-test/suite/sys_vars/r/server_id_basic_64.result server_id_basic_64.r-20080723133134-xy6alzainhlavevf-116
mysql-test/suite/sys_vars/r/slave_net_timeout_basic.result sp1f-slave_net_timeout_ba-20080410131340-2ijrguoljoajfncj3bfqypz6cz57xde2
mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result slave_transaction_re-20080723133134-xy6alzainhlavevf-117
mysql-test/suite/sys_vars/r/slow_launch_time_basic.result sp1f-slow_launch_time_bas-20080410131340-7sovj4nxk457p2od6svnqsekq47zuawy
mysql-test/suite/sys_vars/r/slow_query_log_func.result sp1f-slow_query_log_func.-20080410131341-7dhmcgkmxkodwsuuckdws2z3liwkpepi
mysql-test/suite/sys_vars/r/sql_low_priority_updates_func.result sp1f-sql_low_priority_upd-20080410131342-pv73xn726gsw4ahjxxwisyt7t27czaqw
mysql-test/suite/sys_vars/r/sync_binlog_basic_32.result sync_binlog_basic_32-20080723133134-xy6alzainhlavevf-121
mysql-test/suite/sys_vars/r/table_definition_cache_basic.result sp1f-table_definition_cac-20080410131344-tav5ikdz7gxnpghzanztweci4cxmdoih
mysql-test/suite/sys_vars/r/table_lock_wait_timeout_basic.result sp1f-table_lock_wait_time-20080410131344-dclbbfjytvsgwwgp5z5epxefq7b74gia
mysql-test/suite/sys_vars/r/table_open_cache_basic.result sp1f-table_open_cache_bas-20080410131344-6v7qjozj4lpbbzt32he6jiu5n3c3wdt3
mysql-test/suite/sys_vars/r/tmp_table_size_basic.result tmp_table_size_basic-20081204133849-jox5xk7451aynw1h-1
mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_32.result transaction_alloc_bl-20080723133134-xy6alzainhlavevf-127
mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_32.result transaction_prealloc-20080723133134-xy6alzainhlavevf-129
mysql-test/suite/sys_vars/r/wait_timeout_basic_32.result wait_timeout_basic_3-20080723133134-xy6alzainhlavevf-131
mysql-test/suite/sys_vars/t/completion_type_func.test sp1f-completion_type_func-20080410131349-z4j46c2wq5kacrqkkfqrbiggpadpmk6j
mysql-test/suite/sys_vars/t/concurrent_insert_func.test sp1f-concurrent_insert_fu-20080410131349-3pcpctcdemk3nqfkz4vnbiulsb5fpgil
mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test sp1f-delayed_insert_limit-20080410131350-tc6jj4swwtrjpu5bu2sad3tm2ebor2xl
mysql-test/suite/sys_vars/t/innodb_max_dirty_pages_pct_func.test sp1f-innodb_max_dirty_pag-20080410131356-nferrngdghe45zwknc6rmbgomkwjbw77
mysql-test/suite/sys_vars/t/interactive_timeout_func.test sp1f-interactive_timeout_-20080410131358-zthlcqwztuoitabxj2p6fyopfnfynxfd
mysql-test/suite/sys_vars/t/query_cache_wlock_invalidate_func.test sp1f-query_cache_wlock_in-20080422130404-xwkde2dj4hbzraycwkeuybcirbdm74tq
mysql-test/suite/sys_vars/t/rpl_init_slave_func.test sp1f-rpl_init_slave_func.-20080410131404-csmwductd27vdj4dvuwfrskzeygtmcjm
mysql-test/suite/sys_vars/t/rpl_max_binlog_size_func.test sp1f-rpl_max_binlog_size_-20080410131405-ye5pfqghajpxsjef4ezz4mr3nmo6x2zs
mysql-test/suite/sys_vars/t/slow_query_log_func.test sp1f-slow_query_log_func.-20080410131407-4srve3mks754gmbujn5uam2us2guhria
mysql-test/suite/sys_vars/t/sql_low_priority_updates_func.test sp1f-sql_low_priority_upd-20080410131408-eqzq6h4x5mufb23pfu3wucvqrgy7732d
mysql-test/suite/sys_vars/t/timestamp_func.test sp1f-timestamp_func.test-20080422130404-ztfr5zznejoggtpuftus2pxitc7yawjv
mysql-test/suite/sys_vars/t/wait_timeout_func.test sp1f-wait_timeout_func.te-20080410131412-m5qstdqhz3n6kgkng722pmtpxga5mwcd
mysql-test/t/alter_table-big.test sp1f-alter_tablebig.test-20070119201558-7lwyuvdkpuq2qvwzmci542bimneqmrp2
mysql-test/t/alter_table.test sp1f-alter_table.test-20001228015635-ibytgjjpm4y57rzxqoascmr2hqujnjge
mysql-test/t/auto_increment.test sp1f-auto_increment.test-20001228015635-ev7zqhf36ny5k74jamyiyumxh66snmz6
mysql-test/t/backup.test sp1f-backup.test-20010119003620-6wyfgddzv33itmvhehfguelo7za53qbb
mysql-test/t/check.test sp1f-check.test-20010612022621-ceacg67vv7jvuryxhpyjql7e7gkfrhpi
mysql-test/t/compress.test sp1f-compress.test-20051004134342-keslwbbs4az2lnql2zehk65bbpsgmu5c
mysql-test/t/connect.test sp1f-connect.test-20021205110110-v67xayqogvmtfmfyqvhxpazso6arr3b3
mysql-test/t/consistent_snapshot.test sp1f-consistent_snapshot.-20041110165637-l52saixe24sx7qmty45kkdl567qw65se
mysql-test/t/count_distinct3.test sp1f-count_distinct3.test-20030806125751-rzf2ndfy47oockfc65npsgf7kdjh7h3d
mysql-test/t/create.test sp1f-create.test-20001228015635-grq5cruh7q3juapcegeza6mshjkzsxzo
mysql-test/t/csv_not_null.test sp1f-csv_not_null.test-20080121184902-4pdxk6kdcbsuvlifkxk75zw6hf75eua5
mysql-test/t/ctype_collate.test sp1f-ctype_collate.test-20030302121924-rb4zaznnxisnxl7sj3bdf2qnyb5mq2uh
mysql-test/t/ddl_i18n_koi8r.test sp1f-ddl_i18n_koi8r.test-20070628173450-l2wp2w535liri5p7y2vyec7jb4pdmrny
mysql-test/t/ddl_i18n_utf8.test sp1f-ddl_i18n_utf8.test-20070628173450-v2oss2i527p7rgwxdqhg2y4ciy4wrfvu
mysql-test/t/delayed.test sp1f-delayed.test-20001228015635-nfs6w3ic7qt55pnm6uld7wmmq4p73afq
mysql-test/t/dirty_close.test sp1f-dirtyclose.test-20010120054015-rhvjklh6i6xj4swxwr2jniy54lbpz5he
mysql-test/t/disabled.def sp1f-disabled.def-20050315184020-inpdp4hiogithilv62snllppjz2dcing
mysql-test/t/drop.test sp1f-drop.test-20010327172304-mta2c7rsguaouwkdkr2s2yc2mwibhhtl
mysql-test/t/events_bugs.test sp1f-events_bugs.test-20060220225212-ji5acdijogityb45kk4msvs7h5gn4ld3
mysql-test/t/events_stress.test sp1f-events_stress.test-20060215234303-esaaee62xu2j2q6kwwp2ulzpoiutyyve
mysql-test/t/explain.test sp1f-explain.test-20001228015635-wk7l25cmz54vfufovxkip3auyxz2s36e
mysql-test/t/flush_block_commit.test sp1f-flush_block_commit.t-20040820143520-5zriaxfh3i5xupxtwy6rt2g3vr2vp6ce
mysql-test/t/flush_block_commit_notembedded.test sp1f-flush_block_commit_n-20061113160642-an6kkzh55ysli5obfvhvwomhgxpgm7ks
mysql-test/t/flush_read_lock_kill.test sp1f-flush_read_lock_kill-20041202220229-cx7dgk5hubrznmauw6vq6lnvahvcwew5
mysql-test/t/fulltext.test sp1f-fulltext.test-20001228015635-snfzkwn2snrqit5pagdg2vzhcoa56eea
mysql-test/t/func_group.test sp1f-func_group.test-20001228015635-wkz277djccbddkitm63hibutxp7o4rb7
mysql-test/t/func_math.test sp1f-func_math.test-20001228015635-3uwbjza47mwy4el56ubv3dxjfi7vgdod
mysql-test/t/func_misc.test sp1f-func_misc.test-20001228015635-kayguwcdgtjnekzavvdzbsnqcdwfm36c
mysql-test/t/func_sapdb.test sp1f-func_sapdb.test-20030623075632-3osr573s2xbkl4v5xx6ocyy7cwygxmjx
mysql-test/t/func_str.test sp1f-strfunc.test-20001215085543-mqigcxue3chlbvewleghlo7v5ob5x6vj
mysql-test/t/gis.test sp1f-gis.test-20030301091631-6xbsjkakono4hhavzhol5dhxlmcms4pj
mysql-test/t/grant.test sp1f-grant.test-20020905131705-iadu5zcjshnxgtjx7qpmfrs77bl75suy
mysql-test/t/grant2.test sp1f-grant2.test-20030722200048-galnas2hib5h2ygo4rzcnpblby7awdow
mysql-test/t/grant3.test sp1f-grant3.test-20050322110327-afyko7s7c6kg2wqmwekxz7stzflyxe2s
mysql-test/t/group_by.test sp1f-group_by.test-20001228015636-5zwfyi7n5e5jsbyby7a7fvitybcefqwu
mysql-test/t/group_min_max.test sp1f-group_min_max.test-20040827133612-bbe7hj6l7byvtyxsg4iicylzflsgy6vj
mysql-test/t/index_merge_innodb.test sp1f-index_merge_innodb.t-20060816114353-jlqkbce4q5pp3yqqhbhrox4ovfz3yce4
mysql-test/t/index_merge_myisam.test sp1f-index_merge_myisam.t-20060816114353-3p3p5fylcfj754j3d3td6zs6shnc5nu3
mysql-test/t/information_schema.test sp1f-information_schema.t-20041113105545-lgutyhqnhpfgiswiwj2ykmjnolmsfq5h
mysql-test/t/information_schema_all_engines.test information_schema_a-20090408133348-au36idguotknighe-3
mysql-test/t/init_connect.test sp1f-init_connect.test-20030718091049-gjf4x75gzuoz5n2v377tyxtf2zn5oszk
mysql-test/t/innodb_mysql.test sp1f-innodb_mysql.test-20060816102624-6ymo37d3nyhvbqyzqn5ohsfuydwo426k
mysql-test/t/limit.test sp1f-limit.test-20001228015636-jhn2qbc6ahba6ctcysyd4yapy5slc44l
mysql-test/t/lock.test sp1f-lock.test-20010327100548-76bepwa6zhtmrjdgc6vpqv36ggjvnp3t
mysql-test/t/lock_multi.test sp1f-lock_multi.test-20011008015806-67rpwlsigaymaevma2l42r5edbtot3fp
mysql-test/t/lock_tables_lost_commit.test sp1f-lock_tables_lost_com-20030605150151-noy2e6egbvi5kytaffuaymsfkuuprjec
mysql-test/t/log_tables.test sp1f-log_tables.test-20060119025601-uc7nnhnxefktv3m4gigbmfslfbuwhb7q
mysql-test/t/lowercase_table3.test sp1f-lowercase_table3.tes-20040306084333-hnvnsyhtqiysn2fmfz3zkqfjy3mivo4d
mysql-test/t/merge.test sp1f-merge.test-20001228015636-6f5h74kivnnxupyw56zl2jueijh5rb3x
mysql-test/t/multi_update.test sp1f-multi_update.test-20010611232825-wkkm3vvyawipiowjzwqmkqegx6wd6aiw
mysql-test/t/myisam.test sp1f-myisam.test-20010411215653-cdmhjqbeu3xtipkauwbbirystludnac3
mysql-test/t/mysql.test sp1f-mysql.test-20050517191330-gc7zxd3q7cgw4g3pdnswpnxwqnvqhwks
mysql-test/t/mysqlbinlog.test sp1f-mysqlbinlog.test-20030924192555-wsghaldjdiuxo36sss7fu2urp47axjk7
mysql-test/t/mysqlbinlog_row_big.test mysqlbinlog_row_big.-20080820140328-lzq6n1bc06curs14-1
mysql-test/t/mysqldump-compat.test sp1f-mysqldumpcompat.test-20070831114946-4fk44jeiwpjgkrjjwx4wkqshwyl65ote
mysql-test/t/mysqldump.test sp1f-mysqldump.test-20030924111344-fh6llfm45dls3uxwugociq3shkpxsxn3
mysql-test/t/mysqltest.test sp1f-mysqltest.test-20041022024800-v3hvkzs4236l6rpunai7xttdltot7rvz
mysql-test/t/null.test sp1f-null.test-20001228015636-vkft75tlc62uvgdd2ceyfio4gfzolpn2
mysql-test/t/openssl_1.test sp1f-ssl.test-20010831211355-mk47pipvythsqcor32yidzoopgdewdo6
mysql-test/t/outfile.test sp1f-outfile.test-20001228015636-rmb62ei7gnnhcmoouc6etgbj545z3qbi
mysql-test/t/overflow.test sp1f-overflow.test-20010127223331-dzdt6n2bfbvax356cnr6xzwa6tg2y5kl
mysql-test/t/packet.test sp1f-packet.test-20030104131713-kaz5r3uejqlzdb6enf4z3ysghtrhqelp
mysql-test/t/partition.test sp1f-partition.test-20050718113034-pbo3ht3bf4gfa3mz44on3sqafyctwo35
mysql-test/t/partition_error.test sp1f-partition_error.test-20050720124214-od2aou4vzloggrqktgmbjzvuhajiukpm
mysql-test/t/partition_innodb.test sp1f-partition_innodb.tes-20060518171642-twfw23mpackjkfvorfvay4dhvjxhtbfm
mysql-test/t/pool_of_threads.test pool_of_threads.test-20090312215933-z80y68rnuw8o21yg-5
mysql-test/t/preload.test sp1f-preload.test-20030612122602-h6txo2tqlcxor6vtugtenbgp2cterxiv
mysql-test/t/ps.test sp1f-ps.test-20040405154119-4zqf6po44yypvz5foa2osprg5kb5ok63
mysql-test/t/ps_not_windows.test sp1f-ps_not_windows.test-20061117214908-5zcao5tiy3glx2i3aqg2sn4koijafp6u
mysql-test/t/query_cache_28249.test query_cache_28249.te-20081127202036-xglv4y5mfs60klqq-2
mysql-test/t/query_cache_debug.test sp1f-query_cache_debug.te-20080107200614-idvgytisf3mqftabyk43v42cynhijq5h
mysql-test/t/query_cache_notembedded.test sp1f-query_cache_notembed-20050729121335-367lhbc36drodp262lkuott3pk25wcdt
mysql-test/t/read_only.test sp1f-read_only.test-20051017085222-mkboyik63o2b6gh5n6vxpsphodcd53pf
mysql-test/t/rename.test sp1f-rename.test-20001228015636-jywefcffuau5q45htyzp6tf7ud44vqcx
mysql-test/t/row.test sp1f-row_test.test-20021115183203-gru2rt7whnv36u5any67hoerhr6ydcm5
mysql-test/t/select.test sp1f-select.test-20010103001548-tbl2ff7qehzh43qnsmf4ejhjqe66f46n
mysql-test/t/show_check.test sp1f-show_check.test-20001228015637-uv35wm2ryvpkyrr6ojhmi2nq6x6jgdod
mysql-test/t/skip_name_resolve.test sp1f-skip_name_resolve.te-20050215043241-z7igntngjzkmsulunk5usyf6xu5bnwqt
mysql-test/t/sp-security.test sp1f-spsecurity.test-20031213154048-snbqkvepvo4c45wtxld2qrc3h35ap4ty
mysql-test/t/sp-threads.test sp1f-spthreads.test-20040806161110-dvw4lrxbs3ipcait3xnzdmxzgv72vecj
mysql-test/t/sp_notembedded.test sp1f-sp_notembedded.test-20060224163411-4bxzhibgkpu3fm3zoyvknrqo3zudvvfa
mysql-test/t/ssl-big.test sp1f-sslbig.test-20070713020631-eppoh4m4e66qpihz32dgs42vdopk5qoq
mysql-test/t/ssl.test sp1f-ssl.test-20051004134342-lcbczwcy4hfxuhshzhfnxbi25sowffkn
mysql-test/t/ssl_compress.test sp1f-ssl_compress.test-20051004134343-n2wyoi2nca6ayg2yfosez6iju6kzfuwy
mysql-test/t/status.test sp1f-status.test-20010127030042-ticwsbkierixw5f5jwueeki7nrtaz5x7
mysql-test/t/strict.test sp1f-strict.test-20040928170754-7zno3sls53cshg2nfbqmd5yjafydw2ui
mysql-test/t/subselect.test sp1f-subselect.test-20020512204640-lyqrayx6uwsn7zih6y7kerkenuitzbvr
mysql-test/t/synchronization.test sp1f-synchronization.test-20040401181323-flnj6ij6mehfclmlkhujxoqse7w7kl2p
mysql-test/t/timezone_grant.test sp1f-timezone_grant.test-20050330011744-shiislhazq3k323c4h6gdhultudhr5ie
mysql-test/t/trigger-compat.test sp1f-triggercompat.test-20051110192455-toozwnsn5yadent2skc6ab5aikmmittf
mysql-test/t/type_bit_innodb.test sp1f-type_bit_innodb.test-20050412072737-iutc6g5sw5hb75g5yeksbgtqh4fvut3j
mysql-test/t/type_datetime.test sp1f-type_datetime.test-20001228015637-5xvfinb3xczp7bybaea7ohsdn6b3verp
mysql-test/t/type_float.test sp1f-type_float.test-20001228015637-qgbjks6yjkfw3la3cvdu3h3mnoe5xowk
mysql-test/t/union.test sp1f-unions_one.test-20010725122836-57cnbpjvizewgwar32kmidvvj6jsf7rz
mysql-test/t/upgrade.test sp1f-upgrade.test-20060217091845-b2j6eahffx256stwqu5aki5p55sq2bz3
mysql-test/t/user_limits.test sp1f-user_limits.test-20041229173030-4k6aktmvd46fcctk3mxgzjgvuh66mylb
mysql-test/t/variables-big.test sp1f-variablesbig.test-20070412220324-cmxsynsvdpjgbtnnanbt6pyrzz3xrnwo
mysql-test/t/variables.test sp1f-variables.test-20001228015637-u4toadkin7aellpwwz75e5h5zuutteid
mysql-test/t/variables_debug.test sp1f-variables_debug.test-20080226150357-odgq22hsyfmfw7na43dwgeuppys77opf
mysql-test/t/view.test sp1f-view.test-20040715221517-2kxb7l4itrpl4mw266xe5gby4vftru3z
mysql-test/t/view_grant.test sp1f-view_grant.test-20050404194355-y5ik7soywcms7xriyzo72dooviahc7cx
mysql-test/t/wait_timeout.test sp1f-wait_timeout.test-20051011161210-babxscfza56fio3hdz6ogbnhex4f3wgg
mysql-test/t/warnings.test sp1f-warnings.test-20001228015637-zfi7dd3hclrgbgbjruiknua2ytqtagx4
mysql-test/t/windows.test sp1f-windows.test-20050901013213-brlrkwlhdfgrngb2t563kyzyenq6gls2
mysql-test/t/xa.test sp1f-xa.test-20050403224954-lwrpyxgzlsnvmlzqdkoeuxg62yhkyecp
mysql-test/t/xml.test sp1f-xml.test-20051221130438-ugrnpkbgww4bkqvvvgtzqzaxapdziu46
mysql-test/valgrind.supp sp1f-valgrind.supp-20050406142216-yg7xhezklqhgqlc3inx36vbghodhbovy
mysys/array.c sp1f-array.c-19700101030959-2hjzb7hsesa7johw3h36rfljc6b34cdy
mysys/base64.c sp1f-base64.cpp-20040414082412-aecitplboqju7ak33w6kdeeqc2ufpnug
mysys/charset.c sp1f-charset.c-19700101030959-5zcsgxug5xkrzzvqsq6sm2nyc6has42i
mysys/default.c sp1f-default.c-19700101030959-yapqvlw42xojx5avf7fykpwrwpf3yvtz
mysys/default_modify.c sp1f-default_modify.c-20050518170801-ipy4ugnlsibilpl7xf4xy2e2snppc3k2
mysys/errors.c sp1f-errors.c-19700101030959-xfxez7oem4mhljuj3yhmevl3vohnvgh3
mysys/hash.c sp1f-hash.c-19700101030959-ny373x26eb7225kqbdbb7l23bjwr6pun
mysys/md5.c sp1f-md5.c-19700101030959-vt6i7yddwqgcaxo3adj2h37bcpdlvlb6
mysys/mf_iocache2.c sp1f-mf_iocache2.c-20001116015729-5j5qaiexq3nz2grqfr2z5ooomdhy4pl5
mysys/mf_keycache.c sp1f-mf_keycache.c-19700101030959-wtigyxt4n6zscc6ezr56wziqguyc5bds
mysys/mf_tempdir.c sp1f-mf_tempdir.c-20021008123916-arbrytgvpsafkpvufxucim72275qsor5
mysys/my_append.c sp1f-my_append.c-19700101030959-uwsnm6wxva6ldmivgkaekk7cjab2hxwz
mysys/my_compress.c sp1f-my_compress.c-19700101030959-vzixvitc7v3ffbqmhphz73hoeuaxmspm
mysys/my_conio.c sp1f-my_conio.c-20050915215609-gf6q6fqpi4chafytdgcrc4etyhidlsqn
mysys/my_copy.c sp1f-my_copy.c-19700101030959-jt6k3uijhnzawhndg4d4ocqbucojvwve
mysys/my_error.c sp1f-my_error.c-19700101030959-tqefj3qcp4dv2bpph35qixlp5scrq2g5
mysys/my_fstream.c sp1f-my_fstream.c-19700101030959-yu4udijnutiasxtbo5hxm3vsyuq4hfek
mysys/my_getopt.c sp1f-my_getopt.c-20020125212008-5ppwsdqmfhny46gxkjxph22zh3phetir
mysys/my_getwd.c sp1f-my_getwd.c-19700101030959-ht4fdo2rnevnmsum7lytizudk2f4lg2i
mysys/my_init.c sp1f-my_init.c-19700101030959-ghisog5texwet5e5x7gn35bf4c4d3v3h
mysys/my_new.cc sp1f-my_new.cc-20011209220823-p26pqwnu4mbvwbp35yzzkwq4ocvmuvvb
mysys/my_pread.c sp1f-my_pread.c-19700101030959-hcer2mfl7e5ekb4khs7nkwftifrodqd4
mysys/my_quick.c sp1f-my_quick.c-19700101030959-zzfqrygst3bhvou7nz4ycuveujeg5hqu
mysys/my_read.c sp1f-my_read.c-19700101030959-jcashdrdtce5eonvdplsyzghrzy6iek7
mysys/my_write.c sp1f-my_write.c-19700101030959-kp4tljudza7nhv6wdpjdmcdlxbuogehb
mysys/safemalloc.c sp1f-safemalloc.c-19700101030959-lzukndsycy7ifkiblxgakgzfmfevnjau
mysys/string.c sp1f-string.c-19700101030959-hz6iv4fhkqolw5thciab6fqzot5u3br4
mysys/thr_lock.c sp1f-thr_lock.c-19700101030959-igvxgo25qd7i2moc4pgo5eoth3xp34mh
mysys/thr_mutex.c sp1f-thr_mutex.c-19700101030959-ukbiyuwnq6i24hphqxuabckaeqaffe4p
netware/Makefile.am sp1f-makefile.am-20030128063823-wnb5jye7tjfortocwlygtkfa6oalmopy
plugin/Makefile.am sp1f-makefile.am-20051228120520-s2oqbjklaux4vkut7kusdyvxyp3frmow
scripts/fill_help_tables.sql sp1f-fill_help_tables.sql-20050413141357-uj2k2dquxn5t7vqrggtap5xrxnotzrts
scripts/make_binary_distribution.sh sp1f-make_binary_distribu-19700101030959-efrhw236bzgbhabfsq3ygx5pkfitz7wy
scripts/mysql_install_db.sh sp1f-mysql_install_db.sh-19700101030959-4m5n7i4aoib6psuxshrwl3qhkibxg7bp
scripts/mysql_system_tables.sql sp1f-mysql_system_tables.-20070226104923-4n5a67fuifobcyhhicfbacpsv5npohgv
scripts/mysql_system_tables_fix.sql sp1f-mysql_fix_privilege_-20030604152848-cz6lnrig5srcrvkt7d5m35bk3wsz4bdc
scripts/mysqld_multi.sh sp1f-mysql_multi_mysqld-20001207000014-ssrlcxbkjfvu6rzlxve43apfuc7dawcj
scripts/mysqld_safe.sh sp1f-safe_mysqld.sh-19700101030959-y2kdxkfqgrb5lrpd7uclbpw7ljqmzxvj
scripts/mysqldumpslow.sh sp1f-mysqldumpslow.sh-20001121162740-hcqwetjbmheoleacgb37mnsechqmen3v
server-tools/instance-manager/buffer.cc sp1f-buffer.cc-20041023073145-aao3dolyuw7jezlyrdgfk6nbxzxhy47c
server-tools/instance-manager/instance.cc sp1f-instance.cc-20041023073148-j5l6zka7gdngmk53565gyt7ss7xsmphc
server-tools/instance-manager/instance_map.cc sp1f-instance_map.cc-20041023073148-3m4k4sa6saci6vpfwohgcv6ab3kiocum
server-tools/instance-manager/options.cc sp1f-options.cc-20030816174400-modlrjxbvzx6sqjnjyy5q57arvlfhziv
server-tools/instance-manager/options.h sp1f-options.h-20030816174400-pt53i26vstups4nknmtshlkch4t3eode
server-tools/instance-manager/parse.h sp1f-parse.h-20041023073152-mgxlc3z6n43xpdywzhguv3qhtkxqudiv
sql-bench/bench-init.pl.sh sp1f-benchinit.pl.sh-19700101030959-y33ba2ynqtvduvv3xqcvc5edybs4aqqx
sql-bench/test-create.sh sp1f-testcreate.sh-19700101030959-gkaml7qwon4qyltk33bfk4e6ahlezd7g
sql-common/client.c sp1f-client.c-20030502160736-oraaciqy6jkfwygs6tqfoaxgjbi65yo7
sql-common/my_time.c sp1f-my_time.c-20040624160839-c5ljhxyjpi5czybdscnldwjexwdyx3o6
sql-common/my_user.c sp1f-my_user.c-20060110230735-jkmeamnvtps2lzonvyrxhznayzkx3ds7
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/event_data_objects.cc sp1f-event_timed.cc-20051205104456-ckd2gzuwhr4u5umqbncmt43nvv45pxmf
sql/event_parse_data.cc sp1f-event_parse_data.cc-20080509074300-6yhwe5igslhkr4c5hflifuje4uyzemtg
sql/events.cc sp1f-event.cc-20051202122200-as66hughd4bhrhu2uqbb6mpogou2yihk
sql/filesort.cc sp1f-filesort.cc-19700101030959-mfm2vmdgqqru7emm2meeecleb2q3zdso
sql/gen_lex_hash.cc sp1f-gen_lex_hash.cc-19700101030959-ihtnj4jrxjs2tzorsl4bywh4hmrzhz4n
sql/ha_partition.cc sp1f-ha_partition.cc-20050718113037-eoky4qluumb5dmdyg5z6n2fvdkgutxms
sql/handler.cc sp1f-handler.cc-19700101030959-ta6zfrlbxzucylciyro3musjsdpocrdh
sql/handler.h sp1f-handler.h-19700101030959-mumq2hpilkpgxuf22ftyv5kbilysnzvn
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_cmpfunc.cc sp1f-item_cmpfunc.cc-19700101030959-hrk7pi2n6qpwxauufnkizirsoucdcx2e
sql/item_cmpfunc.h sp1f-item_cmpfunc.h-19700101030959-pcvbjplo4e4ng7ibynfhcd6pjyem57gr
sql/item_create.cc sp1f-item_create.cc-19700101030959-zdsezbi5r5xu5syntjdzqs2d2dswsojn
sql/item_func.cc sp1f-item_func.cc-19700101030959-3wmsx76yvc25sroqpfrx2n77kqdxxn3y
sql/item_strfunc.cc sp1f-item_strfunc.cc-19700101030959-yl2pwnrngmla3nmlgiuiwrztx3iu4ffl
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_subselect.h sp1f-item_subselect.h-20020512204640-qdg77wil56cxyhtc2bjjdrppxq3wqgh3
sql/item_sum.cc sp1f-item_sum.cc-19700101030959-4woo23bi3am2t2zvsddqbpxk7xbttdkm
sql/item_sum.h sp1f-item_sum.h-19700101030959-ecgohlekwm355wxl5fv4zzq3alalbwyl
sql/item_timefunc.cc sp1f-item_timefunc.cc-19700101030959-rvvlgmw5b4ewpuuxuntrkiqimyrr5sw2
sql/item_timefunc.h sp1f-item_timefunc.h-19700101030959-o34ypz6ggolzqmhgsjnqh6inkvgugi46
sql/item_xmlfunc.cc sp1f-item_xmlfunc.cc-20051221130500-wo5dgojvjjm6mmra7fay3ri7ud5ow3yl
sql/lock.cc sp1f-lock.cc-19700101030959-lzrt5tyolna3dcihuenjh7nlicr7llt7
sql/log.cc sp1f-log.cc-19700101030959-r3hdfovek4kl6nd64ovoaknmirota6bq
sql/log_event.cc sp1f-log_event.cc-19700101030959-msmqlflsngxosswid2hpzxly5vfqdddc
sql/log_event.h sp1f-log_event.h-19700101030959-clq6ett55tcqbpys2i4cpfrdccq7j4om
sql/log_event_old.cc sp1f-log_event_old.cc-20070412135046-uu5xq4cnpwslzif6fbmj3g65x4vdkzxu
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/net_serv.cc sp1f-net_serv.cc-19700101030959-dp4s27g5nk64sph4g6g54dghekqozzmy
sql/opt_range.cc sp1f-opt_range.cc-19700101030959-afe3wtevb7zwrg4xyibt35uamov5r7ds
sql/opt_range.h sp1f-opt_range.h-19700101030959-c2qbh5kplyvzfgawblxt4md4ubdpxfdy
sql/protocol.cc sp1f-net_pkg.cc-19700101030959-7izj6xxqwgfgxuikg6t24dhcwdedbl6i
sql/protocol.h sp1f-protocol.h-20021211071747-atezjtpiyby4so64hlg3lnnrbpmdi73x
sql/rpl_mi.cc sp1f-rpl_mi.cc-20061031155149-ifponask6mps7kiynabbuk7u6tb6k6ld
sql/rpl_record.cc sp1f-rpl_record.cc-20070413125523-wuthuk5jk7uxikuioz6esll6xakdngs4
sql/rpl_rli.cc sp1f-rpl_rli.cc-20061031112305-25t7pxjrjm24qo5h65c7rml66xu3uw4p
sql/rpl_rli.h sp1f-rpl_rli.h-20051222053448-bte4b72jikihtk3zbn5jyj2vbiawtwgc
sql/rpl_utility.h sp1f-rpl_utility.h-20060503130029-u44nzzcbdenh2gegnnyzro26kbk5quw7
sql/scheduler.cc sp1f-scheduler.cc-20070223111352-qwtxm54kmlec25urietuqte6v76hjp4b
sql/set_var.cc sp1f-set_var.cc-20020723153119-nwbpg2pwpz55pfw7yfzaxt7hsszzy7y3
sql/set_var.h sp1f-set_var.h-20020723153119-2yomygq3s4xjbqvuue3cdlpbjtj3kwmk
sql/share/errmsg.txt sp1f-errmsg.txt-20041213212820-do5w642w224ja7ctyqhyl6iihdmpkzv5
sql/slave.cc sp1f-slave.cc-19700101030959-a636aj3mjxgu7fnznrg5kt77p3u2bvhh
sql/sp.cc sp1f-sp.cc-20021212121421-6xwuvxq5bku2b4yv655kp2e5gsvautd5
sql/sp_head.cc sp1f-sp_head.cc-20021208185920-jtgc5wvyqdnu2gvcdus3gazrfhxbofxd
sql/sp_head.h sp1f-sp_head.h-20021208185920-yrolg3rzamehfoejkbiai4q7njg5w6cd
sql/spatial.h sp1f-spatial.h-20020222112440-72iyz2ld6nl3qbitdm4dorewo3urjci7
sql/sql_base.cc sp1f-sql_base.cc-19700101030959-w7tul2gb2n4jzayjwlslj3ybmf3uhk6a
sql/sql_bitmap.h sp1f-sql_bitmap.h-20031024204444-g4eiad7vopzqxe2trxmt3fn3xsvnomvj
sql/sql_cache.cc sp1f-sql_cache.cc-19700101030959-74bsqwcnhboovijsogcenqana5inu6wo
sql/sql_class.cc sp1f-sql_class.cc-19700101030959-rpotnweaff2pikkozh3butrf7mv3oero
sql/sql_class.h sp1f-sql_class.h-19700101030959-jnqnbrjyqsvgncsibnumsmg3lyi7pa5s
sql/sql_connect.cc sp1f-sql_connect.cc-20070223111352-fhh5znxdfvzxuca7da3uu4olnwgkrm4n
sql/sql_crypt.cc sp1f-sql_crypt.cc-19700101030959-fr47anlofzobv4xjnsn3plpnbguuuzc2
sql/sql_delete.cc sp1f-sql_delete.cc-19700101030959-ch2a6r6ushvc2vfwxt7ehcjuplelwthr
sql/sql_error.cc sp1f-sql_error.cc-20020612210726-jkmt7oynfmn6drlgcyosdcqo6ngalhvc
sql/sql_handler.cc sp1f-sql_handler.cc-20010406221833-l4tsiortoyipmoyajcoz2tcdppvyeltl
sql/sql_insert.cc sp1f-sql_insert.cc-19700101030959-xgwqe5svnimxudzdcuitauljzz2zjk5g
sql/sql_lex.cc sp1f-sql_lex.cc-19700101030959-4pizwlu5rqkti27gcwsvxkawq6bc2kph
sql/sql_lex.h sp1f-sql_lex.h-19700101030959-sgldb2sooc7twtw5q7pgjx7qzqiaa3sn
sql/sql_list.h sp1f-sql_list.h-19700101030959-hyddr5nvvtrgbk7llgnah4i4bf6ugspn
sql/sql_load.cc sp1f-sql_load.cc-19700101030959-hoqlay5we4yslrw23xqedulkejw6a3o5
sql/sql_parse.cc sp1f-sql_parse.cc-19700101030959-ehcre3rwhv5l3mlxqhaxg36ujenxnrcd
sql/sql_plugin.cc sp1f-sql_plugin.cc-20051105112032-hrm64p6xfjq33ud6zy3uivpo7azm75a2
sql/sql_prepare.cc sp1f-sql_prepare.cc-20020612210720-gtqjjiu7vpmfxb5xct2qke7urmqcabli
sql/sql_profile.cc sp1f-sql_profile.cc-20070222150305-yv5grcusm3k2b6rrcx3kkqggtm33i3z4
sql/sql_repl.cc sp1f-sql_repl.cc-20001002032713-xqbns5ofqsaebhgi2ypcfn7nhz7nh5rp
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/sql_servers.cc sp1f-sql_servers.cc-20061202004728-casoctfc22ftno7vvvcsjbokkttngpwa
sql/sql_show.cc sp1f-sql_show.cc-19700101030959-umlljfnpplg452h7reeyqr4xnbmlkvfj
sql/sql_string.cc sp1f-sql_string.cc-19700101030959-yg6a37s5vnlpgxanuou6h2vbdmwbdxdx
sql/sql_table.cc sp1f-sql_table.cc-19700101030959-tzdkvgigezpuaxnldqh3fx2h7h2ggslu
sql/sql_trigger.cc sp1f-sql_trigger.cc-20040907122911-35k3wamrp6g7qsupxe7hisftpobcwin5
sql/sql_udf.cc sp1f-sql_udf.cc-19700101030959-tk7ysmv4dpwkfhtdovfbqe5i6uvq67ft
sql/sql_update.cc sp1f-sql_update.cc-19700101030959-edlgskfuer2ylczbw2znrr5gzfefiyw7
sql/sql_view.cc sp1f-sql_view.cc-20040715221517-nw4p4mja6nzzlvwwhzfgfqb4umxqobe4
sql/sql_yacc.yy sp1f-sql_yacc.yy-19700101030959-wvn4qyy2drpmge7kaq3dysprbhlrv27j
sql/strfunc.cc sp1f-strfunc.cc-20031103120156-rnws3w4cqo456ougd7imfvrm2shcf25b
sql/table.cc sp1f-table.cc-19700101030959-nsxtem2adyqzwe6nz4cgrpcmts3o54v7
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
sql/tztime.cc sp1f-tztime.cc-20040618061123-vlkxaelz3hkrjh7hep3f7jl7frjhlr4l
sql/udf_example.c sp1f-udf_example.cc-19700101030959-ze6kwdimrvfxkxofoegzwby3qce75brj
sql/uniques.cc sp1f-uniques.cc-20010523204707-i2pyjfbxlm45wt6zdzw3kgc7bizhaj56
sql/unireg.cc sp1f-unireg.cc-19700101030959-6a4wymwak6cmvk25gch56ctjvadrhu3v
sql/unireg.h sp1f-unireg.h-19700101030959-6vhptb2vfyo4mcjkgdm3n5uw6u64czfo
storage/Makefile.am sp1f-makefile.am-20050427083011-jlriqujeui2dc4l2de5cnr5inqi5brlh
storage/archive/azio.c sp1f-azio.c-20051223034959-gjinfrr75cpes7iyw4uasbps2bkn65rc
storage/archive/azlib.h sp1f-azlib.h-20051223035000-23fs3st2s6whj3xl4hjzfxuzsjyzgnf6
storage/archive/ha_archive.cc sp1f-ha_archive.cc-20040521001938-uy57z43drkjeirpjafdzdpvfxruqho4q
storage/csv/ha_tina.cc sp1f-ha_tina.cc-20040813035429-5pwcme2ehkkuei6gu6ueo4tfldeeyw7l
storage/csv/ha_tina.h sp1f-ha_tina.h-20040813035430-sy73tmu2k4ln7oqqdk4ggkjrc75d2x3u
storage/csv/transparent_file.cc sp1f-transparent_file.cc-20070104004917-hzwgujnm5gewgarvzftbyyjfvcs3dfs6
storage/csv/transparent_file.h sp1f-transparent_file.h-20070104004919-2donnud5qwx3v6kl6ictpch5kml6q4bs
storage/federated/ha_federated.cc sp1f-ha_federated.cc-20041211200120-gu52ex5sicbua5vtoocuki3ltllsvm2c
storage/federated/ha_federated.h sp1f-ha_federated.h-20041211200120-46qvxkyzym5wewxozk4xcbzljpbqxvlb
storage/heap/hp_write.c sp1f-hp_write.c-19700101030959-fyft5higet4kliqpr6vywernwiypjfzr
storage/innobase/btr/btr0sea.c sp1f-btr0sea.c-20010217121858-jiktpfhrq7learl2cphqdqngvcycn6xo
storage/innobase/dict/dict0load.c sp1f-dict0load.c-20010217121859-oh6j7tab357trxg3t7r3yfcglcadjrw7
storage/innobase/handler/ha_innodb.cc sp1f-ha_innobase.cc-20001205235417-rlet3ei56gdrss673dssnrqgug67lwno
storage/innobase/include/pars0pars.h sp1f-pars0pars.h-20010217121905-rdwxtjjuqhmhqplrypqylyo4jtzevaie
storage/innobase/include/rem0rec.h sp1f-rem0rec.h-20010217121906-kfztj52qvpatsajfyol6pt2ddrjqp3mk
storage/innobase/include/rem0rec.ic sp1f-rem0rec.ic-20010217121906-y7rlfjoyl7z2gpu7dasxo2x22443mxxv
storage/innobase/include/trx0roll.h sp1f-trx0roll.h-20010217121908-4a2t7mwogczn3z5gpjwi3jxlf2qxleh6
storage/innobase/lock/lock0lock.c sp1f-lock0lock.c-20010217121909-slawfq55wuitbo2ujz7h5doebhwxfmhe
storage/innobase/trx/trx0roll.c sp1f-trx0roll.c-20010217121916-oozv2mreopdvlepk2shookxvr5zkmrwd
storage/innobase/trx/trx0trx.c sp1f-trx0trx.c-20010217121916-b5g7pmqxezfo2mktfpeiapibgdhogrv2
storage/maria/CMakeLists.txt sp1f-cmakelists.txt-20060904145307-qtvi5bxnxyt7nzs4gtpsyte5vv3fwm2i
storage/maria/ha_maria.cc sp1f-ha_maria.cc-20060411134405-dmngb4v5x5fxlxhff527ud3etiutxuxk
storage/maria/ma_loghandler.c sp1f-ma_loghandler.c-20070202074129-utpzp3km4lrxldm2tdhejae2zy6zlmhq
storage/maria/ma_open.c sp1f-ma_open.c-20060411134425-47m3424sotlyyl5b3k5brotxm23ryffh
storage/maria/ma_recovery.c sp1f-recovery.c-20060427140636-kkuwrxyvjp42wmupdfbxuaro456oprrg
storage/maria/ma_rt_index.c sp1f-ma_rt_index.c-20060411134435-knxi5ehzzeww7thlm3ppvtx6v3cppiao
storage/maria/ma_test_force_start.pl ma_test_force_start.-20080602174518-bvsbjpz4t2q7tsmt-1
storage/maria/maria_chk.c sp1f-maria_chk.c-20060411134451-6qsrwbln6zdm4nv27ftocrv6iqdyhlti
storage/maria/plug.in sp1f-plug.in-20060907150715-znaalnem4ft2ccmqjfjw6ddw7ogugezm
storage/maria/trnman.c sp1f-trxman.c-20060816182810-j2a3jdxiefkpc62ad3xtioi44dbmr3dv
storage/myisam/ha_myisam.cc sp1f-ha_myisam.cc-19700101030959-7xzssylbn7zfz3nupnsw43wws6xlltsu
storage/myisam/mi_check.c sp1f-mi_check.c-19700101030959-yzbhnjgzcmqdyj4zz5codhkkw5eedp6f
storage/myisam/mi_extra.c sp1f-mi_extra.c-19700101030959-y5yhfph7parv3zdbew22zss3ho57dgvr
storage/myisam/mi_locking.c sp1f-mi_locking.c-19700101030959-27f7n7juexzv4qrhkiwcoylzh4yfibbl
storage/myisam/mi_packrec.c sp1f-mi_packrec.c-19700101030959-q5c7eimwd4jctgok3jwycbwjfq3qs6lj
storage/myisam/mi_search.c sp1f-mi_search.c-19700101030959-kdl3zf7h3booyy7xyrnnoejouhznu4cs
storage/myisam/myisamchk.c sp1f-myisamchk.c-19700101030959-hdnrqowbdb3ujo3qgjtzs6lgogwckvgc
storage/myisam/myisamdef.h sp1f-myisamdef.h-19700101030959-fzrxvpmzhzqfn5w2clasmcw7af4kanoa
storage/myisam/rt_index.c sp1f-rt_index.c-20020220101115-g73ue5aednwitjcl3kv42tqfijyn3454
storage/myisammrg/ha_myisammrg.cc sp1f-ha_myisammrg.cc-19700101030959-7fis6yttnmseasvj7uuicb6o6kghtqxf
storage/myisammrg/ha_myisammrg.h sp1f-ha_myisammrg.h-19700101030959-vr732sxpmt5sf7qkskqvopsy64oybxof
storage/myisammrg/myrg_open.c sp1f-myrg_open.c-19700101030959-vmszttys66wqrvmecn2q3yr57pnxhjox
storage/pbxt/ChangeLog changelog-20090326121724-x683v32twzr3fi0y-3
storage/pbxt/plug.in plug.in-20090326121724-x683v32twzr3fi0y-9
storage/pbxt/src/Makefile.am makefile.am-20090326121724-x683v32twzr3fi0y-13
storage/pbxt/src/cache_xt.cc cache_xt.cc-20090326121724-x683v32twzr3fi0y-16
storage/pbxt/src/cache_xt.h cache_xt.h-20090326121724-x683v32twzr3fi0y-17
storage/pbxt/src/ccutils_xt.cc ccutils_xt.cc-20090326121724-x683v32twzr3fi0y-18
storage/pbxt/src/database_xt.cc database_xt.cc-20090326121724-x683v32twzr3fi0y-20
storage/pbxt/src/datadic_xt.cc datadic_xt.cc-20090326121724-x683v32twzr3fi0y-22
storage/pbxt/src/datadic_xt.h datadic_xt.h-20090326121724-x683v32twzr3fi0y-23
storage/pbxt/src/datalog_xt.cc datalog_xt.cc-20090326121724-x683v32twzr3fi0y-24
storage/pbxt/src/datalog_xt.h datalog_xt.h-20090326121724-x683v32twzr3fi0y-25
storage/pbxt/src/discover_xt.cc discover_xt.cc-20090326121724-x683v32twzr3fi0y-26
storage/pbxt/src/filesys_xt.cc filesys_xt.cc-20090326121724-x683v32twzr3fi0y-28
storage/pbxt/src/filesys_xt.h filesys_xt.h-20090326121724-x683v32twzr3fi0y-29
storage/pbxt/src/ha_pbxt.cc ha_pbxt.cc-20090326121724-x683v32twzr3fi0y-30
storage/pbxt/src/ha_pbxt.h ha_pbxt.h-20090326121724-x683v32twzr3fi0y-31
storage/pbxt/src/ha_xtsys.cc ha_xtsys.cc-20090326121724-x683v32twzr3fi0y-32
storage/pbxt/src/ha_xtsys.h ha_xtsys.h-20090326121724-x683v32twzr3fi0y-33
storage/pbxt/src/hashtab_xt.cc hashtab_xt.cc-20090326121724-x683v32twzr3fi0y-34
storage/pbxt/src/heap_xt.cc heap_xt.cc-20090326121724-x683v32twzr3fi0y-36
storage/pbxt/src/heap_xt.h heap_xt.h-20090326121724-x683v32twzr3fi0y-37
storage/pbxt/src/index_xt.cc index_xt.cc-20090326121724-x683v32twzr3fi0y-38
storage/pbxt/src/index_xt.h index_xt.h-20090326121724-x683v32twzr3fi0y-39
storage/pbxt/src/lock_xt.cc lock_xt.cc-20090326121724-x683v32twzr3fi0y-42
storage/pbxt/src/lock_xt.h lock_xt.h-20090326121724-x683v32twzr3fi0y-43
storage/pbxt/src/locklist_xt.cc locklist_xt.cc-20090326121724-x683v32twzr3fi0y-44
storage/pbxt/src/locklist_xt.h locklist_xt.h-20090326121724-x683v32twzr3fi0y-45
storage/pbxt/src/memory_xt.cc memory_xt.cc-20090326121724-x683v32twzr3fi0y-46
storage/pbxt/src/memory_xt.h memory_xt.h-20090326121724-x683v32twzr3fi0y-47
storage/pbxt/src/myxt_xt.cc myxt_xt.cc-20090326121724-x683v32twzr3fi0y-48
storage/pbxt/src/myxt_xt.h myxt_xt.h-20090326121724-x683v32twzr3fi0y-49
storage/pbxt/src/pbms.h pbms.h-20090326121724-x683v32twzr3fi0y-50
storage/pbxt/src/pthread_xt.cc pthread_xt.cc-20090326121724-x683v32twzr3fi0y-51
storage/pbxt/src/restart_xt.cc restart_xt.cc-20090326121724-x683v32twzr3fi0y-53
storage/pbxt/src/restart_xt.h restart_xt.h-20090326121724-x683v32twzr3fi0y-54
storage/pbxt/src/sortedlist_xt.cc sortedlist_xt.cc-20090326121724-x683v32twzr3fi0y-55
storage/pbxt/src/strutil_xt.cc strutil_xt.cc-20090326121724-x683v32twzr3fi0y-59
storage/pbxt/src/systab_xt.cc systab_xt.cc-20090326121724-x683v32twzr3fi0y-61
storage/pbxt/src/systab_xt.h systab_xt.h-20090326121724-x683v32twzr3fi0y-62
storage/pbxt/src/tabcache_xt.cc tabcache_xt.cc-20090326121724-x683v32twzr3fi0y-63
storage/pbxt/src/tabcache_xt.h tabcache_xt.h-20090326121724-x683v32twzr3fi0y-64
storage/pbxt/src/table_xt.cc table_xt.cc-20090326121724-x683v32twzr3fi0y-65
storage/pbxt/src/table_xt.h table_xt.h-20090326121724-x683v32twzr3fi0y-66
storage/pbxt/src/thread_xt.cc thread_xt.cc-20090326121724-x683v32twzr3fi0y-67
storage/pbxt/src/thread_xt.h thread_xt.h-20090326121724-x683v32twzr3fi0y-68
storage/pbxt/src/trace_xt.cc trace_xt.cc-20090326121724-x683v32twzr3fi0y-69
storage/pbxt/src/trace_xt.h trace_xt.h-20090326121724-x683v32twzr3fi0y-70
storage/pbxt/src/util_xt.cc util_xt.cc-20090326121724-x683v32twzr3fi0y-71
storage/pbxt/src/xaction_xt.cc xaction_xt.cc-20090326121724-x683v32twzr3fi0y-74
storage/pbxt/src/xaction_xt.h xaction_xt.h-20090326121724-x683v32twzr3fi0y-75
storage/pbxt/src/xactlog_xt.cc xactlog_xt.cc-20090326121724-x683v32twzr3fi0y-76
storage/pbxt/src/xactlog_xt.h xactlog_xt.h-20090326121724-x683v32twzr3fi0y-77
storage/pbxt/src/xt_config.h xt_config.h-20090326121724-x683v32twzr3fi0y-78
storage/pbxt/src/xt_defs.h xt_defs.h-20090326121724-x683v32twzr3fi0y-79
storage/pbxt/src/xt_errno.h xt_errno.h-20090326121724-x683v32twzr3fi0y-80
strings/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-zpsnblto443qz4bb5okg23rsacehr4d2
strings/Makefile.am sp1f-makefile.am-19700101030959-jfitkanzc3r4h2otoyaaprgqn7muf4ux
strings/conf_to_src.c sp1f-conf_to_src.c-19700101030959-nvuvqe3jufdn2xi2v44sqkqtdpbbntah
strings/ctype-extra.c sp1f-ctypeextra.c-20030129110807-75c3aglmos72axutct436sid7rpl7dpe
strings/ctype-sjis.c sp1f-ctypesjis.c-19700101030959-wee5mqv7qwhcc4x7jwhrmnyvzq3xfa5d
strings/ctype-uca.c sp1f-ctypeuca.c-20040324121604-kwaskdasqzdrufymlf27j4gl3gwdy5fq
strings/ctype-ucs2.c sp1f-ctypeucs2.c-20030521102942-3fr4x6ti6jw6vqwdh7byhlxpu6oivdnn
strings/ctype-utf8.c sp1f-ctypeutf8.c-20020328133143-7ldgrkcon3ejrongwc7hy4m63qddjsal
strings/ctype.c sp1f-ctype.c-19700101030959-kcyj7oyype5kohlxym7bzzw5go5qcmh4
strings/decimal.c sp1f-decimal.c-20041018120639-qqm4oeadwhbdhuxgwlc657il4tu44n6m
strings/my_vsnprintf.c sp1f-my_vsnprintf.c-19700101030959-tpt7gim7wclzegsmsqqysncmxhlmjrhp
support-files/MacOSX/ReadMe.txt sp1f-readme.txt-20071102002932-oqaazdag65tr7zn4vqtp6h2aywxyg754
support-files/Makefile.am sp1f-makefile.am-19700101030959-277rra4r5vvtfge67hzsdpbpm2puxyqy
support-files/build-tags sp1f-buildtags-20020120021651-m24xl4ywynpwgh3jn7hgrhntp5i6doq7
support-files/compiler_warnings.supp sp1f-disabled_compiler_wa-20070110170439-wzgdkamsch2nrkgvcp2hytmquqeorohi
support-files/my-huge.cnf.sh sp1f-myhuge.cnf.sh-19700101030959-lxpesdge7i55uifv6h5er3qwahcw2gcd
support-files/my-large.cnf.sh sp1f-mylarge.cnf.sh-19700101030959-m6uuqs2wgt3r2vovo5bult4jzgodwav5
support-files/my-medium.cnf.sh sp1f-mymedium.cnf.sh-19700101030959-fef6lzd4w4yguzr5aseorrgv6btttf3x
support-files/my-small.cnf.sh sp1f-mysmall.cnf.sh-19700101030959-mcqqfzzmkes6ywvy6ud3o7pvn46uifjp
support-files/mysql.spec.sh sp1f-mysql.spec.sh-19700101030959-man6e3acwxvf62bdqvkpcpsvdtokf3ff
tests/bug25714.c sp1f-bug25714.c-20070724063540-e7lor3bnfvw2thqu3hi3hk34nbgi2ey6
tests/mysql_client_test.c sp1f-client_test.c-20020614002636-eqy2zzksgelocknwbbogfuwxfwqy7q5x
unittest/mysys/waiting_threads-t.c waiting_threadst.c-20080623170213-r8baqa2porlpxzq1-5
netware/BUILD/nwbuild sp1f-nwbootstrap-20030304040435-rz4o5ic6onmenwlgmz2ggjccc2plsxlk
Diff too large for email (427157 lines, the limit is 1000).
1
0
[Maria-developers] Rev 2754: merge in file:///Users/bell/maria/bzr/work-maria-5.1-querycache-merge/
by sanja@askmonty.org 06 Oct '09
by sanja@askmonty.org 06 Oct '09
06 Oct '09
At file:///Users/bell/maria/bzr/work-maria-5.1-querycache-merge/
------------------------------------------------------------
revno: 2754 [merge]
revision-id: sanja(a)askmonty.org-20091006100053-mu2ek7z8rfxap4k3
parent: knielsen(a)knielsen-hq.org-20091006064645-h8280o8hmtouexzi
parent: sanja(a)askmonty.org-20091006065722-ro0p0euffbtl4j05
committer: sanja(a)askmonty.org
branch nick: work-maria-5.1-querycache-merge
timestamp: Tue 2009-10-06 13:00:53 +0300
message:
merge
added:
BUILD/compile-pentium-debug-max-no-qc compilepentiumdebugm-20090923065542-7a3x9z3bgfxn1rac-1
modified:
BUILD/SETUP.sh sp1f-setup.sh-20001218212418-itvzddls4bsqffggcsjklbawdmaxdhde
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
storage/maria/ha_maria.cc sp1f-ha_maria.cc-20060411134405-dmngb4v5x5fxlxhff527ud3etiutxuxk
storage/maria/ma_state.c sp1f-ma_state.c-20080529153331-ttwxiq5ksyib6sdrdsdl2lnbbm362lwh
storage/maria/maria_def.h sp1f-maria_def.h-20060411134454-urdx4joxwcwzxbmltpzejn53y2rgjs44
storage/myisam/ha_myisam.cc sp1f-ha_myisam.cc-19700101030959-7xzssylbn7zfz3nupnsw43wws6xlltsu
storage/myisam/mi_locking.c sp1f-mi_locking.c-19700101030959-27f7n7juexzv4qrhkiwcoylzh4yfibbl
storage/myisam/myisamdef.h sp1f-myisamdef.h-19700101030959-fzrxvpmzhzqfn5w2clasmcw7af4kanoa
=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh 2009-09-29 19:02:48 +0000
+++ b/BUILD/SETUP.sh 2009-10-06 10:00:53 +0000
@@ -172,6 +172,7 @@
max_no_embedded_configs="$SSL_LIBRARY --with-plugins=max"
+max_no_qc_configs="$SSL_LIBRARY --with-plugins=max --without-query-cache"
max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent"
max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server --with-libevent"
# Disable NDB in maria max builds
=== added file 'BUILD/compile-pentium-debug-max-no-qc'
--- a/BUILD/compile-pentium-debug-max-no-qc 1970-01-01 00:00:00 +0000
+++ b/BUILD/compile-pentium-debug-max-no-qc 2009-10-06 06:57:22 +0000
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+path=`dirname $0`
+. "$path/SETUP.sh"
+
+extra_flags="$pentium_cflags $debug_cflags"
+extra_configs="$pentium_configs $debug_configs $max_no_qc_configs"
+
+. "$path/FINISH.sh"
=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h 2009-09-15 10:46:35 +0000
+++ b/sql/mysql_priv.h 2009-10-06 10:00:53 +0000
@@ -947,7 +947,6 @@
#define query_cache_abort(A)
#define query_cache_end_of_result(A)
-#define query_cache_invalidate_by_MyISAM_filename_ref NULL
#define query_cache_maybe_disabled(T) 1
#define query_cache_is_cacheable_query(L) 0
#endif /*HAVE_QUERY_CACHE*/
=== modified file 'storage/maria/ha_maria.cc'
--- a/storage/maria/ha_maria.cc 2009-09-07 20:50:10 +0000
+++ b/storage/maria/ha_maria.cc 2009-10-06 10:00:53 +0000
@@ -28,6 +28,7 @@
#include <my_bit.h>
#include "ha_maria.h"
#include "trnman_public.h"
+#include "trnman.h"
C_MODE_START
#include "maria_def.h"
@@ -918,6 +919,8 @@
if (!(file= maria_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (test_if_locked & (HA_OPEN_IGNORE_IF_LOCKED | HA_OPEN_TMP_TABLE))
VOID(maria_extra(file, HA_EXTRA_NO_WAIT_LOCK, 0));
@@ -3238,6 +3241,9 @@
*/
*engine_data= 0;
+ if (file->s->now_transactional && file->s->have_versioning)
+ return (file->trn->trid >= file->s->state.last_change_trn);
+
/*
If a concurrent INSERT has happened just before the currently processed
SELECT statement, the total size of the table is unknown.
=== modified file 'storage/maria/ma_state.c'
--- a/storage/maria/ma_state.c 2008-12-27 02:05:16 +0000
+++ b/storage/maria/ma_state.c 2009-10-06 06:57:22 +0000
@@ -318,6 +318,13 @@
DBUG_ASSERT(!info->s->base.born_transactional);
share->state.state= *info->state;
info->state= &share->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->s->data_file_name.str));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->s->data_file_name.str);
+#endif
+
}
info->append_insert_at_end= 0;
}
@@ -469,6 +476,8 @@
tables->state_start.checksum);
history->trid= trn->commit_trid;
+ share->state.last_change_trn= trn->commit_trid;
+
if (history->next)
{
/* Remove not visible states */
=== modified file 'storage/maria/maria_def.h'
--- a/storage/maria/maria_def.h 2009-02-19 09:01:25 +0000
+++ b/storage/maria/maria_def.h 2009-10-06 06:57:22 +0000
@@ -83,6 +83,7 @@
pgcache_page_no_t first_bitmap_with_space;
ulonglong auto_increment;
TrID create_trid; /* Minum trid for file */
+ TrID last_change_trn; /* selfdescriptive */
ulong update_count; /* Updated for each write lock */
ulong status;
double *rec_per_key_part;
@@ -337,7 +338,10 @@
/* Mapings to read/write the data file */
size_t (*file_read)(MARIA_HA *, uchar *, size_t, my_off_t, myf);
size_t (*file_write)(MARIA_HA *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ /* query cache invalidator for merged tables */
+ invalidator_by_filename invalidator;
+ /* query cache invalidator for changing state */
+ invalidator_by_filename chst_invalidator;
my_off_t key_del_current; /* delete links for index pages */
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
=== modified file 'storage/myisam/ha_myisam.cc'
--- a/storage/myisam/ha_myisam.cc 2009-09-07 20:50:10 +0000
+++ b/storage/myisam/ha_myisam.cc 2009-10-06 10:00:53 +0000
@@ -690,6 +690,9 @@
if (!(file=mi_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (!table->s->tmp_table) /* No need to perform a check for tmp table */
{
if ((my_errno= table2myisam(table, &keyinfo, &recinfo, &recs)))
=== modified file 'storage/myisam/mi_locking.c'
--- a/storage/myisam/mi_locking.c 2009-09-03 14:05:38 +0000
+++ b/storage/myisam/mi_locking.c 2009-10-06 06:57:22 +0000
@@ -329,6 +329,12 @@
#endif
info->s->state.state= *info->state;
info->state= &info->s->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->filename));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->filename);
+#endif
}
info->append_insert_at_end= 0;
=== modified file 'storage/myisam/myisamdef.h'
--- a/storage/myisam/myisamdef.h 2009-04-25 09:04:38 +0000
+++ b/storage/myisam/myisamdef.h 2009-10-06 06:57:22 +0000
@@ -190,7 +190,10 @@
const uchar *record, my_off_t pos);
size_t (*file_read) (MI_INFO *, uchar *, size_t, my_off_t, myf);
size_t (*file_write) (MI_INFO *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ /* query cache invalidator for merged tables */
+ invalidator_by_filename invalidator;
+ /* query cache invalidator for changing state */
+ invalidator_by_filename chst_invalidator;
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
ulong last_version; /* Version on start */
1
0
[Maria-developers] Updated (by Sanja): Avoid flushing keycache to disk in case of DROPping table (53)
by worklog-noreply@askmonty.org 06 Oct '09
by worklog-noreply@askmonty.org 06 Oct '09
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Avoid flushing keycache to disk in case of DROPping table
CREATION DATE..: Thu, 27 Aug 2009, 11:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Sanja
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 53 (http://askmonty.org/worklog/?tid=53)
VERSION........: Server-5.0
STATUS.........: Complete
PRIORITY.......: 60
WORKED HOURS...: 14
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 24
PROGRESS NOTES:
-=-=(Sanja - Tue, 06 Oct 2009, 12:30)=-=-
Status updated.
--- /tmp/wklog.53.old.27223 2009-10-06 12:30:38.000000000 +0300
+++ /tmp/wklog.53.new.27223 2009-10-06 12:30:38.000000000 +0300
@@ -1 +1 @@
-Assigned
+Complete
-=-=(Sanja - Tue, 06 Oct 2009, 12:30)=-=-
After review fixes and tests.
Worked 1 hour and estimate 0 hours remain (original estimate decreased by 10 hours).
-=-=(Sanja - Thu, 03 Sep 2009, 19:43)=-=-
New patch and its testing
Worked 8 hours and estimate 11 hours remain (original estimate unchanged).
-=-=(Sanja - Tue, 01 Sep 2009, 15:20)=-=-
moving to 5.0 part1
Worked 2 hours and estimate 19 hours remain (original estimate unchanged).
-=-=(Sanja - Tue, 01 Sep 2009, 15:19)=-=-
first patch
Worked 3 hours and estimate 21 hours remain (original estimate unchanged).
-=-=(Sanja - Thu, 27 Aug 2009, 11:15)=-=-
High-Level Specification modified.
--- /tmp/wklog.53.old.23490 2009-08-27 11:15:24.000000000 +0300
+++ /tmp/wklog.53.new.23490 2009-08-27 11:15:24.000000000 +0300
@@ -1 +1,3 @@
-
+To make special handler call 'prepare to drop' which mark table as changed (in
+case of server crash just before removing table it force table to be repaired)
+then flush keycache without writing on disk.
DESCRIPTION:
When DROP TABLE executed keycache flushed to disk before removing table which is
wasting of resources. So better to have table removed from keycache without
writing changes on disk.
HIGH-LEVEL SPECIFICATION:
To make special handler call 'prepare to drop' which mark table as changed (in
case of server crash just before removing table it force table to be repaired)
then flush keycache without writing on disk.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Sanja): Avoid flushing keycache to disk in case of DROPping table (53)
by worklog-noreply@askmonty.org 06 Oct '09
by worklog-noreply@askmonty.org 06 Oct '09
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Avoid flushing keycache to disk in case of DROPping table
CREATION DATE..: Thu, 27 Aug 2009, 11:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Sanja
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 53 (http://askmonty.org/worklog/?tid=53)
VERSION........: Server-5.0
STATUS.........: Complete
PRIORITY.......: 60
WORKED HOURS...: 14
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 24
PROGRESS NOTES:
-=-=(Sanja - Tue, 06 Oct 2009, 12:30)=-=-
Status updated.
--- /tmp/wklog.53.old.27223 2009-10-06 12:30:38.000000000 +0300
+++ /tmp/wklog.53.new.27223 2009-10-06 12:30:38.000000000 +0300
@@ -1 +1 @@
-Assigned
+Complete
-=-=(Sanja - Tue, 06 Oct 2009, 12:30)=-=-
After review fixes and tests.
Worked 1 hour and estimate 0 hours remain (original estimate decreased by 10 hours).
-=-=(Sanja - Thu, 03 Sep 2009, 19:43)=-=-
New patch and its testing
Worked 8 hours and estimate 11 hours remain (original estimate unchanged).
-=-=(Sanja - Tue, 01 Sep 2009, 15:20)=-=-
moving to 5.0 part1
Worked 2 hours and estimate 19 hours remain (original estimate unchanged).
-=-=(Sanja - Tue, 01 Sep 2009, 15:19)=-=-
first patch
Worked 3 hours and estimate 21 hours remain (original estimate unchanged).
-=-=(Sanja - Thu, 27 Aug 2009, 11:15)=-=-
High-Level Specification modified.
--- /tmp/wklog.53.old.23490 2009-08-27 11:15:24.000000000 +0300
+++ /tmp/wklog.53.new.23490 2009-08-27 11:15:24.000000000 +0300
@@ -1 +1,3 @@
-
+To make special handler call 'prepare to drop' which mark table as changed (in
+case of server crash just before removing table it force table to be repaired)
+then flush keycache without writing on disk.
DESCRIPTION:
When DROP TABLE executed keycache flushed to disk before removing table which is
wasting of resources. So better to have table removed from keycache without
writing changes on disk.
HIGH-LEVEL SPECIFICATION:
To make special handler call 'prepare to drop' which mark table as changed (in
case of server crash just before removing table it force table to be repaired)
then flush keycache without writing on disk.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Progress (by Sanja): Avoid flushing keycache to disk in case of DROPping table (53)
by worklog-noreply@askmonty.org 06 Oct '09
by worklog-noreply@askmonty.org 06 Oct '09
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Avoid flushing keycache to disk in case of DROPping table
CREATION DATE..: Thu, 27 Aug 2009, 11:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Sanja
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 53 (http://askmonty.org/worklog/?tid=53)
VERSION........: Server-5.0
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 14
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 24
PROGRESS NOTES:
-=-=(Sanja - Tue, 06 Oct 2009, 12:30)=-=-
After review fixes and tests.
Worked 1 hour and estimate 0 hours remain (original estimate decreased by 10 hours).
-=-=(Sanja - Thu, 03 Sep 2009, 19:43)=-=-
New patch and its testing
Worked 8 hours and estimate 11 hours remain (original estimate unchanged).
-=-=(Sanja - Tue, 01 Sep 2009, 15:20)=-=-
moving to 5.0 part1
Worked 2 hours and estimate 19 hours remain (original estimate unchanged).
-=-=(Sanja - Tue, 01 Sep 2009, 15:19)=-=-
first patch
Worked 3 hours and estimate 21 hours remain (original estimate unchanged).
-=-=(Sanja - Thu, 27 Aug 2009, 11:15)=-=-
High-Level Specification modified.
--- /tmp/wklog.53.old.23490 2009-08-27 11:15:24.000000000 +0300
+++ /tmp/wklog.53.new.23490 2009-08-27 11:15:24.000000000 +0300
@@ -1 +1,3 @@
-
+To make special handler call 'prepare to drop' which mark table as changed (in
+case of server crash just before removing table it force table to be repaired)
+then flush keycache without writing on disk.
DESCRIPTION:
When DROP TABLE executed keycache flushed to disk before removing table which is
wasting of resources. So better to have table removed from keycache without
writing changes on disk.
HIGH-LEVEL SPECIFICATION:
To make special handler call 'prepare to drop' which mark table as changed (in
case of server crash just before removing table it force table to be repaired)
then flush keycache without writing on disk.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Progress (by Sanja): Avoid flushing keycache to disk in case of DROPping table (53)
by worklog-noreply@askmonty.org 06 Oct '09
by worklog-noreply@askmonty.org 06 Oct '09
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Avoid flushing keycache to disk in case of DROPping table
CREATION DATE..: Thu, 27 Aug 2009, 11:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Sanja
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 53 (http://askmonty.org/worklog/?tid=53)
VERSION........: Server-5.0
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 14
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 24
PROGRESS NOTES:
-=-=(Sanja - Tue, 06 Oct 2009, 12:30)=-=-
After review fixes and tests.
Worked 1 hour and estimate 0 hours remain (original estimate decreased by 10 hours).
-=-=(Sanja - Thu, 03 Sep 2009, 19:43)=-=-
New patch and its testing
Worked 8 hours and estimate 11 hours remain (original estimate unchanged).
-=-=(Sanja - Tue, 01 Sep 2009, 15:20)=-=-
moving to 5.0 part1
Worked 2 hours and estimate 19 hours remain (original estimate unchanged).
-=-=(Sanja - Tue, 01 Sep 2009, 15:19)=-=-
first patch
Worked 3 hours and estimate 21 hours remain (original estimate unchanged).
-=-=(Sanja - Thu, 27 Aug 2009, 11:15)=-=-
High-Level Specification modified.
--- /tmp/wklog.53.old.23490 2009-08-27 11:15:24.000000000 +0300
+++ /tmp/wklog.53.new.23490 2009-08-27 11:15:24.000000000 +0300
@@ -1 +1,3 @@
-
+To make special handler call 'prepare to drop' which mark table as changed (in
+case of server crash just before removing table it force table to be repaired)
+then flush keycache without writing on disk.
DESCRIPTION:
When DROP TABLE executed keycache flushed to disk before removing table which is
wasting of resources. So better to have table removed from keycache without
writing changes on disk.
HIGH-LEVEL SPECIFICATION:
To make special handler call 'prepare to drop' which mark table as changed (in
case of server crash just before removing table it force table to be repaired)
then flush keycache without writing on disk.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: October
CREATION DATE..: Tue, 06 Oct 2009, 11:49
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-BackLog
TASK ID........: 54 (http://askmonty.org/worklog/?tid=54)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 9
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Hingo - Tue, 06 Oct 2009, 11:51)=-=-
Preparing first draft of a project plan
Discuss with Igor and Hakan
Worked 6 hours and estimate 0 hours remain (original estimate increased by 6 hours).
-=-=(Hingo - Tue, 06 Oct 2009, 11:50)=-=-
Phone call to discuss technical issues with customer
Monty, Igor, Henrik 1 hour each.
Worked 3 hours and estimate 0 hours remain (original estimate increased by 3 hours).
DESCRIPTION:
This worklog is currently used only to track time for a MariaDB project that is
not yet public, but that will become a MariaDB project at some point.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: October
CREATION DATE..: Tue, 06 Oct 2009, 11:49
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-BackLog
TASK ID........: 54 (http://askmonty.org/worklog/?tid=54)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 9
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Hingo - Tue, 06 Oct 2009, 11:51)=-=-
Preparing first draft of a project plan
Discuss with Igor and Hakan
Worked 6 hours and estimate 0 hours remain (original estimate increased by 6 hours).
-=-=(Hingo - Tue, 06 Oct 2009, 11:50)=-=-
Phone call to discuss technical issues with customer
Monty, Igor, Henrik 1 hour each.
Worked 3 hours and estimate 0 hours remain (original estimate increased by 3 hours).
DESCRIPTION:
This worklog is currently used only to track time for a MariaDB project that is
not yet public, but that will become a MariaDB project at some point.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: October
CREATION DATE..: Tue, 06 Oct 2009, 11:49
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-BackLog
TASK ID........: 54 (http://askmonty.org/worklog/?tid=54)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 3
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Hingo - Tue, 06 Oct 2009, 11:50)=-=-
Phone call to discuss technical issues with customer
Monty, Igor, Henrik 1 hour each.
Worked 3 hours and estimate 0 hours remain (original estimate increased by 3 hours).
DESCRIPTION:
This worklog is currently used only to track time for a MariaDB project that is
not yet public, but that will become a MariaDB project at some point.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: October
CREATION DATE..: Tue, 06 Oct 2009, 11:49
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-BackLog
TASK ID........: 54 (http://askmonty.org/worklog/?tid=54)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 3
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Hingo - Tue, 06 Oct 2009, 11:50)=-=-
Phone call to discuss technical issues with customer
Monty, Igor, Henrik 1 hour each.
Worked 3 hours and estimate 0 hours remain (original estimate increased by 3 hours).
DESCRIPTION:
This worklog is currently used only to track time for a MariaDB project that is
not yet public, but that will become a MariaDB project at some point.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: October
CREATION DATE..: Tue, 06 Oct 2009, 11:49
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-BackLog
TASK ID........: 54 (http://askmonty.org/worklog/?tid=54)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
DESCRIPTION:
This worklog is currently used only to track time for a MariaDB project that is
not yet public, but that will become a MariaDB project at some point.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
06 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: October
CREATION DATE..: Tue, 06 Oct 2009, 11:49
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-BackLog
TASK ID........: 54 (http://askmonty.org/worklog/?tid=54)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
DESCRIPTION:
This worklog is currently used only to track time for a MariaDB project that is
not yet public, but that will become a MariaDB project at some point.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Rev 2731: BUG#39249 Maria:query cache returns out of date results in file:///Users/bell/maria/bzr/work-maria-5.1-querycache/
by sanja@askmonty.org 06 Oct '09
by sanja@askmonty.org 06 Oct '09
06 Oct '09
At file:///Users/bell/maria/bzr/work-maria-5.1-querycache/
------------------------------------------------------------
revno: 2731
revision-id: sanja(a)askmonty.org-20091006065722-ro0p0euffbtl4j05
parent: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
committer: sanja(a)askmonty.org
branch nick: work-maria-5.1-querycache
timestamp: Tue 2009-10-06 09:57:22 +0300
message:
BUG#39249 Maria:query cache returns out of date results
BUG#41098 Query Cache returns wrong result with concurent insert
=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh 2009-05-11 15:31:30 +0000
+++ b/BUILD/SETUP.sh 2009-10-06 06:57:22 +0000
@@ -172,6 +172,7 @@
max_no_embedded_configs="$SSL_LIBRARY --with-plugins=max"
+max_no_qc_configs="$SSL_LIBRARY --with-plugins=max --without-query-cache"
max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent"
max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server -with-libevent"
# Disable NDB in maria max builds
=== added file 'BUILD/compile-pentium-debug-max-no-qc'
--- a/BUILD/compile-pentium-debug-max-no-qc 1970-01-01 00:00:00 +0000
+++ b/BUILD/compile-pentium-debug-max-no-qc 2009-10-06 06:57:22 +0000
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+path=`dirname $0`
+. "$path/SETUP.sh"
+
+extra_flags="$pentium_cflags $debug_cflags"
+extra_configs="$pentium_configs $debug_configs $max_no_qc_configs"
+
+. "$path/FINISH.sh"
=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h 2009-09-03 14:56:46 +0000
+++ b/sql/mysql_priv.h 2009-10-06 06:57:22 +0000
@@ -933,7 +933,6 @@
#define query_cache_abort(A)
#define query_cache_end_of_result(A)
-#define query_cache_invalidate_by_MyISAM_filename_ref NULL
#define query_cache_maybe_disabled(T) 1
#define query_cache_is_cacheable_query(L) 0
#endif /*HAVE_QUERY_CACHE*/
=== modified file 'storage/maria/ha_maria.cc'
--- a/storage/maria/ha_maria.cc 2009-06-29 21:03:30 +0000
+++ b/storage/maria/ha_maria.cc 2009-10-06 06:57:22 +0000
@@ -28,6 +28,7 @@
#include <my_bit.h>
#include "ha_maria.h"
#include "trnman_public.h"
+#include "trnman.h"
C_MODE_START
#include "maria_def.h"
@@ -907,6 +908,8 @@
if (!(file= maria_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (test_if_locked & (HA_OPEN_IGNORE_IF_LOCKED | HA_OPEN_TMP_TABLE))
VOID(maria_extra(file, HA_EXTRA_NO_WAIT_LOCK, 0));
@@ -3227,6 +3230,9 @@
*/
*engine_data= 0;
+ if (file->s->now_transactional && file->s->have_versioning)
+ return (file->trn->trid >= file->s->state.last_change_trn);
+
/*
If a concurrent INSERT has happened just before the currently processed
SELECT statement, the total size of the table is unknown.
=== modified file 'storage/maria/ma_state.c'
--- a/storage/maria/ma_state.c 2008-12-27 02:05:16 +0000
+++ b/storage/maria/ma_state.c 2009-10-06 06:57:22 +0000
@@ -318,6 +318,13 @@
DBUG_ASSERT(!info->s->base.born_transactional);
share->state.state= *info->state;
info->state= &share->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->s->data_file_name.str));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->s->data_file_name.str);
+#endif
+
}
info->append_insert_at_end= 0;
}
@@ -469,6 +476,8 @@
tables->state_start.checksum);
history->trid= trn->commit_trid;
+ share->state.last_change_trn= trn->commit_trid;
+
if (history->next)
{
/* Remove not visible states */
=== modified file 'storage/maria/maria_def.h'
--- a/storage/maria/maria_def.h 2009-02-19 09:01:25 +0000
+++ b/storage/maria/maria_def.h 2009-10-06 06:57:22 +0000
@@ -83,6 +83,7 @@
pgcache_page_no_t first_bitmap_with_space;
ulonglong auto_increment;
TrID create_trid; /* Minum trid for file */
+ TrID last_change_trn; /* selfdescriptive */
ulong update_count; /* Updated for each write lock */
ulong status;
double *rec_per_key_part;
@@ -337,7 +338,10 @@
/* Mapings to read/write the data file */
size_t (*file_read)(MARIA_HA *, uchar *, size_t, my_off_t, myf);
size_t (*file_write)(MARIA_HA *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ /* query cache invalidator for merged tables */
+ invalidator_by_filename invalidator;
+ /* query cache invalidator for changing state */
+ invalidator_by_filename chst_invalidator;
my_off_t key_del_current; /* delete links for index pages */
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
=== modified file 'storage/myisam/ha_myisam.cc'
--- a/storage/myisam/ha_myisam.cc 2009-06-29 21:03:30 +0000
+++ b/storage/myisam/ha_myisam.cc 2009-10-06 06:57:22 +0000
@@ -660,6 +660,9 @@
if (!(file=mi_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (!table->s->tmp_table) /* No need to perform a check for tmp table */
{
if ((my_errno= table2myisam(table, &keyinfo, &recinfo, &recs)))
=== modified file 'storage/myisam/mi_locking.c'
--- a/storage/myisam/mi_locking.c 2009-09-03 14:05:38 +0000
+++ b/storage/myisam/mi_locking.c 2009-10-06 06:57:22 +0000
@@ -329,6 +329,12 @@
#endif
info->s->state.state= *info->state;
info->state= &info->s->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->filename));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->filename);
+#endif
}
info->append_insert_at_end= 0;
=== modified file 'storage/myisam/myisamdef.h'
--- a/storage/myisam/myisamdef.h 2009-04-25 09:04:38 +0000
+++ b/storage/myisam/myisamdef.h 2009-10-06 06:57:22 +0000
@@ -190,7 +190,10 @@
const uchar *record, my_off_t pos);
size_t (*file_read) (MI_INFO *, uchar *, size_t, my_off_t, myf);
size_t (*file_write) (MI_INFO *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ /* query cache invalidator for merged tables */
+ invalidator_by_filename invalidator;
+ /* query cache invalidator for changing state */
+ invalidator_by_filename chst_invalidator;
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
ulong last_version; /* Version on start */
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2753)
by knielsen@knielsen-hq.org 06 Oct '09
by knielsen@knielsen-hq.org 06 Oct '09
06 Oct '09
#At lp:maria
2753 knielsen(a)knielsen-hq.org 2009-10-06
Fix broken --vs-config option of mysql-test-run.pl.
modified:
mysql-test/mysql-test-run.pl
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-10-05 13:22:23 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-06 06:46:45 +0000
@@ -844,7 +844,7 @@ sub command_line_setup {
'ssl|with-openssl' => \$opt_ssl,
'skip-ssl' => \$opt_skip_ssl,
'compress' => \$opt_compress,
- 'vs-config' => \$opt_vs_config,
+ 'vs-config=s' => \$opt_vs_config,
# Max number of parallel threads to use
'parallel=s' => \$opt_parallel,
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2742: Merge with bug fix
by noreply@launchpad.net 06 Oct '09
by noreply@launchpad.net 06 Oct '09
06 Oct '09
Merge authors:
Michael Widenius (monty)
------------------------------------------------------------
revno: 2742 [merge]
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: maria-skr
timestamp: Tue 2009-10-06 09:20:31 +0300
message:
Merge with bug fix
modified:
storage/maria/ma_extra.c
storage/maria/ma_locking.c
storage/myisam/mi_extra.c
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2742)
by Michael Widenius 06 Oct '09
by Michael Widenius 06 Oct '09
06 Oct '09
#At lp:maria based on revid:knielsen@knielsen-hq.org-20091005122657-02wli3dgv82t3125
2742 Michael Widenius 2009-10-06 [merge]
Merge with bug fix
modified:
storage/maria/ma_extra.c
storage/maria/ma_locking.c
storage/myisam/mi_extra.c
=== modified file 'storage/maria/ma_extra.c'
--- a/storage/maria/ma_extra.c 2009-02-19 09:01:25 +0000
+++ b/storage/maria/ma_extra.c 2009-10-06 06:13:56 +0000
@@ -323,9 +323,16 @@ int maria_extra(MARIA_HA *info, enum ha_
error= my_errno;
info->lock_type= F_UNLCK;
}
- if (share->kfile.file >= 0)
- _ma_decrement_open_count(info);
+ /*
+ We don't need to call _mi_decrement_open_count() if we are
+ dropping the table, as the files will be removed anyway. If we
+ are aborted before the files is removed, it's better to not
+ call it as in that case the automatic repair on open will add
+ the missing index entries
+ */
pthread_mutex_lock(&share->intern_lock);
+ if (share->kfile.file >= 0 && function != HA_EXTRA_PREPARE_FOR_DROP)
+ _ma_decrement_open_count(info);
if (info->trn)
{
_ma_remove_table_from_trnman(share, info->trn);
=== modified file 'storage/maria/ma_locking.c'
--- a/storage/maria/ma_locking.c 2009-02-09 21:52:42 +0000
+++ b/storage/maria/ma_locking.c 2009-10-06 06:13:56 +0000
@@ -484,7 +484,7 @@ int _ma_decrement_open_count(MARIA_HA *i
{
uint old_lock=info->lock_type;
share->global_changed=0;
- lock_error=maria_lock_database(info,F_WRLCK);
+ lock_error= my_disable_locking ? 0 : maria_lock_database(info, F_WRLCK);
/* Its not fatal even if we couldn't get the lock ! */
if (share->state.open_count > 0)
{
@@ -499,7 +499,7 @@ int _ma_decrement_open_count(MARIA_HA *i
MYF(MY_NABP));
}
}
- if (!lock_error)
+ if (!lock_error && !my_disable_locking)
lock_error=maria_lock_database(info,old_lock);
}
return test(lock_error || write_error);
=== modified file 'storage/myisam/mi_extra.c'
--- a/storage/myisam/mi_extra.c 2009-09-03 14:05:38 +0000
+++ b/storage/myisam/mi_extra.c 2009-10-06 06:13:56 +0000
@@ -286,9 +286,19 @@ int mi_extra(MI_INFO *info, enum ha_extr
info->lock_type = F_UNLCK;
}
if (share->kfile >= 0)
+ {
+ /*
+ We don't need to call _mi_decrement_open_count() if we are
+ dropping the table, as the files will be removed anyway. If we
+ are aborted before the files is removed, it's better to not
+ call it as in that case the automatic repair on open will add
+ the missing index entries
+ */
+ if (function != HA_EXTRA_PREPARE_FOR_DROP)
_mi_decrement_open_count(info);
- if (share->kfile >= 0 && my_close(share->kfile,MYF(0)))
- error=my_errno;
+ if (my_close(share->kfile,MYF(0)))
+ error=my_errno;
+ }
{
LIST *list_element ;
for (list_element=myisam_open_list ;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2742)
by Michael Widenius 06 Oct '09
by Michael Widenius 06 Oct '09
06 Oct '09
#At lp:maria based on revid:monty@askmonty.org-20091006061356-w62ct9y58lfyl1oa
2742 Michael Widenius 2009-10-06 [merge]
Merge with trunk
modified:
mysql-test/lib/mtr_cases.pm
mysql-test/mysql-test-run.pl
=== modified file 'mysql-test/lib/mtr_cases.pm'
--- a/mysql-test/lib/mtr_cases.pm 2009-09-07 20:50:10 +0000
+++ b/mysql-test/lib/mtr_cases.pm 2009-10-05 12:26:57 +0000
@@ -560,8 +560,12 @@ sub collect_one_suite($)
sub optimize_cases {
my ($cases)= @_;
+ my @new_cases= ();
+
foreach my $tinfo ( @$cases )
{
+ push @new_cases, $tinfo;
+
# Skip processing if already marked as skipped
next if $tinfo->{skip};
@@ -615,6 +619,13 @@ sub optimize_cases {
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}=
"Doesn't support --binlog-format='$test_binlog_format'";
+ # This test was added as a replication combination, but it is not
+ # actually ever possible to run it, as it is not made for this
+ # combination.
+ # So delete it from the list, rather than confuse the user with a
+ # message that this test is skipped (it is not really, just run
+ # with other combinations).
+ pop(@new_cases);
next;
}
}
@@ -683,6 +694,7 @@ sub optimize_cases {
}
}
}
+ @$cases= @new_cases;
}
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-26 02:25:56 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-05 12:26:57 +0000
@@ -126,13 +126,13 @@ my $path_config_file; # The ge
# executables will be used by the test suite.
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
-my $DEFAULT_SUITES= "binlog,federated,main,maria,ndb,rpl,rpl_ndb,innodb";
+my $DEFAULT_SUITES= "binlog,federated,main,maria,rpl,innodb";
my $opt_suites;
our $opt_usage;
our $opt_list_options;
our $opt_suites;
-our $opt_suites_default= "main,backup,backup_engines,binlog,rpl,rpl_ndb,ndb"; # Default suites to run
+our $opt_suites_default= "main,backup,backup_engines,binlog,rpl"; # Default suites to run
our $opt_script_debug= 0; # Script debugging, enable with --script-debug
our $opt_verbose= 0; # Verbose output, enable with --verbose
our $exe_mysql;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2741)
by Michael Widenius 06 Oct '09
by Michael Widenius 06 Oct '09
06 Oct '09
#At lp:maria based on revid:monty@askmonty.org-20091002115611-mp80efi9m4h4qyi6
2741 Michael Widenius 2009-10-06
Don't call _ma_decrement_open_count() for ma_extra(HA_EXTRA_PREPARE_FOR_DROP).
Don't call _mi_decrement_open_count() for mi_extra(HA_EXTRA_PREPARE_FOR_DROP).
This ensures that if we empty the key cache and a drop table fails later, the index will be automaticly rebuilt
modified:
storage/maria/ma_extra.c
storage/maria/ma_locking.c
storage/myisam/mi_extra.c
per-file messages:
storage/maria/ma_extra.c
Don't call _ma_decrement_open_count() for ma_extra(HA_EXTRA_PREPARE_FOR_DROP).
This ensures that if we empty the key cache and a drop table fails later, the index will be automaticly rebuilt
storage/maria/ma_locking.c
Simple optimization: Don't call maria_lock_database() if locking is disabled
storage/myisam/mi_extra.c
Don't call _mi_decrement_open_count() for mi_extra(HA_EXTRA_PREPARE_FOR_DROP).
Simplify code to remove if
=== modified file 'storage/maria/ma_extra.c'
--- a/storage/maria/ma_extra.c 2009-02-19 09:01:25 +0000
+++ b/storage/maria/ma_extra.c 2009-10-06 06:13:56 +0000
@@ -323,9 +323,16 @@ int maria_extra(MARIA_HA *info, enum ha_
error= my_errno;
info->lock_type= F_UNLCK;
}
- if (share->kfile.file >= 0)
- _ma_decrement_open_count(info);
+ /*
+ We don't need to call _mi_decrement_open_count() if we are
+ dropping the table, as the files will be removed anyway. If we
+ are aborted before the files is removed, it's better to not
+ call it as in that case the automatic repair on open will add
+ the missing index entries
+ */
pthread_mutex_lock(&share->intern_lock);
+ if (share->kfile.file >= 0 && function != HA_EXTRA_PREPARE_FOR_DROP)
+ _ma_decrement_open_count(info);
if (info->trn)
{
_ma_remove_table_from_trnman(share, info->trn);
=== modified file 'storage/maria/ma_locking.c'
--- a/storage/maria/ma_locking.c 2009-02-09 21:52:42 +0000
+++ b/storage/maria/ma_locking.c 2009-10-06 06:13:56 +0000
@@ -484,7 +484,7 @@ int _ma_decrement_open_count(MARIA_HA *i
{
uint old_lock=info->lock_type;
share->global_changed=0;
- lock_error=maria_lock_database(info,F_WRLCK);
+ lock_error= my_disable_locking ? 0 : maria_lock_database(info, F_WRLCK);
/* Its not fatal even if we couldn't get the lock ! */
if (share->state.open_count > 0)
{
@@ -499,7 +499,7 @@ int _ma_decrement_open_count(MARIA_HA *i
MYF(MY_NABP));
}
}
- if (!lock_error)
+ if (!lock_error && !my_disable_locking)
lock_error=maria_lock_database(info,old_lock);
}
return test(lock_error || write_error);
=== modified file 'storage/myisam/mi_extra.c'
--- a/storage/myisam/mi_extra.c 2009-09-03 14:05:38 +0000
+++ b/storage/myisam/mi_extra.c 2009-10-06 06:13:56 +0000
@@ -286,9 +286,19 @@ int mi_extra(MI_INFO *info, enum ha_extr
info->lock_type = F_UNLCK;
}
if (share->kfile >= 0)
+ {
+ /*
+ We don't need to call _mi_decrement_open_count() if we are
+ dropping the table, as the files will be removed anyway. If we
+ are aborted before the files is removed, it's better to not
+ call it as in that case the automatic repair on open will add
+ the missing index entries
+ */
+ if (function != HA_EXTRA_PREPARE_FOR_DROP)
_mi_decrement_open_count(info);
- if (share->kfile >= 0 && my_close(share->kfile,MYF(0)))
- error=my_errno;
+ if (my_close(share->kfile,MYF(0)))
+ error=my_errno;
+ }
{
LIST *list_element ;
for (list_element=myisam_open_list ;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2752)
by knielsen@knielsen-hq.org 05 Oct '09
by knielsen@knielsen-hq.org 05 Oct '09
05 Oct '09
#At lp:maria
2752 knielsen(a)knielsen-hq.org 2009-10-05
MBug#443092: test cases mysql and mysql_upgrade fails with wildcard DNS
When DNS is not working and returns some address even for non-existing
host names, some test cases fail with wrong error.
Fix by disabling these tests on such systems.
added:
mysql-test/include/have_working_dns.inc
mysql-test/r/have_working_dns.require
modified:
mysql-test/mysql-test-run.pl
mysql-test/t/mysql.test
mysql-test/t/mysql_upgrade.test
=== added file 'mysql-test/include/have_working_dns.inc'
--- a/mysql-test/include/have_working_dns.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/have_working_dns.inc 2009-10-05 13:22:23 +0000
@@ -0,0 +1,11 @@
+#
+# Check if we have a working DNS.
+# Some 'wildcard dns' return some address even for non-existing hosts. This
+# makes it hard to test connections to such host names.
+# The actual check for working DNS is done in Perl, and the result available
+# in an environment variable.
+#
+--require r/have_working_dns.require
+disable_query_log;
+eval SELECT LENGTH('$HAVE_BROKEN_DNS') = 0 AS 'have_working_dns';
+enable_query_log;
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-29 19:02:48 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-05 13:22:23 +0000
@@ -2003,6 +2003,15 @@ sub environment_setup {
$ENV{'MYSQL_TMP_DIR'}= $opt_tmpdir;
$ENV{'MYSQLTEST_VARDIR'}= $opt_vardir;
+ #
+ # Some stupid^H^H^H^H^H^Hignorant network providers set up "wildcard DNS"
+ # servers that return some given web server address for any lookup of a
+ # non-existent host name. This confuses test cases that want to test the
+ # behaviour when connecting to a non-existing host, so we need to be able
+ # to disable those tests when DNS is broken.
+ #
+ $ENV{HAVE_BROKEN_DNS}= defined(gethostbyname('invalid_hostname'));
+
# ----------------------------------------------------
# Setup env for NDB
# ----------------------------------------------------
=== added file 'mysql-test/r/have_working_dns.require'
--- a/mysql-test/r/have_working_dns.require 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/have_working_dns.require 2009-10-05 13:22:23 +0000
@@ -0,0 +1,2 @@
+have_working_dns
+1
=== modified file 'mysql-test/t/mysql.test'
--- a/mysql-test/t/mysql.test 2009-07-31 00:51:25 +0000
+++ b/mysql-test/t/mysql.test 2009-10-05 13:22:23 +0000
@@ -1,3 +1,4 @@
+-- source include/have_working_dns.inc
# This test should work in embedded server after we fix mysqltest
-- source include/not_embedded.inc
#
=== modified file 'mysql-test/t/mysql_upgrade.test'
--- a/mysql-test/t/mysql_upgrade.test 2009-07-28 19:59:38 +0000
+++ b/mysql-test/t/mysql_upgrade.test 2009-10-05 13:22:23 +0000
@@ -1,3 +1,4 @@
+-- source include/have_working_dns.inc
# Can't run test of external client with embedded server
-- source include/not_embedded.inc
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2741: MBug#443014: Too many 'skipped' messages in mysql-test-run
by noreply@launchpad.net 05 Oct '09
by noreply@launchpad.net 05 Oct '09
05 Oct '09
------------------------------------------------------------
revno: 2741
committer: knielsen(a)knielsen-hq.org
branch nick: work-5.1
timestamp: Mon 2009-10-05 14:26:57 +0200
message:
MBug#443014: Too many 'skipped' messages in mysql-test-run
Remove mysql-test-run.pl unnecessary and confusing 'skipped' messages.
- In mysql-test-run.pl, we auto-generate combinations of replication
tests. But this sometimes generates combinations that are meaningless,
like running a test that requires row-based replication with
statement-based. These superfluous combinationes should not be
reported as skipped, they should just be deleted.
- Remove ndb suites from default suites, as we do not support NDB
in MariaDB.
Keep skip messages resulting from running mysql-test-run.pl in special
ways, eg. --mysqld=--binlog-format=statement.
modified:
mysql-test/lib/mtr_cases.pm
mysql-test/mysql-test-run.pl
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2741)
by knielsen@knielsen-hq.org 05 Oct '09
by knielsen@knielsen-hq.org 05 Oct '09
05 Oct '09
#At lp:maria
2741 knielsen(a)knielsen-hq.org 2009-10-05
MBug#443014: Too many 'skipped' messages in mysql-test-run
Remove mysql-test-run.pl unnecessary and confusing 'skipped' messages.
- In mysql-test-run.pl, we auto-generate combinations of replication
tests. But this sometimes generates combinations that are meaningless,
like running a test that requires row-based replication with
statement-based. These superfluous combinationes should not be
reported as skipped, they should just be deleted.
- Remove ndb suites from default suites, as we do not support NDB
in MariaDB.
Keep skip messages resulting from running mysql-test-run.pl in special
ways, eg. --mysqld=--binlog-format=statement.
modified:
mysql-test/lib/mtr_cases.pm
mysql-test/mysql-test-run.pl
=== modified file 'mysql-test/lib/mtr_cases.pm'
--- a/mysql-test/lib/mtr_cases.pm 2009-09-07 20:50:10 +0000
+++ b/mysql-test/lib/mtr_cases.pm 2009-10-05 12:26:57 +0000
@@ -560,8 +560,12 @@ sub collect_one_suite($)
sub optimize_cases {
my ($cases)= @_;
+ my @new_cases= ();
+
foreach my $tinfo ( @$cases )
{
+ push @new_cases, $tinfo;
+
# Skip processing if already marked as skipped
next if $tinfo->{skip};
@@ -615,6 +619,13 @@ sub optimize_cases {
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}=
"Doesn't support --binlog-format='$test_binlog_format'";
+ # This test was added as a replication combination, but it is not
+ # actually ever possible to run it, as it is not made for this
+ # combination.
+ # So delete it from the list, rather than confuse the user with a
+ # message that this test is skipped (it is not really, just run
+ # with other combinations).
+ pop(@new_cases);
next;
}
}
@@ -683,6 +694,7 @@ sub optimize_cases {
}
}
}
+ @$cases= @new_cases;
}
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-26 02:25:56 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-05 12:26:57 +0000
@@ -126,13 +126,13 @@ my $path_config_file; # The ge
# executables will be used by the test suite.
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
-my $DEFAULT_SUITES= "binlog,federated,main,maria,ndb,rpl,rpl_ndb,innodb";
+my $DEFAULT_SUITES= "binlog,federated,main,maria,rpl,innodb";
my $opt_suites;
our $opt_usage;
our $opt_list_options;
our $opt_suites;
-our $opt_suites_default= "main,backup,backup_engines,binlog,rpl,rpl_ndb,ndb"; # Default suites to run
+our $opt_suites_default= "main,backup,backup_engines,binlog,rpl"; # Default suites to run
our $opt_script_debug= 0; # Script debugging, enable with --script-debug
our $opt_verbose= 0; # Verbose output, enable with --verbose
our $exe_mysql;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2741)
by knielsen@knielsen-hq.org 05 Oct '09
by knielsen@knielsen-hq.org 05 Oct '09
05 Oct '09
#At lp:maria
2741 knielsen(a)knielsen-hq.org 2009-10-05
MBug#443014: Too many 'skipped' messages in mysql-test-run
Remove mysql-test-run.pl unnecessary and confusing 'skipped' messages.
- In mysql-test-run.pl, we auto-generate combinations of replication tests.
But this sometimes generates combinations that are meaningless, like running
a test that requires row-based replication with statement-based. These
superfluous combinationes should not be reported as skipped, they should
just be deleted.
- Remove ndb suites from default suites, as we do not support NDB in MariaDB.
Keep skip messages resulting from running mysql-test-run.pl in special ways, eg.
--mysqld=--binlog-format=statement.
modified:
mysql-test/lib/mtr_cases.pm
mysql-test/mysql-test-run.pl
=== modified file 'mysql-test/lib/mtr_cases.pm'
--- a/mysql-test/lib/mtr_cases.pm 2009-09-07 20:50:10 +0000
+++ b/mysql-test/lib/mtr_cases.pm 2009-10-05 11:06:49 +0000
@@ -560,10 +560,13 @@ sub collect_one_suite($)
sub optimize_cases {
my ($cases)= @_;
- foreach my $tinfo ( @$cases )
+ my $i= 0;
+ while ($i < @$cases)
{
+ my $tinfo= $cases->[$i];
+
# Skip processing if already marked as skipped
- next if $tinfo->{skip};
+ goto next_iteration if $tinfo->{skip};
# =======================================================
# If a special binlog format was selected with
@@ -615,6 +618,13 @@ sub optimize_cases {
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}=
"Doesn't support --binlog-format='$test_binlog_format'";
+ # This test was added as a replication combination, but it is not
+ # actually ever possible to run it, as it is not made for this
+ # combination.
+ # So delete it from the list, rather than confuse the user with a
+ # message that this test is skipped (it is not really, just run
+ # with other combinations).
+ splice(@$cases, $i, 1);
next;
}
}
@@ -682,6 +692,9 @@ sub optimize_cases {
if ( $default_engine =~ /^innodb/i );
}
}
+
+ next_iteration:
+ $i++;
}
}
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-26 02:25:56 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-05 11:06:49 +0000
@@ -126,13 +126,13 @@ my $path_config_file; # The ge
# executables will be used by the test suite.
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
-my $DEFAULT_SUITES= "binlog,federated,main,maria,ndb,rpl,rpl_ndb,innodb";
+my $DEFAULT_SUITES= "binlog,federated,main,maria,rpl,innodb";
my $opt_suites;
our $opt_usage;
our $opt_list_options;
our $opt_suites;
-our $opt_suites_default= "main,backup,backup_engines,binlog,rpl,rpl_ndb,ndb"; # Default suites to run
+our $opt_suites_default= "main,backup,backup_engines,binlog,rpl"; # Default suites to run
our $opt_script_debug= 0; # Script debugging, enable with --script-debug
our $opt_verbose= 0; # Verbose output, enable with --verbose
our $exe_mysql;
2
1
[Maria-developers] Rev 2731: BUG#39249 Maria:query cache returns out of date results in file:///Users/bell/maria/bzr/work-maria-5.1-querycache/
by sanja@askmonty.org 05 Oct '09
by sanja@askmonty.org 05 Oct '09
05 Oct '09
At file:///Users/bell/maria/bzr/work-maria-5.1-querycache/
------------------------------------------------------------
revno: 2731
revision-id: sanja(a)askmonty.org-20090923065953-l23fsjfy8lx3hkm4
parent: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
committer: sanja(a)askmonty.org
branch nick: work-maria-5.1-querycache
timestamp: Wed 2009-09-23 09:59:53 +0300
message:
BUG#39249 Maria:query cache returns out of date results
BUG#41098 Query Cache returns wrong result with concurent insert
=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh 2009-05-11 15:31:30 +0000
+++ b/BUILD/SETUP.sh 2009-09-23 06:59:53 +0000
@@ -172,6 +172,7 @@
max_no_embedded_configs="$SSL_LIBRARY --with-plugins=max"
+max_no_qc_configs="$SSL_LIBRARY --with-plugins=max --without-query-cache"
max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent"
max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server -with-libevent"
# Disable NDB in maria max builds
=== added file 'BUILD/compile-pentium-debug-max-no-qc'
--- a/BUILD/compile-pentium-debug-max-no-qc 1970-01-01 00:00:00 +0000
+++ b/BUILD/compile-pentium-debug-max-no-qc 2009-09-23 06:59:53 +0000
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+path=`dirname $0`
+. "$path/SETUP.sh"
+
+extra_flags="$pentium_cflags $debug_cflags"
+extra_configs="$pentium_configs $debug_configs $max_no_qc_configs"
+
+. "$path/FINISH.sh"
=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h 2009-09-03 14:56:46 +0000
+++ b/sql/mysql_priv.h 2009-09-23 06:59:53 +0000
@@ -933,7 +933,6 @@
#define query_cache_abort(A)
#define query_cache_end_of_result(A)
-#define query_cache_invalidate_by_MyISAM_filename_ref NULL
#define query_cache_maybe_disabled(T) 1
#define query_cache_is_cacheable_query(L) 0
#endif /*HAVE_QUERY_CACHE*/
=== modified file 'storage/maria/ha_maria.cc'
--- a/storage/maria/ha_maria.cc 2009-06-29 21:03:30 +0000
+++ b/storage/maria/ha_maria.cc 2009-09-23 06:59:53 +0000
@@ -28,6 +28,7 @@
#include <my_bit.h>
#include "ha_maria.h"
#include "trnman_public.h"
+#include "trnman.h"
C_MODE_START
#include "maria_def.h"
@@ -907,6 +908,8 @@
if (!(file= maria_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (test_if_locked & (HA_OPEN_IGNORE_IF_LOCKED | HA_OPEN_TMP_TABLE))
VOID(maria_extra(file, HA_EXTRA_NO_WAIT_LOCK, 0));
@@ -3227,6 +3230,9 @@
*/
*engine_data= 0;
+ if (file->s->now_transactional && file->s->have_versioning)
+ return (file->trn->trid != file->s->state.last_change_trn);
+
/*
If a concurrent INSERT has happened just before the currently processed
SELECT statement, the total size of the table is unknown.
=== modified file 'storage/maria/ma_delete.c'
--- a/storage/maria/ma_delete.c 2009-01-12 11:12:00 +0000
+++ b/storage/maria/ma_delete.c 2009-09-23 06:59:53 +0000
@@ -118,13 +118,6 @@
mi_sizestore(lastpos, info->cur_row.lastpos);
VOID(_ma_writeinfo(info,WRITEINFO_UPDATE_KEYFILE));
allow_break(); /* Allow SIGHUP & SIGINT */
- if (info->invalidator != 0)
- {
- DBUG_PRINT("info", ("invalidator... '%s' (delete)",
- share->open_file_name.str));
- (*info->invalidator)(share->open_file_name.str);
- info->invalidator=0;
- }
DBUG_RETURN(0);
err:
=== modified file 'storage/maria/ma_locking.c'
--- a/storage/maria/ma_locking.c 2009-02-09 21:52:42 +0000
+++ b/storage/maria/ma_locking.c 2009-09-23 06:59:53 +0000
@@ -214,7 +214,6 @@
VOID(_ma_test_if_changed(info));
info->lock_type=lock_type;
- info->invalidator=share->invalidator;
share->w_locks++;
share->tot_locks++;
break;
@@ -269,7 +268,6 @@
}
if (check_keybuffer)
VOID(_ma_test_if_changed(info));
- info->invalidator=share->invalidator;
}
else if (lock_type == F_WRLCK && info->lock_type == F_RDLCK)
{
=== modified file 'storage/maria/ma_state.c'
--- a/storage/maria/ma_state.c 2008-12-27 02:05:16 +0000
+++ b/storage/maria/ma_state.c 2009-09-23 06:59:53 +0000
@@ -318,6 +318,13 @@
DBUG_ASSERT(!info->s->base.born_transactional);
share->state.state= *info->state;
info->state= &share->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->s->data_file_name.str));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->s->data_file_name.str);
+#endif
+
}
info->append_insert_at_end= 0;
}
@@ -469,6 +476,8 @@
tables->state_start.checksum);
history->trid= trn->commit_trid;
+ share->state.last_change_trn= trn->commit_trid;
+
if (history->next)
{
/* Remove not visible states */
=== modified file 'storage/maria/ma_update.c'
--- a/storage/maria/ma_update.c 2008-10-31 23:14:58 +0000
+++ b/storage/maria/ma_update.c 2009-09-23 06:59:53 +0000
@@ -187,13 +187,6 @@
*/
VOID(_ma_writeinfo(info, WRITEINFO_UPDATE_KEYFILE));
allow_break(); /* Allow SIGHUP & SIGINT */
- if (info->invalidator != 0)
- {
- DBUG_PRINT("info", ("invalidator... '%s' (update)",
- share->open_file_name.str));
- (*info->invalidator)(share->open_file_name.str);
- info->invalidator=0;
- }
DBUG_RETURN(0);
err:
=== modified file 'storage/maria/ma_write.c'
--- a/storage/maria/ma_write.c 2009-02-19 09:01:25 +0000
+++ b/storage/maria/ma_write.c 2009-09-23 06:59:53 +0000
@@ -295,13 +295,6 @@
info->cur_row.lastpos= filepos;
VOID(_ma_writeinfo(info, WRITEINFO_UPDATE_KEYFILE));
- if (info->invalidator != 0)
- {
- DBUG_PRINT("info", ("invalidator... '%s' (update)",
- share->open_file_name.str));
- (*info->invalidator)(share->open_file_name.str);
- info->invalidator=0;
- }
/*
Update status of the table. We need to do so after each row write
=== modified file 'storage/maria/maria_def.h'
--- a/storage/maria/maria_def.h 2009-02-19 09:01:25 +0000
+++ b/storage/maria/maria_def.h 2009-09-23 06:59:53 +0000
@@ -83,6 +83,7 @@
pgcache_page_no_t first_bitmap_with_space;
ulonglong auto_increment;
TrID create_trid; /* Minum trid for file */
+ TrID last_change_trn; /* selfdescriptive */
ulong update_count; /* Updated for each write lock */
ulong status;
double *rec_per_key_part;
@@ -337,7 +338,7 @@
/* Mapings to read/write the data file */
size_t (*file_read)(MARIA_HA *, uchar *, size_t, my_off_t, myf);
size_t (*file_write)(MARIA_HA *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ invalidator_by_filename chst_invalidator; /* query cache invalidator */
my_off_t key_del_current; /* delete links for index pages */
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
@@ -507,7 +508,6 @@
uint int_nod_flag; /* -""- */
uint32 int_keytree_version; /* -""- */
int (*read_record)(MARIA_HA *, uchar*, MARIA_RECORD_POS);
- invalidator_by_filename invalidator; /* query cache invalidator */
ulonglong last_auto_increment; /* auto value at start of statement */
ulong this_unique; /* uniq filenumber or thread */
ulong last_unique; /* last unique number */
=== modified file 'storage/myisam/ha_myisam.cc'
--- a/storage/myisam/ha_myisam.cc 2009-06-29 21:03:30 +0000
+++ b/storage/myisam/ha_myisam.cc 2009-09-23 06:59:53 +0000
@@ -660,6 +660,9 @@
if (!(file=mi_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
return (my_errno ? my_errno : -1);
+
+ file->s->chst_invalidator= query_cache_invalidate_by_MyISAM_filename_ref;
+
if (!table->s->tmp_table) /* No need to perform a check for tmp table */
{
if ((my_errno= table2myisam(table, &keyinfo, &recinfo, &recs)))
=== modified file 'storage/myisam/mi_locking.c'
--- a/storage/myisam/mi_locking.c 2009-09-03 14:05:38 +0000
+++ b/storage/myisam/mi_locking.c 2009-09-23 06:59:53 +0000
@@ -329,6 +329,12 @@
#endif
info->s->state.state= *info->state;
info->state= &info->s->state.state;
+#ifdef HAVE_QUERY_CACHE
+ DBUG_PRINT("info", ("invalidator... '%s' (status update)",
+ info->filename));
+ DBUG_ASSERT(info->s->chst_invalidator != NULL);
+ (*info->s->chst_invalidator)((const char *)info->filename);
+#endif
}
info->append_insert_at_end= 0;
=== modified file 'storage/myisam/myisamdef.h'
--- a/storage/myisam/myisamdef.h 2009-04-25 09:04:38 +0000
+++ b/storage/myisam/myisamdef.h 2009-09-23 06:59:53 +0000
@@ -190,7 +190,10 @@
const uchar *record, my_off_t pos);
size_t (*file_read) (MI_INFO *, uchar *, size_t, my_off_t, myf);
size_t (*file_write) (MI_INFO *, const uchar *, size_t, my_off_t, myf);
- invalidator_by_filename invalidator; /* query cache invalidator */
+ /* query cache invalidator for merged tables */
+ invalidator_by_filename invalidator;
+ /* query cache invalidator for changing state */
+ invalidator_by_filename chst_invalidator;
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
ulong last_version; /* Version on start */
2
1
[Maria-developers] Progress (by Knielsen): mysqlbinlog: remove undesired effects of format description binlog statement (50)
by worklog-noreply@askmonty.org 05 Oct '09
by worklog-noreply@askmonty.org 05 Oct '09
05 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: mysqlbinlog: remove undesired effects of format description binlog
statement
CREATION DATE..: Mon, 17 Aug 2009, 14:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 50 (http://askmonty.org/worklog/?tid=50)
VERSION........: Server-9.x
STATUS.........: Code-Review
PRIORITY.......: 60
WORKED HOURS...: 16
ESTIMATE.......: 4 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Mon, 05 Oct 2009, 14:38)=-=-
Follow-up with MySQL developers on patch
Worked 2 hours and estimate 4 hours remain (original estimate unchanged).
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Category updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-Sprint
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Status updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Un-Assigned
+Code-Review
-=-=(Knielsen - Mon, 28 Sep 2009, 16:00)=-=-
Updated patch against MySQL 5.1.39
Fixes a couple of issues with the patch.
Discussions with MySQL developer.
Worked 4 hours and estimate 6 hours remain (original estimate unchanged).
-=-=(Knielsen - Wed, 09 Sep 2009, 18:31)=-=-
Discussed with MySQL developers on Bug#46640.
Committed a suggested fix:
https://lists.launchpad.net/maria-developers/msg00926.html
Worked 8 hours and estimate 10 hours remain (original estimate increased by 18 hours).
-=-=(Guest - Wed, 09 Sep 2009, 11:50)=-=-
High Level Description modified.
--- /tmp/wklog.50.old.11584 2009-09-09 11:50:12.000000000 +0300
+++ /tmp/wklog.50.new.11584 2009-09-09 11:50:12.000000000 +0300
@@ -5,7 +5,11 @@
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
-2. When one applies "format description binlog statement" at the slave, it
-will change the slave's server_id when applied.
+2. When one executes a BINLOG statement (containing "format description binlog
+statement" or other events), this will cause subsequent statements run in
+the same session to be binlogged with the server id of the last event
+executed, not with the real server id. This can cause problems like infinite
+recursive application in a circular replication topology.
This WL is to fix these issues.
+
-=-=(Knielsen - Tue, 08 Sep 2009, 15:07)=-=-
Low Level Design modified.
--- /tmp/wklog.50.old.19208 2009-09-08 15:07:09.000000000 +0300
+++ /tmp/wklog.50.new.19208 2009-09-08 15:07:09.000000000 +0300
@@ -1 +1,34 @@
+I think the fix for point 2 is to replace the call to
+apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
+call to ev->apply_event(). However, I need to check two things to be sure this
+is correct:
+
+1. The existing code does
+
+ if (!ev->when) ev->when= my_time(0)
+
+Need to understand if this is needed/correct or not.
+
+2. The existing code does ev->update_pos(). I think this is redundant for
+BINLOG statement (as it uses a fake rli structure), but I need to check to
+make sure.
+
+Once this is done, point 1 may no longer be needed. The user can use
+--base64-output=never when applying the output to a 5.0 server, and omit that
+option when applying the output to a 5.1 server. There should be no need to
+omit the format description event in the output when other BINLOG statements
+for row events are present, as it no longer changes the server id. In fact the
+format description event is required to be able to execute other BINLOG
+statements, as its purpose is to define the binary format of the events
+contained in these statements.
+
+Alternatively, we could implement that if the format description event of the
+source binlog has server version < 5.1, and --base64-output=auto (default),
+then the format description event is omitted (and should any BINLOG statement
+be needed, unlikely as it is from a 5.0 server, we will need to throw an
+error).
+
+The binlog format version for 5.0 and 5.1 is actually the same, hence the need
+to look at server version to guess if the format description event can be
+omitted.
-=-=(Knielsen - Tue, 08 Sep 2009, 14:29)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.17531 2009-09-08 14:29:30.000000000 +0300
+++ /tmp/wklog.50.new.17531 2009-09-08 14:29:30.000000000 +0300
@@ -12,3 +12,37 @@
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
+First, the problem is not the format description log event. In fact all log
+events have their own value of server_id, and every event in the BINLOG
+statement is executed with its own id as server_id.
+
+It seems it was introduced deliberately in the patch for Bug#32407. This patch
+makes sql thread and BINLOG statement share code path for executing the binary
+event, even though the bug is really about something different (outputting
+format description event to allow proper execution of other BINLOG
+statements).
+
+Nevertheless, I think using the server_id in the events of a BINLOG statement
+is wrong:
+
+1. It is different behaviour from executing normal statement-based events not
+written using BINLOG.
+
+2. It causes the possibility for infinite cycle of replication in a cyclic
+replication setup, if the server ids in BINLOG are different from all other
+server ids in the cycle.
+
+3. The functionality of applying events with original server id from the event
+is still available by pointing the slave thread to the binlog. The
+functionality of applying row-based binlog events with server id of the server
+executing the BINLOG statements is not otherwise available.
+
+In fact most of the code from the slave thread that is now also run when
+executing BINLOG statements is redundant, or does the wrong thing (like
+updating binlog position).
+
+Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
+able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
+it to be able to simulate the effect of the slave sql thread? I think the
+former is the most important one.
+
-=-=(Knielsen - Mon, 07 Sep 2009, 10:06)=-=-
Research worklog, bugs, and existing server code.
Worked 2 hours and estimate 0 hours remain (original estimate increased by 2 hours).
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
Dependency created: 39 now depends on 50
------------------------------------------------------------
-=-=(View All Progress Notes, 11 total)=-=-
http://askmonty.org/worklog/index.pl?tid=50&nolimit=1
DESCRIPTION:
According to complaints in BUG#46640:
1. mysqlbinlog will emit a 5.0-incompatible "format description binlog
statement" even when reading a binary log that was produced by 5.0.
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
2. When one executes a BINLOG statement (containing "format description binlog
statement" or other events), this will cause subsequent statements run in
the same session to be binlogged with the server id of the last event
executed, not with the real server id. This can cause problems like infinite
recursive application in a circular replication topology.
This WL is to fix these issues.
HIGH-LEVEL SPECIFICATION:
First item
----------
AFAIU what needs to be done is:
1. record a source server version (it is in the first binlog event).
2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
below.
and we'll get a 5.0-applicable binlog.
Second item
-----------
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
First, the problem is not the format description log event. In fact all log
events have their own value of server_id, and every event in the BINLOG
statement is executed with its own id as server_id.
It seems it was introduced deliberately in the patch for Bug#32407. This patch
makes sql thread and BINLOG statement share code path for executing the binary
event, even though the bug is really about something different (outputting
format description event to allow proper execution of other BINLOG
statements).
Nevertheless, I think using the server_id in the events of a BINLOG statement
is wrong:
1. It is different behaviour from executing normal statement-based events not
written using BINLOG.
2. It causes the possibility for infinite cycle of replication in a cyclic
replication setup, if the server ids in BINLOG are different from all other
server ids in the cycle.
3. The functionality of applying events with original server id from the event
is still available by pointing the slave thread to the binlog. The
functionality of applying row-based binlog events with server id of the server
executing the BINLOG statements is not otherwise available.
In fact most of the code from the slave thread that is now also run when
executing BINLOG statements is redundant, or does the wrong thing (like
updating binlog position).
Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
it to be able to simulate the effect of the slave sql thread? I think the
former is the most important one.
LOW-LEVEL DESIGN:
I think the fix for point 2 is to replace the call to
apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
call to ev->apply_event(). However, I need to check two things to be sure this
is correct:
1. The existing code does
if (!ev->when) ev->when= my_time(0)
Need to understand if this is needed/correct or not.
2. The existing code does ev->update_pos(). I think this is redundant for
BINLOG statement (as it uses a fake rli structure), but I need to check to
make sure.
Once this is done, point 1 may no longer be needed. The user can use
--base64-output=never when applying the output to a 5.0 server, and omit that
option when applying the output to a 5.1 server. There should be no need to
omit the format description event in the output when other BINLOG statements
for row events are present, as it no longer changes the server id. In fact the
format description event is required to be able to execute other BINLOG
statements, as its purpose is to define the binary format of the events
contained in these statements.
Alternatively, we could implement that if the format description event of the
source binlog has server version < 5.1, and --base64-output=auto (default),
then the format description event is omitted (and should any BINLOG statement
be needed, unlikely as it is from a 5.0 server, we will need to throw an
error).
The binlog format version for 5.0 and 5.1 is actually the same, hence the need
to look at server version to guess if the format description event can be
omitted.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Progress (by Knielsen): mysqlbinlog: remove undesired effects of format description binlog statement (50)
by worklog-noreply@askmonty.org 05 Oct '09
by worklog-noreply@askmonty.org 05 Oct '09
05 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: mysqlbinlog: remove undesired effects of format description binlog
statement
CREATION DATE..: Mon, 17 Aug 2009, 14:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 50 (http://askmonty.org/worklog/?tid=50)
VERSION........: Server-9.x
STATUS.........: Code-Review
PRIORITY.......: 60
WORKED HOURS...: 16
ESTIMATE.......: 4 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Mon, 05 Oct 2009, 14:38)=-=-
Follow-up with MySQL developers on patch
Worked 2 hours and estimate 4 hours remain (original estimate unchanged).
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Category updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-Sprint
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Status updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Un-Assigned
+Code-Review
-=-=(Knielsen - Mon, 28 Sep 2009, 16:00)=-=-
Updated patch against MySQL 5.1.39
Fixes a couple of issues with the patch.
Discussions with MySQL developer.
Worked 4 hours and estimate 6 hours remain (original estimate unchanged).
-=-=(Knielsen - Wed, 09 Sep 2009, 18:31)=-=-
Discussed with MySQL developers on Bug#46640.
Committed a suggested fix:
https://lists.launchpad.net/maria-developers/msg00926.html
Worked 8 hours and estimate 10 hours remain (original estimate increased by 18 hours).
-=-=(Guest - Wed, 09 Sep 2009, 11:50)=-=-
High Level Description modified.
--- /tmp/wklog.50.old.11584 2009-09-09 11:50:12.000000000 +0300
+++ /tmp/wklog.50.new.11584 2009-09-09 11:50:12.000000000 +0300
@@ -5,7 +5,11 @@
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
-2. When one applies "format description binlog statement" at the slave, it
-will change the slave's server_id when applied.
+2. When one executes a BINLOG statement (containing "format description binlog
+statement" or other events), this will cause subsequent statements run in
+the same session to be binlogged with the server id of the last event
+executed, not with the real server id. This can cause problems like infinite
+recursive application in a circular replication topology.
This WL is to fix these issues.
+
-=-=(Knielsen - Tue, 08 Sep 2009, 15:07)=-=-
Low Level Design modified.
--- /tmp/wklog.50.old.19208 2009-09-08 15:07:09.000000000 +0300
+++ /tmp/wklog.50.new.19208 2009-09-08 15:07:09.000000000 +0300
@@ -1 +1,34 @@
+I think the fix for point 2 is to replace the call to
+apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
+call to ev->apply_event(). However, I need to check two things to be sure this
+is correct:
+
+1. The existing code does
+
+ if (!ev->when) ev->when= my_time(0)
+
+Need to understand if this is needed/correct or not.
+
+2. The existing code does ev->update_pos(). I think this is redundant for
+BINLOG statement (as it uses a fake rli structure), but I need to check to
+make sure.
+
+Once this is done, point 1 may no longer be needed. The user can use
+--base64-output=never when applying the output to a 5.0 server, and omit that
+option when applying the output to a 5.1 server. There should be no need to
+omit the format description event in the output when other BINLOG statements
+for row events are present, as it no longer changes the server id. In fact the
+format description event is required to be able to execute other BINLOG
+statements, as its purpose is to define the binary format of the events
+contained in these statements.
+
+Alternatively, we could implement that if the format description event of the
+source binlog has server version < 5.1, and --base64-output=auto (default),
+then the format description event is omitted (and should any BINLOG statement
+be needed, unlikely as it is from a 5.0 server, we will need to throw an
+error).
+
+The binlog format version for 5.0 and 5.1 is actually the same, hence the need
+to look at server version to guess if the format description event can be
+omitted.
-=-=(Knielsen - Tue, 08 Sep 2009, 14:29)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.17531 2009-09-08 14:29:30.000000000 +0300
+++ /tmp/wklog.50.new.17531 2009-09-08 14:29:30.000000000 +0300
@@ -12,3 +12,37 @@
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
+First, the problem is not the format description log event. In fact all log
+events have their own value of server_id, and every event in the BINLOG
+statement is executed with its own id as server_id.
+
+It seems it was introduced deliberately in the patch for Bug#32407. This patch
+makes sql thread and BINLOG statement share code path for executing the binary
+event, even though the bug is really about something different (outputting
+format description event to allow proper execution of other BINLOG
+statements).
+
+Nevertheless, I think using the server_id in the events of a BINLOG statement
+is wrong:
+
+1. It is different behaviour from executing normal statement-based events not
+written using BINLOG.
+
+2. It causes the possibility for infinite cycle of replication in a cyclic
+replication setup, if the server ids in BINLOG are different from all other
+server ids in the cycle.
+
+3. The functionality of applying events with original server id from the event
+is still available by pointing the slave thread to the binlog. The
+functionality of applying row-based binlog events with server id of the server
+executing the BINLOG statements is not otherwise available.
+
+In fact most of the code from the slave thread that is now also run when
+executing BINLOG statements is redundant, or does the wrong thing (like
+updating binlog position).
+
+Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
+able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
+it to be able to simulate the effect of the slave sql thread? I think the
+former is the most important one.
+
-=-=(Knielsen - Mon, 07 Sep 2009, 10:06)=-=-
Research worklog, bugs, and existing server code.
Worked 2 hours and estimate 0 hours remain (original estimate increased by 2 hours).
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
Dependency created: 39 now depends on 50
------------------------------------------------------------
-=-=(View All Progress Notes, 11 total)=-=-
http://askmonty.org/worklog/index.pl?tid=50&nolimit=1
DESCRIPTION:
According to complaints in BUG#46640:
1. mysqlbinlog will emit a 5.0-incompatible "format description binlog
statement" even when reading a binary log that was produced by 5.0.
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
2. When one executes a BINLOG statement (containing "format description binlog
statement" or other events), this will cause subsequent statements run in
the same session to be binlogged with the server id of the last event
executed, not with the real server id. This can cause problems like infinite
recursive application in a circular replication topology.
This WL is to fix these issues.
HIGH-LEVEL SPECIFICATION:
First item
----------
AFAIU what needs to be done is:
1. record a source server version (it is in the first binlog event).
2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
below.
and we'll get a 5.0-applicable binlog.
Second item
-----------
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
First, the problem is not the format description log event. In fact all log
events have their own value of server_id, and every event in the BINLOG
statement is executed with its own id as server_id.
It seems it was introduced deliberately in the patch for Bug#32407. This patch
makes sql thread and BINLOG statement share code path for executing the binary
event, even though the bug is really about something different (outputting
format description event to allow proper execution of other BINLOG
statements).
Nevertheless, I think using the server_id in the events of a BINLOG statement
is wrong:
1. It is different behaviour from executing normal statement-based events not
written using BINLOG.
2. It causes the possibility for infinite cycle of replication in a cyclic
replication setup, if the server ids in BINLOG are different from all other
server ids in the cycle.
3. The functionality of applying events with original server id from the event
is still available by pointing the slave thread to the binlog. The
functionality of applying row-based binlog events with server id of the server
executing the BINLOG statements is not otherwise available.
In fact most of the code from the slave thread that is now also run when
executing BINLOG statements is redundant, or does the wrong thing (like
updating binlog position).
Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
it to be able to simulate the effect of the slave sql thread? I think the
former is the most important one.
LOW-LEVEL DESIGN:
I think the fix for point 2 is to replace the call to
apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
call to ev->apply_event(). However, I need to check two things to be sure this
is correct:
1. The existing code does
if (!ev->when) ev->when= my_time(0)
Need to understand if this is needed/correct or not.
2. The existing code does ev->update_pos(). I think this is redundant for
BINLOG statement (as it uses a fake rli structure), but I need to check to
make sure.
Once this is done, point 1 may no longer be needed. The user can use
--base64-output=never when applying the output to a 5.0 server, and omit that
option when applying the output to a 5.1 server. There should be no need to
omit the format description event in the output when other BINLOG statements
for row events are present, as it no longer changes the server id. In fact the
format description event is required to be able to execute other BINLOG
statements, as its purpose is to define the binary format of the events
contained in these statements.
Alternatively, we could implement that if the format description event of the
source binlog has server version < 5.1, and --base64-output=auto (default),
then the format description event is omitted (and should any BINLOG statement
be needed, unlikely as it is from a 5.0 server, we will need to throw an
error).
The binlog format version for 5.0 and 5.1 is actually the same, hence the need
to look at server version to guess if the format description event can be
omitted.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Progress (by Knielsen): mysqlbinlog: remove undesired effects of format description binlog statement (50)
by worklog-noreply@askmonty.org 05 Oct '09
by worklog-noreply@askmonty.org 05 Oct '09
05 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: mysqlbinlog: remove undesired effects of format description binlog
statement
CREATION DATE..: Mon, 17 Aug 2009, 14:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 50 (http://askmonty.org/worklog/?tid=50)
VERSION........: Server-9.x
STATUS.........: Code-Review
PRIORITY.......: 60
WORKED HOURS...: 16
ESTIMATE.......: 4 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Mon, 05 Oct 2009, 14:38)=-=-
Follow-up with MySQL developers on patch
Worked 2 hours and estimate 4 hours remain (original estimate unchanged).
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Category updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-Sprint
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Status updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Un-Assigned
+Code-Review
-=-=(Knielsen - Mon, 28 Sep 2009, 16:00)=-=-
Updated patch against MySQL 5.1.39
Fixes a couple of issues with the patch.
Discussions with MySQL developer.
Worked 4 hours and estimate 6 hours remain (original estimate unchanged).
-=-=(Knielsen - Wed, 09 Sep 2009, 18:31)=-=-
Discussed with MySQL developers on Bug#46640.
Committed a suggested fix:
https://lists.launchpad.net/maria-developers/msg00926.html
Worked 8 hours and estimate 10 hours remain (original estimate increased by 18 hours).
-=-=(Guest - Wed, 09 Sep 2009, 11:50)=-=-
High Level Description modified.
--- /tmp/wklog.50.old.11584 2009-09-09 11:50:12.000000000 +0300
+++ /tmp/wklog.50.new.11584 2009-09-09 11:50:12.000000000 +0300
@@ -5,7 +5,11 @@
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
-2. When one applies "format description binlog statement" at the slave, it
-will change the slave's server_id when applied.
+2. When one executes a BINLOG statement (containing "format description binlog
+statement" or other events), this will cause subsequent statements run in
+the same session to be binlogged with the server id of the last event
+executed, not with the real server id. This can cause problems like infinite
+recursive application in a circular replication topology.
This WL is to fix these issues.
+
-=-=(Knielsen - Tue, 08 Sep 2009, 15:07)=-=-
Low Level Design modified.
--- /tmp/wklog.50.old.19208 2009-09-08 15:07:09.000000000 +0300
+++ /tmp/wklog.50.new.19208 2009-09-08 15:07:09.000000000 +0300
@@ -1 +1,34 @@
+I think the fix for point 2 is to replace the call to
+apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
+call to ev->apply_event(). However, I need to check two things to be sure this
+is correct:
+
+1. The existing code does
+
+ if (!ev->when) ev->when= my_time(0)
+
+Need to understand if this is needed/correct or not.
+
+2. The existing code does ev->update_pos(). I think this is redundant for
+BINLOG statement (as it uses a fake rli structure), but I need to check to
+make sure.
+
+Once this is done, point 1 may no longer be needed. The user can use
+--base64-output=never when applying the output to a 5.0 server, and omit that
+option when applying the output to a 5.1 server. There should be no need to
+omit the format description event in the output when other BINLOG statements
+for row events are present, as it no longer changes the server id. In fact the
+format description event is required to be able to execute other BINLOG
+statements, as its purpose is to define the binary format of the events
+contained in these statements.
+
+Alternatively, we could implement that if the format description event of the
+source binlog has server version < 5.1, and --base64-output=auto (default),
+then the format description event is omitted (and should any BINLOG statement
+be needed, unlikely as it is from a 5.0 server, we will need to throw an
+error).
+
+The binlog format version for 5.0 and 5.1 is actually the same, hence the need
+to look at server version to guess if the format description event can be
+omitted.
-=-=(Knielsen - Tue, 08 Sep 2009, 14:29)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.17531 2009-09-08 14:29:30.000000000 +0300
+++ /tmp/wklog.50.new.17531 2009-09-08 14:29:30.000000000 +0300
@@ -12,3 +12,37 @@
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
+First, the problem is not the format description log event. In fact all log
+events have their own value of server_id, and every event in the BINLOG
+statement is executed with its own id as server_id.
+
+It seems it was introduced deliberately in the patch for Bug#32407. This patch
+makes sql thread and BINLOG statement share code path for executing the binary
+event, even though the bug is really about something different (outputting
+format description event to allow proper execution of other BINLOG
+statements).
+
+Nevertheless, I think using the server_id in the events of a BINLOG statement
+is wrong:
+
+1. It is different behaviour from executing normal statement-based events not
+written using BINLOG.
+
+2. It causes the possibility for infinite cycle of replication in a cyclic
+replication setup, if the server ids in BINLOG are different from all other
+server ids in the cycle.
+
+3. The functionality of applying events with original server id from the event
+is still available by pointing the slave thread to the binlog. The
+functionality of applying row-based binlog events with server id of the server
+executing the BINLOG statements is not otherwise available.
+
+In fact most of the code from the slave thread that is now also run when
+executing BINLOG statements is redundant, or does the wrong thing (like
+updating binlog position).
+
+Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
+able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
+it to be able to simulate the effect of the slave sql thread? I think the
+former is the most important one.
+
-=-=(Knielsen - Mon, 07 Sep 2009, 10:06)=-=-
Research worklog, bugs, and existing server code.
Worked 2 hours and estimate 0 hours remain (original estimate increased by 2 hours).
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
Dependency created: 39 now depends on 50
------------------------------------------------------------
-=-=(View All Progress Notes, 11 total)=-=-
http://askmonty.org/worklog/index.pl?tid=50&nolimit=1
DESCRIPTION:
According to complaints in BUG#46640:
1. mysqlbinlog will emit a 5.0-incompatible "format description binlog
statement" even when reading a binary log that was produced by 5.0.
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
2. When one executes a BINLOG statement (containing "format description binlog
statement" or other events), this will cause subsequent statements run in
the same session to be binlogged with the server id of the last event
executed, not with the real server id. This can cause problems like infinite
recursive application in a circular replication topology.
This WL is to fix these issues.
HIGH-LEVEL SPECIFICATION:
First item
----------
AFAIU what needs to be done is:
1. record a source server version (it is in the first binlog event).
2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
below.
and we'll get a 5.0-applicable binlog.
Second item
-----------
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
First, the problem is not the format description log event. In fact all log
events have their own value of server_id, and every event in the BINLOG
statement is executed with its own id as server_id.
It seems it was introduced deliberately in the patch for Bug#32407. This patch
makes sql thread and BINLOG statement share code path for executing the binary
event, even though the bug is really about something different (outputting
format description event to allow proper execution of other BINLOG
statements).
Nevertheless, I think using the server_id in the events of a BINLOG statement
is wrong:
1. It is different behaviour from executing normal statement-based events not
written using BINLOG.
2. It causes the possibility for infinite cycle of replication in a cyclic
replication setup, if the server ids in BINLOG are different from all other
server ids in the cycle.
3. The functionality of applying events with original server id from the event
is still available by pointing the slave thread to the binlog. The
functionality of applying row-based binlog events with server id of the server
executing the BINLOG statements is not otherwise available.
In fact most of the code from the slave thread that is now also run when
executing BINLOG statements is redundant, or does the wrong thing (like
updating binlog position).
Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
it to be able to simulate the effect of the slave sql thread? I think the
former is the most important one.
LOW-LEVEL DESIGN:
I think the fix for point 2 is to replace the call to
apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
call to ev->apply_event(). However, I need to check two things to be sure this
is correct:
1. The existing code does
if (!ev->when) ev->when= my_time(0)
Need to understand if this is needed/correct or not.
2. The existing code does ev->update_pos(). I think this is redundant for
BINLOG statement (as it uses a fake rli structure), but I need to check to
make sure.
Once this is done, point 1 may no longer be needed. The user can use
--base64-output=never when applying the output to a 5.0 server, and omit that
option when applying the output to a 5.1 server. There should be no need to
omit the format description event in the output when other BINLOG statements
for row events are present, as it no longer changes the server id. In fact the
format description event is required to be able to execute other BINLOG
statements, as its purpose is to define the binary format of the events
contained in these statements.
Alternatively, we could implement that if the format description event of the
source binlog has server version < 5.1, and --base64-output=auto (default),
then the format description event is omitted (and should any BINLOG statement
be needed, unlikely as it is from a 5.0 server, we will need to throw an
error).
The binlog format version for 5.0 and 5.1 is actually the same, hence the need
to look at server version to guess if the format description event can be
omitted.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Rev 2751: MBUG#442254: mysql-test-run --embedded fails on Windows with: ERROR: .opt file references 'EXAMPLE_PLUGIN_OPT' in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 05 Oct '09
by Sergey Petrunya 05 Oct '09
05 Oct '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2751
revision-id: psergey(a)askmonty.org-20091004140534-693l5bsctpf9zseq
parent: psergey(a)askmonty.org-20091003192413-50pog1zkms4xe670
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Sun 2009-10-04 18:05:34 +0400
message:
MBUG#442254: mysql-test-run --embedded fails on Windows with: ERROR: .opt file references 'EXAMPLE_PLUGIN_OPT'
- Make mysql-test-run keep track of what variables it could be expected to set but didn't,
and skip the test if its .opt file uses such variable
(note: we can't disable using --include/have_smth.inc approach because it requires that mysqltest can be
successfully started before the have_smth check is performed, and ".opt file references..." error occurs
before mysqltest is started)
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-29 19:02:48 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-04 14:05:34 +0000
@@ -260,6 +260,12 @@
# print messages when test suite is stopped (for buildbot)
my $opt_stop_keep_alive= $ENV{MTR_STOP_KEEP_ALIVE};
+# List of environment variables that mysql-test-run can be
+# expected to set but didnt because of test run configuration
+# (e.g. we dont set EXAMPLE_PLUGIN when running embedded server
+# on windows)
+our $unsupported_env_variables="";
+
select(STDOUT);
$| = 1; # Automatically flush STDOUT
@@ -1923,6 +1929,11 @@
$ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'";
$ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=;EXAMPLE=".$plugin_filename.";";
+ } else {
+ $unsupported_env_variables .= "EXAMPLE_PLUGIN ";
+ $unsupported_env_variables .= "EXAMPLE_PLUGIN_OPT ";
+ $unsupported_env_variables .= "HA_EXAMPLE_SO ";
+ $unsupported_env_variables .= "EXAMPLE_PLUGIN_LOAD ";
}
# ----------------------------------------------------
@@ -3516,8 +3527,14 @@
return 1;
}
-
my $test= start_mysqltest($tinfo);
+
+ if ($tinfo->{'skip'}) {
+ mtr_verbose("According to start_mysqltest(), the test should be skipped");
+ mtr_report_test_skipped($tinfo);
+ return 0;
+ }
+
# Set only when we have to keep waiting after expectedly died server
my $keep_waiting_proc = 0;
@@ -4714,6 +4731,12 @@
if ( ! defined $ENV{$string} )
{
+ if ($unsupported_env_variables =~ /$string/)
+ {
+ # This is environment variable that we ought to set but didnt.
+ # Return undef all the way up so that the test needing it is skipped
+ return undef;
+ }
mtr_error(".opt file references '$string' which is not set");
}
@@ -4731,8 +4754,14 @@
# Expand environment variables
foreach my $opt ( @$opts )
{
- $opt =~ s/\$\{(\w+)\}/envsubst($1)/ge;
- $opt =~ s/\$(\w+)/envsubst($1)/ge;
+ my ($subst1, $subst2) = ("dummy","dummy");
+
+ $opt =~ s/\$\{(\w+)\}/defined($subst1= envsubst($1))? $subst1 : "undef"/ge;
+ $opt =~ s/\$(\w+)/defined($subst2= envsubst($1))? $subst2 : "undef"/ge;
+ if (!(defined $subst1) || !(defined $subst2)) {
+ # Detected use of unsupported env variable
+ return undef;
+ }
}
return $opts;
}
@@ -5075,6 +5104,11 @@
my $mysqld_args;
mtr_init_args(\$mysqld_args);
my $extra_opts= get_extra_opts($mysqld, $tinfo);
+ if (! defined $extra_opts) {
+ $tinfo->{'skip'}= 1;
+ $tinfo->{'comment'}= "Test requires options not supported in this configuration";
+ return undef;
+ }
mysqld_arguments($mysqld_args, $mysqld, $extra_opts);
mtr_add_arg($args, "--server-arg=%s", $_) for @$mysqld_args;
2
1
[Maria-developers] Please review: Rev 2751: MBUG#442254: mysql-test-run --embedded fails on Windows ...
by Sergey Petrunya 05 Oct '09
by Sergey Petrunya 05 Oct '09
05 Oct '09
Hi,
Could anybody please review the below:
Thanks,
SergeyP.
----- Forwarded message from Sergey Petrunya <psergey(a)askmonty.org> -----
Return-Path: maria-developers-bounces+psergey=askmonty.org(a)lists.launchpad.net
X-Original-To: psergey@localhost
Delivered-To: psergey@localhost
From: Sergey Petrunya <psergey(a)askmonty.org>
To: maria-developers(a)lists.launchpad.net
Date: Sun, 4 Oct 2009 18:05:41 +0400 (MSD)
Subject: [Maria-developers] Rev 2751: MBUG#442254: mysql-test-run --embedded
fails on Windows with: ERROR: .opt file references
'EXAMPLE_PLUGIN_OPT' in
file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2751
revision-id: psergey(a)askmonty.org-20091004140534-693l5bsctpf9zseq
parent: psergey(a)askmonty.org-20091003192413-50pog1zkms4xe670
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Sun 2009-10-04 18:05:34 +0400
message:
MBUG#442254: mysql-test-run --embedded fails on Windows with: ERROR: .opt file references 'EXAMPLE_PLUGIN_OPT'
- Make mysql-test-run keep track of what variables it could be expected to set but didn't,
and skip the test if its .opt file uses such variable
(note: we can't disable using --include/have_smth.inc approach because it requires that mysqltest can be
successfully started before the have_smth check is performed, and ".opt file references..." error occurs
before mysqltest is started)
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-29 19:02:48 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-10-04 14:05:34 +0000
@@ -260,6 +260,12 @@
# print messages when test suite is stopped (for buildbot)
my $opt_stop_keep_alive= $ENV{MTR_STOP_KEEP_ALIVE};
+# List of environment variables that mysql-test-run can be
+# expected to set but didnt because of test run configuration
+# (e.g. we dont set EXAMPLE_PLUGIN when running embedded server
+# on windows)
+our $unsupported_env_variables="";
+
select(STDOUT);
$| = 1; # Automatically flush STDOUT
@@ -1923,6 +1929,11 @@
$ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'";
$ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=;EXAMPLE=".$plugin_filename.";";
+ } else {
+ $unsupported_env_variables .= "EXAMPLE_PLUGIN ";
+ $unsupported_env_variables .= "EXAMPLE_PLUGIN_OPT ";
+ $unsupported_env_variables .= "HA_EXAMPLE_SO ";
+ $unsupported_env_variables .= "EXAMPLE_PLUGIN_LOAD ";
}
# ----------------------------------------------------
@@ -3516,8 +3527,14 @@
return 1;
}
-
my $test= start_mysqltest($tinfo);
+
+ if ($tinfo->{'skip'}) {
+ mtr_verbose("According to start_mysqltest(), the test should be skipped");
+ mtr_report_test_skipped($tinfo);
+ return 0;
+ }
+
# Set only when we have to keep waiting after expectedly died server
my $keep_waiting_proc = 0;
@@ -4714,6 +4731,12 @@
if ( ! defined $ENV{$string} )
{
+ if ($unsupported_env_variables =~ /$string/)
+ {
+ # This is environment variable that we ought to set but didnt.
+ # Return undef all the way up so that the test needing it is skipped
+ return undef;
+ }
mtr_error(".opt file references '$string' which is not set");
}
@@ -4731,8 +4754,14 @@
# Expand environment variables
foreach my $opt ( @$opts )
{
- $opt =~ s/\$\{(\w+)\}/envsubst($1)/ge;
- $opt =~ s/\$(\w+)/envsubst($1)/ge;
+ my ($subst1, $subst2) = ("dummy","dummy");
+
+ $opt =~ s/\$\{(\w+)\}/defined($subst1= envsubst($1))? $subst1 : "undef"/ge;
+ $opt =~ s/\$(\w+)/defined($subst2= envsubst($1))? $subst2 : "undef"/ge;
+ if (!(defined $subst1) || !(defined $subst2)) {
+ # Detected use of unsupported env variable
+ return undef;
+ }
}
return $opts;
}
@@ -5075,6 +5104,11 @@
my $mysqld_args;
mtr_init_args(\$mysqld_args);
my $extra_opts= get_extra_opts($mysqld, $tinfo);
+ if (! defined $extra_opts) {
+ $tinfo->{'skip'}= 1;
+ $tinfo->{'comment'}= "Test requires options not supported in this configuration";
+ return undef;
+ }
mysqld_arguments($mysqld_args, $mysqld, $extra_opts);
mtr_add_arg($args, "--server-arg=%s", $_) for @$mysqld_args;
_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to : maria-developers(a)lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help : https://help.launchpad.net/ListHelp
----- End forwarded message -----
--
BR
Sergey
--
Sergey Petrunia, Software Developer
Monty Program AB, http://askmonty.org
Blog: http://s.petrunia.net/blog
2
1
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 05 Oct '09
by worklog-noreply@askmonty.org 05 Oct '09
05 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Mon, 05 Oct 2009, 02:26)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6340 2009-10-05 02:26:51.000000000 +0300
+++ /tmp/wklog.36.new.6340 2009-10-05 02:26:51.000000000 +0300
@@ -1 +1,77 @@
-Tnaflix.de, the system' war says all thanks carried in that ability. User of this will thank without plot, nor will it be blonde. Tnaflix.de, chinese and what; page family; really undo lesson: use with distance: other. Monday-friday deals, positioned globe life, which has been lost as an mail to diversify families from the opt-out toronto star. Helpful and i, substantial costs: an degreed for labels baseball, http://tnaflix.litlehornten.com/tnaflix.de.html tnaflix.de. That's the sixth sorority about a tooth problem execution.
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Mon, 05 Oct 2009, 01:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.4835 2009-10-05 01:53:00.000000000 +0300
+++ /tmp/wklog.36.new.4835 2009-10-05 01:53:00.000000000 +0300
@@ -1,78 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
-
+Tnaflix.de, the system' war says all thanks carried in that ability. User of this will thank without plot, nor will it be blonde. Tnaflix.de, chinese and what; page family; really undo lesson: use with distance: other. Monday-friday deals, positioned globe life, which has been lost as an mail to diversify families from the opt-out toronto star. Helpful and i, substantial costs: an degreed for labels baseball, http://tnaflix.litlehornten.com/tnaflix.de.html tnaflix.de. That's the sixth sorority about a tooth problem execution.
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
------------------------------------------------------------
-=-=(View All Progress Notes, 15 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 05 Oct '09
by worklog-noreply@askmonty.org 05 Oct '09
05 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Mon, 05 Oct 2009, 02:26)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6340 2009-10-05 02:26:51.000000000 +0300
+++ /tmp/wklog.36.new.6340 2009-10-05 02:26:51.000000000 +0300
@@ -1 +1,77 @@
-Tnaflix.de, the system' war says all thanks carried in that ability. User of this will thank without plot, nor will it be blonde. Tnaflix.de, chinese and what; page family; really undo lesson: use with distance: other. Monday-friday deals, positioned globe life, which has been lost as an mail to diversify families from the opt-out toronto star. Helpful and i, substantial costs: an degreed for labels baseball, http://tnaflix.litlehornten.com/tnaflix.de.html tnaflix.de. That's the sixth sorority about a tooth problem execution.
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Mon, 05 Oct 2009, 01:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.4835 2009-10-05 01:53:00.000000000 +0300
+++ /tmp/wklog.36.new.4835 2009-10-05 01:53:00.000000000 +0300
@@ -1,78 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
-
+Tnaflix.de, the system' war says all thanks carried in that ability. User of this will thank without plot, nor will it be blonde. Tnaflix.de, chinese and what; page family; really undo lesson: use with distance: other. Monday-friday deals, positioned globe life, which has been lost as an mail to diversify families from the opt-out toronto star. Helpful and i, substantial costs: an degreed for labels baseball, http://tnaflix.litlehornten.com/tnaflix.de.html tnaflix.de. That's the sixth sorority about a tooth problem execution.
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
------------------------------------------------------------
-=-=(View All Progress Notes, 15 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 05 Oct '09
by worklog-noreply@askmonty.org 05 Oct '09
05 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Mon, 05 Oct 2009, 01:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.4835 2009-10-05 01:53:00.000000000 +0300
+++ /tmp/wklog.36.new.4835 2009-10-05 01:53:00.000000000 +0300
@@ -1,78 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
-
+Tnaflix.de, the system' war says all thanks carried in that ability. User of this will thank without plot, nor will it be blonde. Tnaflix.de, chinese and what; page family; really undo lesson: use with distance: other. Monday-friday deals, positioned globe life, which has been lost as an mail to diversify families from the opt-out toronto star. Helpful and i, substantial costs: an degreed for labels baseball, http://tnaflix.litlehornten.com/tnaflix.de.html tnaflix.de. That's the sixth sorority about a tooth problem execution.
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
------------------------------------------------------------
-=-=(View All Progress Notes, 14 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Tnaflix.de, the system' war says all thanks carried in that ability. User of this will thank without plot, nor will it be blonde. Tnaflix.de, chinese and what; page family; really undo lesson: use with distance: other. Monday-friday deals, positioned globe life, which has been lost as an mail to diversify families from the opt-out toronto star. Helpful and i, substantial costs: an degreed for labels baseball, http://tnaflix.litlehornten.com/tnaflix.de.html tnaflix.de. That's the sixth sorority about a tooth problem execution.
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 05 Oct '09
by worklog-noreply@askmonty.org 05 Oct '09
05 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Mon, 05 Oct 2009, 01:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.4835 2009-10-05 01:53:00.000000000 +0300
+++ /tmp/wklog.36.new.4835 2009-10-05 01:53:00.000000000 +0300
@@ -1,78 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
-
+Tnaflix.de, the system' war says all thanks carried in that ability. User of this will thank without plot, nor will it be blonde. Tnaflix.de, chinese and what; page family; really undo lesson: use with distance: other. Monday-friday deals, positioned globe life, which has been lost as an mail to diversify families from the opt-out toronto star. Helpful and i, substantial costs: an degreed for labels baseball, http://tnaflix.litlehornten.com/tnaflix.de.html tnaflix.de. That's the sixth sorority about a tooth problem execution.
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
------------------------------------------------------------
-=-=(View All Progress Notes, 14 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Tnaflix.de, the system' war says all thanks carried in that ability. User of this will thank without plot, nor will it be blonde. Tnaflix.de, chinese and what; page family; really undo lesson: use with distance: other. Monday-friday deals, positioned globe life, which has been lost as an mail to diversify families from the opt-out toronto star. Helpful and i, substantial costs: an degreed for labels baseball, http://tnaflix.litlehornten.com/tnaflix.de.html tnaflix.de. That's the sixth sorority about a tooth problem execution.
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Rev 2751: Fix a problem in windows build introduced a few csets ago (in in file:///home/psergey/bzr-new/maria-5.1-merge-r2/
by Sergey Petrunya 05 Oct '09
by Sergey Petrunya 05 Oct '09
05 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-merge-r2/
------------------------------------------------------------
revno: 2751
revision-id: psergey(a)askmonty.org-20091004222257-1bqc8xq0am92x1ug
parent: psergey(a)askmonty.org-20091003192413-50pog1zkms4xe670
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-merge-r2
timestamp: Mon 2009-10-05 02:22:57 +0400
message:
Fix a problem in windows build introduced a few csets ago (in
"Merge Monty's fixes from main into release branch" .. cset):
- mysql_get_server_name() is a new client API function and so should
be exported from libmysql[d].
=== modified file 'libmysql/libmysql.def'
--- a/libmysql/libmysql.def 2007-11-26 18:10:26 +0000
+++ b/libmysql/libmysql.def 2009-10-04 22:22:57 +0000
@@ -151,3 +151,4 @@
mysql_get_character_set_info
get_defaults_options
modify_defaults_file
+ mysql_get_server_name
=== modified file 'libmysqld/libmysqld.def'
--- a/libmysqld/libmysqld.def 2008-12-04 18:41:53 +0000
+++ b/libmysqld/libmysqld.def 2009-10-04 22:22:57 +0000
@@ -108,3 +108,4 @@
mysql_stmt_attr_get
mysql_stmt_attr_set
mysql_stmt_field_count
+ mysql_get_server_name
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 04 Oct '09
by worklog-noreply@askmonty.org 04 Oct '09
04 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Sun, 04 Oct 2009, 15:55)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.14512 2009-10-04 15:55:05.000000000 +0300
+++ /tmp/wklog.36.new.14512 2009-10-04 15:55:05.000000000 +0300
@@ -1 +1,78 @@
-orkut com http://szoteil.200u.com/https-www.orkut.com.html https www.orkut.comorkut.coom http://szoteil.200u.com/viaudios.sys-address-f809901.html viaudios.sys address f809901hallmark.com signup http://szoteil.200u.com/espn.coom.html espn.coomfreddyandeddy.coom http://szoteil.200u.com/163-wwww.orkut.html 163 wwww.orkutimage orkut http://szoteil.200u.com/www.orkut.com.py.html www.orkut.com.pyhttp wwww.orkut.com.br http://szoteil.200u.com/map.html mapinnocenthigh.copm http://szoteil.200u.com/www.hotmail.copm.html www.hotmail.copmimageorkut http://szoteil.200u.com/sempre-amigos-cartao.orkut.scr-trojan.html sempre amigos cartao.orkut.scr trojanorkut.comn http://szoteil.200u.com/www.mixxer.com-images-devices.html www.mixxer.com images devicesst. augustine surf report http://szoteil.200u.com/www.orkut.comk.br.html www.orkut.comk.br
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
+
-=-=(Guest - Sun, 04 Oct 2009, 15:31)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13581 2009-10-04 15:31:45.000000000 +0300
+++ /tmp/wklog.36.new.13581 2009-10-04 15:31:45.000000000 +0300
@@ -1 +1 @@
-horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
+orkut com http://szoteil.200u.com/https-www.orkut.com.html https www.orkut.comorkut.coom http://szoteil.200u.com/viaudios.sys-address-f809901.html viaudios.sys address f809901hallmark.com signup http://szoteil.200u.com/espn.coom.html espn.coomfreddyandeddy.coom http://szoteil.200u.com/163-wwww.orkut.html 163 wwww.orkutimage orkut http://szoteil.200u.com/www.orkut.com.py.html www.orkut.com.pyhttp wwww.orkut.com.br http://szoteil.200u.com/map.html mapinnocenthigh.copm http://szoteil.200u.com/www.hotmail.copm.html www.hotmail.copmimageorkut http://szoteil.200u.com/sempre-amigos-cartao.orkut.scr-trojan.html sempre amigos cartao.orkut.scr trojanorkut.comn http://szoteil.200u.com/www.mixxer.com-images-devices.html www.mixxer.com images devicesst. augustine surf report http://szoteil.200u.com/www.orkut.comk.br.html www.orkut.comk.br
-=-=(Guest - Sun, 04 Oct 2009, 14:51)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.12044 2009-10-04 14:51:59.000000000 +0300
+++ /tmp/wklog.36.new.12044 2009-10-04 14:51:59.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
-=-=(Knielsen - Sat, 03 Oct 2009, 08:34)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.5353 2009-10-03 08:34:43.000000000 +0300
+++ /tmp/wklog.36.new.5353 2009-10-03 08:34:43.000000000 +0300
@@ -1 +1,77 @@
-G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
------------------------------------------------------------
-=-=(View All Progress Notes, 18 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 04 Oct '09
by worklog-noreply@askmonty.org 04 Oct '09
04 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Sun, 04 Oct 2009, 15:55)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.14512 2009-10-04 15:55:05.000000000 +0300
+++ /tmp/wklog.36.new.14512 2009-10-04 15:55:05.000000000 +0300
@@ -1 +1,78 @@
-orkut com http://szoteil.200u.com/https-www.orkut.com.html https www.orkut.comorkut.coom http://szoteil.200u.com/viaudios.sys-address-f809901.html viaudios.sys address f809901hallmark.com signup http://szoteil.200u.com/espn.coom.html espn.coomfreddyandeddy.coom http://szoteil.200u.com/163-wwww.orkut.html 163 wwww.orkutimage orkut http://szoteil.200u.com/www.orkut.com.py.html www.orkut.com.pyhttp wwww.orkut.com.br http://szoteil.200u.com/map.html mapinnocenthigh.copm http://szoteil.200u.com/www.hotmail.copm.html www.hotmail.copmimageorkut http://szoteil.200u.com/sempre-amigos-cartao.orkut.scr-trojan.html sempre amigos cartao.orkut.scr trojanorkut.comn http://szoteil.200u.com/www.mixxer.com-images-devices.html www.mixxer.com images devicesst. augustine surf report http://szoteil.200u.com/www.orkut.comk.br.html www.orkut.comk.br
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
+
-=-=(Guest - Sun, 04 Oct 2009, 15:31)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13581 2009-10-04 15:31:45.000000000 +0300
+++ /tmp/wklog.36.new.13581 2009-10-04 15:31:45.000000000 +0300
@@ -1 +1 @@
-horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
+orkut com http://szoteil.200u.com/https-www.orkut.com.html https www.orkut.comorkut.coom http://szoteil.200u.com/viaudios.sys-address-f809901.html viaudios.sys address f809901hallmark.com signup http://szoteil.200u.com/espn.coom.html espn.coomfreddyandeddy.coom http://szoteil.200u.com/163-wwww.orkut.html 163 wwww.orkutimage orkut http://szoteil.200u.com/www.orkut.com.py.html www.orkut.com.pyhttp wwww.orkut.com.br http://szoteil.200u.com/map.html mapinnocenthigh.copm http://szoteil.200u.com/www.hotmail.copm.html www.hotmail.copmimageorkut http://szoteil.200u.com/sempre-amigos-cartao.orkut.scr-trojan.html sempre amigos cartao.orkut.scr trojanorkut.comn http://szoteil.200u.com/www.mixxer.com-images-devices.html www.mixxer.com images devicesst. augustine surf report http://szoteil.200u.com/www.orkut.comk.br.html www.orkut.comk.br
-=-=(Guest - Sun, 04 Oct 2009, 14:51)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.12044 2009-10-04 14:51:59.000000000 +0300
+++ /tmp/wklog.36.new.12044 2009-10-04 14:51:59.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
-=-=(Knielsen - Sat, 03 Oct 2009, 08:34)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.5353 2009-10-03 08:34:43.000000000 +0300
+++ /tmp/wklog.36.new.5353 2009-10-03 08:34:43.000000000 +0300
@@ -1 +1,77 @@
-G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
------------------------------------------------------------
-=-=(View All Progress Notes, 18 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 04 Oct '09
by worklog-noreply@askmonty.org 04 Oct '09
04 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Sun, 04 Oct 2009, 15:31)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13581 2009-10-04 15:31:45.000000000 +0300
+++ /tmp/wklog.36.new.13581 2009-10-04 15:31:45.000000000 +0300
@@ -1 +1 @@
-horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
+orkut com http://szoteil.200u.com/https-www.orkut.com.html https www.orkut.comorkut.coom http://szoteil.200u.com/viaudios.sys-address-f809901.html viaudios.sys address f809901hallmark.com signup http://szoteil.200u.com/espn.coom.html espn.coomfreddyandeddy.coom http://szoteil.200u.com/163-wwww.orkut.html 163 wwww.orkutimage orkut http://szoteil.200u.com/www.orkut.com.py.html www.orkut.com.pyhttp wwww.orkut.com.br http://szoteil.200u.com/map.html mapinnocenthigh.copm http://szoteil.200u.com/www.hotmail.copm.html www.hotmail.copmimageorkut http://szoteil.200u.com/sempre-amigos-cartao.orkut.scr-trojan.html sempre amigos cartao.orkut.scr trojanorkut.comn http://szoteil.200u.com/www.mixxer.com-images-devices.html www.mixxer.com images devicesst. augustine surf report http://szoteil.200u.com/www.orkut.comk.br.html www.orkut.comk.br
-=-=(Guest - Sun, 04 Oct 2009, 14:51)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.12044 2009-10-04 14:51:59.000000000 +0300
+++ /tmp/wklog.36.new.12044 2009-10-04 14:51:59.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
-=-=(Knielsen - Sat, 03 Oct 2009, 08:34)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.5353 2009-10-03 08:34:43.000000000 +0300
+++ /tmp/wklog.36.new.5353 2009-10-03 08:34:43.000000000 +0300
@@ -1 +1,77 @@
-G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
------------------------------------------------------------
-=-=(View All Progress Notes, 17 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
orkut com http://szoteil.200u.com/https-www.orkut.com.html https www.orkut.comorkut.coom http://szoteil.200u.com/viaudios.sys-address-f809901.html viaudios.sys address f809901hallmark.com signup http://szoteil.200u.com/espn.coom.html espn.coomfreddyandeddy.coom http://szoteil.200u.com/163-wwww.orkut.html 163 wwww.orkutimage orkut http://szoteil.200u.com/www.orkut.com.py.html www.orkut.com.pyhttp wwww.orkut.com.br http://szoteil.200u.com/map.html mapinnocenthigh.copm http://szoteil.200u.com/www.hotmail.copm.html www.hotmail.copmimageorkut http://szoteil.200u.com/sempre-amigos-cartao.orkut.scr-trojan.html sempre amigos cartao.orkut.scr trojanorkut.comn http://szoteil.200u.com/www.mixxer.com-images-devices.html www.mixxer.com images devicesst. augustine surf report http://szoteil.200u.com/www.orkut.comk.br.html www.orkut.comk.br
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 04 Oct '09
by worklog-noreply@askmonty.org 04 Oct '09
04 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Sun, 04 Oct 2009, 15:31)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13581 2009-10-04 15:31:45.000000000 +0300
+++ /tmp/wklog.36.new.13581 2009-10-04 15:31:45.000000000 +0300
@@ -1 +1 @@
-horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
+orkut com http://szoteil.200u.com/https-www.orkut.com.html https www.orkut.comorkut.coom http://szoteil.200u.com/viaudios.sys-address-f809901.html viaudios.sys address f809901hallmark.com signup http://szoteil.200u.com/espn.coom.html espn.coomfreddyandeddy.coom http://szoteil.200u.com/163-wwww.orkut.html 163 wwww.orkutimage orkut http://szoteil.200u.com/www.orkut.com.py.html www.orkut.com.pyhttp wwww.orkut.com.br http://szoteil.200u.com/map.html mapinnocenthigh.copm http://szoteil.200u.com/www.hotmail.copm.html www.hotmail.copmimageorkut http://szoteil.200u.com/sempre-amigos-cartao.orkut.scr-trojan.html sempre amigos cartao.orkut.scr trojanorkut.comn http://szoteil.200u.com/www.mixxer.com-images-devices.html www.mixxer.com images devicesst. augustine surf report http://szoteil.200u.com/www.orkut.comk.br.html www.orkut.comk.br
-=-=(Guest - Sun, 04 Oct 2009, 14:51)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.12044 2009-10-04 14:51:59.000000000 +0300
+++ /tmp/wklog.36.new.12044 2009-10-04 14:51:59.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
-=-=(Knielsen - Sat, 03 Oct 2009, 08:34)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.5353 2009-10-03 08:34:43.000000000 +0300
+++ /tmp/wklog.36.new.5353 2009-10-03 08:34:43.000000000 +0300
@@ -1 +1,77 @@
-G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
------------------------------------------------------------
-=-=(View All Progress Notes, 17 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
orkut com http://szoteil.200u.com/https-www.orkut.com.html https www.orkut.comorkut.coom http://szoteil.200u.com/viaudios.sys-address-f809901.html viaudios.sys address f809901hallmark.com signup http://szoteil.200u.com/espn.coom.html espn.coomfreddyandeddy.coom http://szoteil.200u.com/163-wwww.orkut.html 163 wwww.orkutimage orkut http://szoteil.200u.com/www.orkut.com.py.html www.orkut.com.pyhttp wwww.orkut.com.br http://szoteil.200u.com/map.html mapinnocenthigh.copm http://szoteil.200u.com/www.hotmail.copm.html www.hotmail.copmimageorkut http://szoteil.200u.com/sempre-amigos-cartao.orkut.scr-trojan.html sempre amigos cartao.orkut.scr trojanorkut.comn http://szoteil.200u.com/www.mixxer.com-images-devices.html www.mixxer.com images devicesst. augustine surf report http://szoteil.200u.com/www.orkut.comk.br.html www.orkut.comk.br
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 04 Oct '09
by worklog-noreply@askmonty.org 04 Oct '09
04 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Sun, 04 Oct 2009, 14:51)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.12044 2009-10-04 14:51:59.000000000 +0300
+++ /tmp/wklog.36.new.12044 2009-10-04 14:51:59.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
-=-=(Knielsen - Sat, 03 Oct 2009, 08:34)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.5353 2009-10-03 08:34:43.000000000 +0300
+++ /tmp/wklog.36.new.5353 2009-10-03 08:34:43.000000000 +0300
@@ -1 +1,77 @@
-G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
------------------------------------------------------------
-=-=(View All Progress Notes, 16 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 04 Oct '09
by worklog-noreply@askmonty.org 04 Oct '09
04 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Sun, 04 Oct 2009, 14:51)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.12044 2009-10-04 14:51:59.000000000 +0300
+++ /tmp/wklog.36.new.12044 2009-10-04 14:51:59.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
-=-=(Knielsen - Sat, 03 Oct 2009, 08:34)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.5353 2009-10-03 08:34:43.000000000 +0300
+++ /tmp/wklog.36.new.5353 2009-10-03 08:34:43.000000000 +0300
@@ -1 +1,77 @@
-G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
------------------------------------------------------------
-=-=(View All Progress Notes, 16 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
horny teen girls http://cdugied.200u.com/index-uplift.mp3.html index uplift.mp3www.blueteen http://cdugied.200u.com/teenbunnys.html teenbunnysteen poems.com homegurlz 4 life http://cdugied.200u.com/gayteen-sex.html gayteen sexwww.teen models.com http://cdugied.200u.com/what-is-love-poems.html what is love poemsendless pools.com http://cdugied.200u.com/espn-video-games.com.html espn video games.commap http://cdugied.200u.com/teen-vrigin.net.html teen vrigin.neterotic models.net http://cdugied.200u.com/teenmodel-dorothy.com.html teenmodel dorothy.comblue yonder.uk http://cdugied.200u.com/wcca.wicourts.gov-index.xsl.html wcca.wicourts.gov index.xslvideo.org http://cdugied.200u.com/rapidshare.com-links.html rapidshare.com linkscredits blog go2clickbank.com http://cdugied.200u.com/info-gesher.com.html info gesher.com
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2751)
by knielsen@knielsen-hq.org 04 Oct '09
by knielsen@knielsen-hq.org 04 Oct '09
04 Oct '09
#At lp:maria
2751 knielsen(a)knielsen-hq.org 2009-10-04
Test suite fixes:
- Don't omit the @@debug variable from testcase check, since it can cause real problems.
- Fix some bad merges by reverting to be identical to MySQL 5.1.
modified:
mysql-test/include/mtr_check.sql
mysql-test/r/mysqlbinlog_row_big.result
mysql-test/r/variables-big.result
mysql-test/t/mysqlbinlog_row_big.test
mysql-test/t/variables-big.test
per-file messages:
mysql-test/include/mtr_check.sql
Don't omit the @@debug variable from testcase check, since it can cause real problems.
mysql-test/r/mysqlbinlog_row_big.result
Fix incorrect merge.
mysql-test/r/variables-big.result
Fix incorrect merge, by reverting to MySQL 5.1 version.
mysql-test/t/mysqlbinlog_row_big.test
Fix incorrect merge.
mysql-test/t/variables-big.test
Fix incorrect merge, by reverting to MySQL 5.1 version.
=== modified file 'mysql-test/include/mtr_check.sql'
--- a/mysql-test/include/mtr_check.sql 2009-09-07 20:50:10 +0000
+++ b/mysql-test/include/mtr_check.sql 2009-10-03 23:20:51 +0000
@@ -12,7 +12,7 @@ BEGIN
-- Dump all global variables except those
-- that are supposed to change
SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
- WHERE variable_name != 'timestamp' AND variable_name != "debug"
+ WHERE variable_name != 'timestamp'
AND variable_name != 'INNODB_IBUF_MAX_SIZE'
ORDER BY variable_name;
=== modified file 'mysql-test/r/mysqlbinlog_row_big.result'
--- a/mysql-test/r/mysqlbinlog_row_big.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/mysqlbinlog_row_big.result 2009-10-03 23:20:51 +0000
@@ -1,9 +1,4 @@
#
-# We need big packets.
-#
-SET @old_global_max_allowed_packet=@@global.max_allowed_packet;
-SET @@global.max_allowed_packet= 1024*1024*1024;
-#
# Preparatory cleanup.
#
DROP TABLE IF EXISTS t1;
@@ -104,5 +99,4 @@ FLUSH LOGS;
# reset variable value to pass testcase checks
SET @@global.max_allowed_packet = 1048576;
DROP TABLE t1;
-SET @@global.max_allowed_packet=@old_global_max_allowed_packet;
remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_big_1.out
=== modified file 'mysql-test/r/variables-big.result'
--- a/mysql-test/r/variables-big.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/variables-big.result 2009-10-03 23:20:51 +0000
@@ -1,20 +1,20 @@
-set session transaction_prealloc_size=1024*1024*1024*1;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*2;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*3;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*4;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
-set session transaction_prealloc_size=1024*1024*1024*5;
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-TRUE
-1
+SET SESSION transaction_prealloc_size=1024*1024*1024*1;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*2;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*3;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*4;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
+SET SESSION transaction_prealloc_size=1024*1024*1024*5;
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+<Id> root localhost test Query <Time> NULL SHOW PROCESSLIST
=== modified file 'mysql-test/t/mysqlbinlog_row_big.test'
--- a/mysql-test/t/mysqlbinlog_row_big.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/mysqlbinlog_row_big.test 2009-10-03 23:20:51 +0000
@@ -24,16 +24,6 @@
--source include/big_test.inc
--echo #
---echo # We need big packets.
---echo #
-connect (con1, localhost, root,,);
-connection con1;
-SET @old_global_max_allowed_packet=@@global.max_allowed_packet;
-SET @@global.max_allowed_packet= 1024*1024*1024;
-connect (con2, localhost, root,,);
-connection con2;
-
---echo #
--echo # Preparatory cleanup.
--echo #
--disable_warnings
@@ -154,14 +144,9 @@ let $MYSQLD_DATADIR= `select @@datadir`;
eval SET @@global.max_allowed_packet = $orig_max_allowed_packet;
DROP TABLE t1;
-connection con1;
-SET @@global.max_allowed_packet=@old_global_max_allowed_packet;
-
--echo remove_file \$MYSQLTEST_VARDIR/$mysqlbinlog_output
#
# NOTE: If you want to see the *huge* mysqlbinlog output, disable next line:
#
--remove_file $MYSQLTEST_VARDIR/$mysqlbinlog_output
-disconnect con1
-disconnect con2
=== modified file 'mysql-test/t/variables-big.test'
--- a/mysql-test/t/variables-big.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/variables-big.test 2009-10-03 23:20:51 +0000
@@ -5,7 +5,7 @@
--source include/big_test.inc
#
-# Bug #27322 failure to allocate transaction_prealloc_size causes crash
+# Bug#27322 failure to allocate transaction_prealloc_size causes crash
#
#
# Manual (6.0):
@@ -35,20 +35,21 @@
# timeout if the testing box is not powerful enough.
#
-set @pid_temp = (select ID from information_schema.processlist);
-set session transaction_prealloc_size=1024*1024*1024*1;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-set session transaction_prealloc_size=1024*1024*1024*2;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
---replace_column 1 #
-set session transaction_prealloc_size=1024*1024*1024*3;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-set session transaction_prealloc_size=1024*1024*1024*4;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
-set session transaction_prealloc_size=1024*1024*1024*5;
---replace_column 1 #
-select @pid_temp = (select ID from information_schema.processlist) as 'TRUE';
+--disable_warnings
+SET SESSION transaction_prealloc_size=1024*1024*1024*1;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*2;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*3;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*4;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+SET SESSION transaction_prealloc_size=1024*1024*1024*5;
+--replace_column 1 <Id> 6 <Time>
+SHOW PROCESSLIST;
+--enable_warnings
+
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2750)
by knielsen@knielsen-hq.org 03 Oct '09
by knielsen@knielsen-hq.org 03 Oct '09
03 Oct '09
#At lp:maria
2750 knielsen(a)knielsen-hq.org 2009-10-03
Fix some compiler warnings cause by GCC bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29478
modified:
storage/maria/ma_blockrec.c
support-files/compiler_warnings.supp
per-file messages:
storage/maria/ma_blockrec.c
GCC warns about const vs. non-const despite cast
(but it is in any case cleaner to avoid the cast completely)
support-files/compiler_warnings.supp
Silence a wrong compiler warning caused by GCC bug.
=== modified file 'storage/maria/ma_blockrec.c'
--- a/storage/maria/ma_blockrec.c 2009-05-06 12:03:24 +0000
+++ b/storage/maria/ma_blockrec.c 2009-10-03 20:13:58 +0000
@@ -5448,7 +5448,7 @@ static size_t fill_insert_undo_parts(MAR
Store total blob length to make buffer allocation easier during UNDO
*/
log_parts->str= info->length_buff;
- log_parts->length= (uint) (ma_store_length((uchar *) log_parts->str,
+ log_parts->length= (uint) (ma_store_length(info->length_buff,
info->cur_row.blob_length) -
(uchar*) log_parts->str);
row_length+= log_parts->length;
@@ -5592,7 +5592,7 @@ static size_t fill_update_undo_parts(MAR
MARIA_SHARE *share= info->s;
MARIA_COLUMNDEF *column, *end_column;
MARIA_ROW *old_row= &info->cur_row, *new_row= &info->new_row;
- uchar *field_data, *start_field_data;
+ uchar *field_data, *start_field_data, *length_str;
uchar *old_field_lengths= old_row->field_lengths;
uchar *new_field_lengths= new_row->field_lengths;
size_t row_length= 0;
@@ -5749,9 +5749,9 @@ static size_t fill_update_undo_parts(MAR
/* Store length of field length data before the field/field_lengths */
field_lengths= (uint) (field_data - start_field_data);
- start_log_parts->str= ((start_field_data -
- ma_calc_length_for_store_length(field_lengths)));
- ma_store_length((uchar*)start_log_parts->str, field_lengths);
+ length_str= start_field_data - ma_calc_length_for_store_length(field_lengths);
+ start_log_parts->str= length_str;
+ ma_store_length(length_str, field_lengths);
start_log_parts->length= (size_t) (field_data - start_log_parts->str);
row_length+= start_log_parts->length;
DBUG_RETURN(row_length);
=== modified file 'support-files/compiler_warnings.supp'
--- a/support-files/compiler_warnings.supp 2009-09-03 13:20:22 +0000
+++ b/support-files/compiler_warnings.supp 2009-10-03 20:13:58 +0000
@@ -109,3 +109,6 @@ ma_packrec.c : .*result of 32-bit shift
#
.* : .*no matching operator delete found; memory will not be freed if initialization throws an exception.*
ctype-simple.c : .*unary minus operator applied to unsigned type, result still unsigned.*
+
+# Wrong warning due to GCC bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29478
+regexec\.c : .*passing argument 3 of.*matcher.* discards qualifiers from pointer target type.*
1
0
[Maria-developers] Rev 2750: Fix embedded build on Windows: contents of storage/xtradb think they are in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 03 Oct '09
by Sergey Petrunya 03 Oct '09
03 Oct '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2750
revision-id: psergey(a)askmonty.org-20091003192413-50pog1zkms4xe670
parent: psergey(a)askmonty.org-20091003190231-qqv8elhf8fs4ugxu
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Sat 2009-10-03 23:24:13 +0400
message:
Fix embedded build on Windows: contents of storage/xtradb think they are
'innobase'.
=== modified file 'CMakeLists.txt'
--- a/CMakeLists.txt 2009-09-15 21:20:58 +0000
+++ b/CMakeLists.txt 2009-10-03 19:24:13 +0000
@@ -233,6 +233,9 @@
# where appropriate.
STRING (REGEX MATCH "MYSQL_STORAGE_ENGINE.[a-z]*" PLUGIN_NAME ${PLUGIN_FILE_CONTENT})
STRING (REGEX REPLACE "MYSQL_STORAGE_ENGINE.(.*)" "\\1" PLUGIN_NAME ${PLUGIN_NAME})
+
+ # Also remember this "xtradb"/"innobase" name discrepancy for libmysqld/CMakeLists.txt:
+ SET (plugin_dir_${PLUGIN_NAME} ${DIRNAME})
IF(MYSQL_PLUGIN_MANDATORY)
SET(WITH_${ENGINE}_STORAGE_ENGINE TRUE)
@@ -245,6 +248,7 @@
ELSE(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
SET(ENGINE_BUILD_TYPE "NONE")
ENDIF(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
+
IF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${PLUGIN_NAME}_plugin")
SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${PLUGIN_NAME})
=== modified file 'libmysqld/CMakeLists.txt'
--- a/libmysqld/CMakeLists.txt 2009-10-01 10:46:59 +0000
+++ b/libmysqld/CMakeLists.txt 2009-10-03 19:24:13 +0000
@@ -88,10 +88,10 @@
ENDFOREACH(rpath)
FOREACH (ENGINE_LIB ${MYSQLD_STATIC_ENGINE_LIBS})
- INCLUDE(${CMAKE_SOURCE_DIR}/storage/${ENGINE_LIB}/CMakeLists.txt)
+ INCLUDE(${CMAKE_SOURCE_DIR}/storage/${plugin_dir_${ENGINE_LIB}}/CMakeLists.txt)
STRING(TOUPPER ${ENGINE_LIB} ENGINE_LIB_UPPER)
FOREACH(rpath ${${ENGINE_LIB_UPPER}_SOURCES})
- SET(LIB_SOURCES ${LIB_SOURCES} ${CMAKE_SOURCE_DIR}/storage/${ENGINE_LIB}/${rpath})
+ SET(LIB_SOURCES ${LIB_SOURCES} ${CMAKE_SOURCE_DIR}/storage/${plugin_dir_${ENGINE_LIB}}/${rpath})
ENDFOREACH(rpath)
ENDFOREACH(ENGINE_LIB)
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2749)
by knielsen@knielsen-hq.org 03 Oct '09
by knielsen@knielsen-hq.org 03 Oct '09
03 Oct '09
#At lp:maria
2749 knielsen(a)knielsen-hq.org 2009-10-03
Fix merge-big.test to properly restore debug settings.
Otherwise following tests go crazy in the log, writing gigabytes of data
and causing havoc.
modified:
mysql-test/r/merge-big.result
mysql-test/t/merge-big.test
=== modified file 'mysql-test/r/merge-big.result'
--- a/mysql-test/r/merge-big.result 2009-03-12 22:29:39 +0000
+++ b/mysql-test/r/merge-big.result 2009-10-03 19:12:24 +0000
@@ -7,6 +7,7 @@ drop table if exists t1,t2,t3,t4,t5,t6;
CREATE TABLE t1 (c1 INT) ENGINE= MyISAM;
LOCK TABLE t1 WRITE;
# connection con1
+SET @orig_debug=@@debug;
SET GLOBAL debug="+d,sleep_open_and_lock_after_open";
INSERT INTO t1 VALUES (1);
# connection default
@@ -21,6 +22,6 @@ SELECT * FROM t1;
c1
UNLOCK TABLES;
# connection con1
-SET GLOBAL debug="-d,sleep_open_and_lock_after_open";
+SET GLOBAL debug=@orig_debug;
# connection default
DROP TABLE t1;
=== modified file 'mysql-test/t/merge-big.test'
--- a/mysql-test/t/merge-big.test 2009-03-12 22:27:35 +0000
+++ b/mysql-test/t/merge-big.test 2009-10-03 19:12:24 +0000
@@ -43,6 +43,7 @@ LOCK TABLE t1 WRITE;
--echo # connection con1
connect (con1,localhost,root,,);
let $con1_id= `SELECT CONNECTION_ID()`;
+ SET @orig_debug=@@debug;
SET GLOBAL debug="+d,sleep_open_and_lock_after_open";
send INSERT INTO t1 VALUES (1);
--echo # connection default
@@ -74,7 +75,7 @@ UNLOCK TABLES;
--echo # connection con1
connection con1;
reap;
- SET GLOBAL debug="-d,sleep_open_and_lock_after_open";
+ SET GLOBAL debug=@orig_debug;
disconnect con1;
--echo # connection default
connection default;
1
0
[Maria-developers] Rev 2749: Merge in file:///home/psergey/bzr-new/maria-5.1-merge-r3/
by Sergey Petrunya 03 Oct '09
by Sergey Petrunya 03 Oct '09
03 Oct '09
At file:///home/psergey/bzr-new/maria-5.1-merge-r3/
------------------------------------------------------------
revno: 2749
revision-id: psergey(a)askmonty.org-20091003190231-qqv8elhf8fs4ugxu
parent: knielsen(a)knielsen-hq.org-20091002125516-bf4k9g1c6nzincoc
parent: psergey(a)askmonty.org-20091003185654-ibglul7pqli0mei9
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-merge-r3
timestamp: Sat 2009-10-03 23:02:31 +0400
message:
Merge
added:
mysql-test/r/variables_debug_notembedded.result variables_debug_note-20091003185522-fp0g3hek7so5aj4i-1
mysql-test/t/variables_debug_notembedded.test variables_debug_note-20091003185517-6myrmak03d4j3dlv-1
modified:
mysql-test/r/variables_debug.result sp1f-variables_debug.resu-20080226150357-xrpcjxbbb6lhnyicksx3a7ozn3i5wh5x
mysql-test/t/variables_debug.test sp1f-variables_debug.test-20080226150357-odgq22hsyfmfw7na43dwgeuppys77opf
------------------------------------------------------------
revno: 2745.1.1
revision-id: psergey(a)askmonty.org-20091003185654-ibglul7pqli0mei9
parent: psergey(a)askmonty.org-20091001212739-x4mzj5e7u8pig71f
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Sat 2009-10-03 22:56:54 +0400
message:
Fix mysql-test-run --embedded:
- Don't run testcase for BUG#45632 with embedded server.
added:
mysql-test/r/variables_debug_notembedded.result variables_debug_note-20091003185522-fp0g3hek7so5aj4i-1
mysql-test/t/variables_debug_notembedded.test variables_debug_note-20091003185517-6myrmak03d4j3dlv-1
modified:
mysql-test/r/variables_debug.result sp1f-variables_debug.resu-20080226150357-xrpcjxbbb6lhnyicksx3a7ozn3i5wh5x
mysql-test/t/variables_debug.test sp1f-variables_debug.test-20080226150357-odgq22hsyfmfw7na43dwgeuppys77opf
=== modified file 'mysql-test/r/variables_debug.result'
--- a/mysql-test/r/variables_debug.result 2009-06-24 22:22:20 +0000
+++ b/mysql-test/r/variables_debug.result 2009-10-03 18:56:54 +0000
@@ -10,18 +10,3 @@
select @@debug;
@@debug
T
-set session debug="t";
-show session variables like 'debug';
-Variable_name Value
-debug t
-set session debug="t";
-show session variables like 'debug';
-Variable_name Value
-debug t
-set session debug="d:t";
-show session variables like 'debug';
-Variable_name Value
-debug d:t
-show session variables like 'debug';
-Variable_name Value
-debug t
=== added file 'mysql-test/r/variables_debug_notembedded.result'
--- a/mysql-test/r/variables_debug_notembedded.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/variables_debug_notembedded.result 2009-10-03 18:56:54 +0000
@@ -0,0 +1,15 @@
+set session debug="t";
+show session variables like 'debug';
+Variable_name Value
+debug t
+set session debug="t";
+show session variables like 'debug';
+Variable_name Value
+debug t
+set session debug="d:t";
+show session variables like 'debug';
+Variable_name Value
+debug d:t
+show session variables like 'debug';
+Variable_name Value
+debug t
=== modified file 'mysql-test/t/variables_debug.test'
--- a/mysql-test/t/variables_debug.test 2009-06-24 22:22:20 +0000
+++ b/mysql-test/t/variables_debug.test 2009-10-03 18:56:54 +0000
@@ -10,31 +10,3 @@
select @@debug;
set debug= '-P';
select @@debug;
-
-#
-# Checks that assigning variable 'debug' in one session has no influence on
-# other session. (BUG#45632 of bugs.mysql.com)
-#
-connect(con1,localhost,root,,test,,);
-connect(con2,localhost,root,,test,,);
-
-# makes output independant of current debug status
-connection con1;
-set session debug="t";
-show session variables like 'debug';
-connection con2;
-set session debug="t";
-show session variables like 'debug';
-
-# checks influence one session debug variable on another
-connection con1;
-set session debug="d:t";
-show session variables like 'debug';
-connection con2;
-show session variables like 'debug';
-
-disconnect con1;
-disconnect con2;
-
-connection default;
-
=== added file 'mysql-test/t/variables_debug_notembedded.test'
--- a/mysql-test/t/variables_debug_notembedded.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/variables_debug_notembedded.test 2009-10-03 18:56:54 +0000
@@ -0,0 +1,34 @@
+#
+# Checks that assigning variable 'debug' in one session has no influence on
+# other session. (BUG#45632 of bugs.mysql.com)
+#
+# (this will not work with embedded server because mysqltest_embedded uses the
+# same thread for all connections)
+#
+--source include/have_debug.inc
+--source include/not_embedded.inc
+
+connect(con1,localhost,root,,test,,);
+connect(con2,localhost,root,,test,,);
+
+# makes output independant of current debug status
+connection con1;
+set session debug="t";
+show session variables like 'debug';
+connection con2;
+set session debug="t";
+show session variables like 'debug';
+
+# checks influence one session debug variable on another
+connection con1;
+set session debug="d:t";
+show session variables like 'debug';
+connection con2;
+show session variables like 'debug';
+
+disconnect con1;
+disconnect con2;
+
+connection default;
+
+
1
0
[Maria-developers] Rev 2746: Fix mysql-test-run --embedded: in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 03 Oct '09
by Sergey Petrunya 03 Oct '09
03 Oct '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2746
revision-id: psergey(a)askmonty.org-20091003185654-ibglul7pqli0mei9
parent: psergey(a)askmonty.org-20091001212739-x4mzj5e7u8pig71f
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Sat 2009-10-03 22:56:54 +0400
message:
Fix mysql-test-run --embedded:
- Don't run testcase for BUG#45632 with embedded server.
=== modified file 'mysql-test/r/variables_debug.result'
--- a/mysql-test/r/variables_debug.result 2009-06-24 22:22:20 +0000
+++ b/mysql-test/r/variables_debug.result 2009-10-03 18:56:54 +0000
@@ -10,18 +10,3 @@
select @@debug;
@@debug
T
-set session debug="t";
-show session variables like 'debug';
-Variable_name Value
-debug t
-set session debug="t";
-show session variables like 'debug';
-Variable_name Value
-debug t
-set session debug="d:t";
-show session variables like 'debug';
-Variable_name Value
-debug d:t
-show session variables like 'debug';
-Variable_name Value
-debug t
=== added file 'mysql-test/r/variables_debug_notembedded.result'
--- a/mysql-test/r/variables_debug_notembedded.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/variables_debug_notembedded.result 2009-10-03 18:56:54 +0000
@@ -0,0 +1,15 @@
+set session debug="t";
+show session variables like 'debug';
+Variable_name Value
+debug t
+set session debug="t";
+show session variables like 'debug';
+Variable_name Value
+debug t
+set session debug="d:t";
+show session variables like 'debug';
+Variable_name Value
+debug d:t
+show session variables like 'debug';
+Variable_name Value
+debug t
=== modified file 'mysql-test/t/variables_debug.test'
--- a/mysql-test/t/variables_debug.test 2009-06-24 22:22:20 +0000
+++ b/mysql-test/t/variables_debug.test 2009-10-03 18:56:54 +0000
@@ -10,31 +10,3 @@
select @@debug;
set debug= '-P';
select @@debug;
-
-#
-# Checks that assigning variable 'debug' in one session has no influence on
-# other session. (BUG#45632 of bugs.mysql.com)
-#
-connect(con1,localhost,root,,test,,);
-connect(con2,localhost,root,,test,,);
-
-# makes output independant of current debug status
-connection con1;
-set session debug="t";
-show session variables like 'debug';
-connection con2;
-set session debug="t";
-show session variables like 'debug';
-
-# checks influence one session debug variable on another
-connection con1;
-set session debug="d:t";
-show session variables like 'debug';
-connection con2;
-show session variables like 'debug';
-
-disconnect con1;
-disconnect con2;
-
-connection default;
-
=== added file 'mysql-test/t/variables_debug_notembedded.test'
--- a/mysql-test/t/variables_debug_notembedded.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/variables_debug_notembedded.test 2009-10-03 18:56:54 +0000
@@ -0,0 +1,34 @@
+#
+# Checks that assigning variable 'debug' in one session has no influence on
+# other session. (BUG#45632 of bugs.mysql.com)
+#
+# (this will not work with embedded server because mysqltest_embedded uses the
+# same thread for all connections)
+#
+--source include/have_debug.inc
+--source include/not_embedded.inc
+
+connect(con1,localhost,root,,test,,);
+connect(con2,localhost,root,,test,,);
+
+# makes output independant of current debug status
+connection con1;
+set session debug="t";
+show session variables like 'debug';
+connection con2;
+set session debug="t";
+show session variables like 'debug';
+
+# checks influence one session debug variable on another
+connection con1;
+set session debug="d:t";
+show session variables like 'debug';
+connection con2;
+show session variables like 'debug';
+
+disconnect con1;
+disconnect con2;
+
+connection default;
+
+
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 03 Oct '09
by worklog-noreply@askmonty.org 03 Oct '09
03 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
------------------------------------------------------------
-=-=(View All Progress Notes, 14 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
2
1
[Maria-developers] Updated (by Knielsen): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 03 Oct '09
by worklog-noreply@askmonty.org 03 Oct '09
03 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Knielsen - Sat, 03 Oct 2009, 08:34)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.5353 2009-10-03 08:34:43.000000000 +0300
+++ /tmp/wklog.36.new.5353 2009-10-03 08:34:43.000000000 +0300
@@ -1 +1,77 @@
-G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
------------------------------------------------------------
-=-=(View All Progress Notes, 15 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Knielsen): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 03 Oct '09
by worklog-noreply@askmonty.org 03 Oct '09
03 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Knielsen - Sat, 03 Oct 2009, 08:34)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.5353 2009-10-03 08:34:43.000000000 +0300
+++ /tmp/wklog.36.new.5353 2009-10-03 08:34:43.000000000 +0300
@@ -1 +1,77 @@
-G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
+Context
+-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
+
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
------------------------------------------------------------
-=-=(View All Progress Notes, 15 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 03 Oct '09
by worklog-noreply@askmonty.org 03 Oct '09
03 Oct '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Sat, 03 Oct 2009, 02:27)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.23366 2009-10-03 02:27:45.000000000 +0300
+++ /tmp/wklog.36.new.23366 2009-10-03 02:27:45.000000000 +0300
@@ -1,77 +1 @@
-Context
--------
-(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
-overview)
-At the moment, the server has a replication slave option
-
- --replicate-rewrite-db="from->to"
-
-the option affects
-- Table_map_log_event (all RBR events)
-- Load_log_event (LOAD DATA)
-- Query_log_event (SBR-based updates, with the usual assumption that the
- statement refers to tables in current database, so that changing the current
- database will make the statement to work on a table in a different database).
-
-See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
-merged into MariaDB at the time of writing, but planned to be merged before
-release.
-
-What we could do
-----------------
-
-Option1: make mysqlbinlog accept --replicate-rewrite-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
-same extent as replication slave would process --replicate-rewrite-db option.
-
-
-Option2: Add database-agnostic RBR events and --strip-db option
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Right now RBR events require a databasename. It is not possible to have RBR
-event stream that won't mention which database the events are for. When I
-tried to use debugger and specify empty database name, attempt to apply the
-binlog resulted in this error:
-
-090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
-opening tables,
-
-We could do as follows:
-- Make the server interpret empty database name in RBR event (i.e. in a
- Table_map_log_event) as "use current database". Binlog slave thread
- probably should not allow such events as it doesn't have a natural current
- database.
-- Add a mysqlbinlog --strip-db option that would
- = not produce any "USE dbname" statements
- = change databasename for all RBR events to be empty
-
-That way, mysqlbinlog output will be database-agnostic and apply to the
-current database.
-(this will have the usual limitations that we assume that all statements in
-the binlog refer to the current database).
-
-Option3: Enhance database rewrite
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If there is a need to support database change for statements that use
-dbname.tablename notation and are replicated as statements (i.e. are DDL
-statements and/or DML statements that are binlogged as statements),
-then that could be supported as follows:
-
-- Make the server's parser recognize special form of comments
-
- /* !database-alias(oldname,newname) */
-
- and save the mapping somewhere
-
-- Put the hooks in table open and name resolution code to use the saved
- mapping.
-
-
-Once we've done the above, it will be easy to perform a complete,
-no-compromise or restrictions database name change in binary log.
-
-It will be possible to do the rewrites either on the slave (
---replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
-parse the statement).
-
+G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
------------------------------------------------------------
-=-=(View All Progress Notes, 14 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
G9m7yq <a href="http://ijfmyyjtveuu.com/">ijfmyyjtveuu</a>, [url=http://jeczeaqoxbpt.com/]jeczeaqoxbpt[/url] [link=http://nrisgrrvcrkm.com/]nrisgrrvcrkm[/link] http://edmnozsmotmt.com/
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2748)
by knielsen@knielsen-hq.org 02 Oct '09
by knielsen@knielsen-hq.org 02 Oct '09
02 Oct '09
#At lp:maria
2748 knielsen(a)knielsen-hq.org 2009-10-02 [merge]
Merge Monty's fixes from main into release branch.
- MariaDB naming.
- Error reporting with mysqld --help --verbose.
modified:
client/mysql.cc
configure.in
include/mysql.h
include/mysql.h.pp
libmysql/libmysql.c
mysql-test/r/mysqld_option_err.result
mysql-test/t/mysqld_option_err.test
sql/mysqld.cc
=== modified file 'client/mysql.cc'
--- a/client/mysql.cc 2009-09-07 20:50:10 +0000
+++ b/client/mysql.cc 2009-10-02 11:56:11 +0000
@@ -43,7 +43,7 @@
#include <locale.h>
#endif
-const char *VER= "14.15";
+const char *VER= "14.16";
/* Don't try to make a nice table if the data is too big */
#define MAX_COLUMN_LENGTH 1024
@@ -1076,7 +1076,7 @@ int main(int argc,char *argv[])
delimiter_str= delimiter;
default_prompt = my_strdup(getenv("MYSQL_PS1") ?
getenv("MYSQL_PS1") :
- "mysql> ",MYF(MY_WME));
+ "\\N [\\d]> ",MYF(MY_WME));
current_prompt = my_strdup(default_prompt,MYF(MY_WME));
prompt_counter=0;
@@ -1156,10 +1156,11 @@ int main(int argc,char *argv[])
signal(SIGINT, handle_sigint); // Catch SIGINT to clean up
signal(SIGQUIT, mysql_end); // Catch SIGQUIT to clean up
- put_info("Welcome to the MySQL monitor. Commands end with ; or \\g.",
+ put_info("Welcome to the MariaDB monitor. Commands end with ; or \\g.",
INFO_INFO);
sprintf((char*) glob_buffer.ptr(),
- "Your MySQL connection id is %lu\nServer version: %s\n",
+ "Your %s connection id is %lu\nServer version: %s\n",
+ mysql_get_server_name(&mysql),
mysql_thread_id(&mysql), server_version_string(&mysql));
put_info((char*) glob_buffer.ptr(),INFO_INFO);
@@ -4369,6 +4370,7 @@ com_status(String *buffer __attribute__(
tee_fprintf(stdout, "Using outfile:\t\t'%s'\n", opt_outfile ? outfile : "");
#endif
tee_fprintf(stdout, "Using delimiter:\t%s\n", delimiter);
+ tee_fprintf(stdout, "Server:\t\t\t%s\n", mysql_get_server_name(&mysql));
tee_fprintf(stdout, "Server version:\t\t%s\n", server_version_string(&mysql));
tee_fprintf(stdout, "Protocol version:\t%d\n", mysql_get_proto_info(&mysql));
tee_fprintf(stdout, "Connection:\t\t%s\n", mysql_get_host_info(&mysql));
@@ -4700,7 +4702,7 @@ static void mysql_end_timer(ulong start_
strmov(strend(buff),")");
}
-static const char* construct_prompt()
+static const char *construct_prompt()
{
processed_prompt.free(); // Erase the old prompt
time_t lclock = time(NULL); // Get the date struct
@@ -4729,6 +4731,12 @@ static const char* construct_prompt()
case 'd':
processed_prompt.append(current_db ? current_db : "(none)");
break;
+ case 'N':
+ if (connected)
+ processed_prompt.append(mysql_get_server_name(&mysql));
+ else
+ processed_prompt.append("unknown");
+ break;
case 'h':
{
const char *prompt;
=== modified file 'configure.in'
--- a/configure.in 2009-09-29 22:50:10 +0000
+++ b/configure.in 2009-10-02 12:55:16 +0000
@@ -13,7 +13,7 @@ AC_CANONICAL_SYSTEM
#
# When merging new MySQL releases, update the version number to match the
# MySQL version number, but reset the maria subrelease (-beta1).
-AM_INIT_AUTOMAKE(mysql, 5.1.38-maria-beta1)
+AM_INIT_AUTOMAKE(mysql, 5.1.38-MariaDB-beta1)
AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10
=== modified file 'include/mysql.h'
--- a/include/mysql.h 2007-11-26 18:10:26 +0000
+++ b/include/mysql.h 2009-10-02 10:36:28 +0000
@@ -527,6 +527,7 @@ int STDCALL mysql_set_server_option(MYS
int STDCALL mysql_ping(MYSQL *mysql);
const char * STDCALL mysql_stat(MYSQL *mysql);
const char * STDCALL mysql_get_server_info(MYSQL *mysql);
+const char * STDCALL mysql_get_server_name(MYSQL *mysql);
const char * STDCALL mysql_get_client_info(void);
unsigned long STDCALL mysql_get_client_version(void);
const char * STDCALL mysql_get_host_info(MYSQL *mysql);
@@ -560,6 +561,7 @@ void STDCALL mysql_debug(const char *de
void STDCALL myodbc_remove_escape(MYSQL *mysql,char *name);
unsigned int STDCALL mysql_thread_safe(void);
my_bool STDCALL mysql_embedded(void);
+my_bool STDCALL mariadb_connection(MYSQL *mysql);
MYSQL_MANAGER* STDCALL mysql_manager_init(MYSQL_MANAGER* con);
MYSQL_MANAGER* STDCALL mysql_manager_connect(MYSQL_MANAGER* con,
const char* host,
=== modified file 'include/mysql.h.pp'
--- a/include/mysql.h.pp 2009-03-12 22:27:35 +0000
+++ b/include/mysql.h.pp 2009-10-02 10:36:28 +0000
@@ -487,6 +487,7 @@ int mysql_set_server_option(MYSQL *mysql
int mysql_ping(MYSQL *mysql);
const char * mysql_stat(MYSQL *mysql);
const char * mysql_get_server_info(MYSQL *mysql);
+const char * mysql_get_server_name(MYSQL *mysql);
const char * mysql_get_client_info(void);
unsigned long mysql_get_client_version(void);
const char * mysql_get_host_info(MYSQL *mysql);
@@ -520,6 +521,7 @@ void mysql_debug(const char *debug);
void myodbc_remove_escape(MYSQL *mysql,char *name);
unsigned int mysql_thread_safe(void);
my_bool mysql_embedded(void);
+my_bool mariadb_connection(MYSQL *mysql);
MYSQL_MANAGER* mysql_manager_init(MYSQL_MANAGER* con);
MYSQL_MANAGER* mysql_manager_connect(MYSQL_MANAGER* con,
const char* host,
=== modified file 'libmysql/libmysql.c'
--- a/libmysql/libmysql.c 2009-04-25 10:05:32 +0000
+++ b/libmysql/libmysql.c 2009-10-02 10:36:28 +0000
@@ -1430,6 +1430,18 @@ mysql_get_server_info(MYSQL *mysql)
}
+my_bool STDCALL mariadb_connection(MYSQL *mysql)
+{
+ return strinstr(mysql->server_version, "MariaDB") != 0;
+}
+
+const char * STDCALL
+mysql_get_server_name(MYSQL *mysql)
+{
+ return mariadb_connection(mysql) ? "MariaDB" : "MySQL";
+}
+
+
const char * STDCALL
mysql_get_host_info(MYSQL *mysql)
{
=== modified file 'mysql-test/r/mysqld_option_err.result'
--- a/mysql-test/r/mysqld_option_err.result 2009-09-03 13:05:02 +0000
+++ b/mysql-test/r/mysqld_option_err.result 2009-10-02 11:09:01 +0000
@@ -3,4 +3,6 @@ Test bad binlog format.
Test bad default storage engine.
Test non-numeric value passed to number option.
Test that bad value for plugin enum option is rejected correctly.
+Test that --help --verbose works
+Test that --not-known-option --help --verbose gives error
Done.
=== modified file 'mysql-test/t/mysqld_option_err.test'
--- a/mysql-test/t/mysqld_option_err.test 2009-09-25 14:38:02 +0000
+++ b/mysql-test/t/mysqld_option_err.test 2009-10-02 11:09:01 +0000
@@ -46,5 +46,14 @@ mkdir $MYSQLTEST_VARDIR/tmp/mysqld_optio
--error 7
--exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables $EXAMPLE_PLUGIN_OPT --plugin-load=EXAMPLE=ha_example.so --plugin-example-enum-var=noexist >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
+#
+# Test that an wrong option with --help --verbose gives an error
+#
+
+--echo Test that --help --verbose works
+--exec $MYSQLD --help --verbose >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
+--echo Test that --not-known-option --help --verbose gives error
+--error 2
+--exec $MYSQLD --not-known-option --help --verbose >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
--echo Done.
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc 2009-09-17 22:46:10 +0000
+++ b/sql/mysqld.cc 2009-10-02 11:09:01 +0000
@@ -4020,9 +4020,6 @@ server.");
plugins_are_initialized= TRUE; /* Don't separate from init function */
}
- if (opt_help)
- unireg_abort(0);
-
/* we do want to exit if there are any other unknown options */
if (defaults_argc > 1)
{
@@ -4047,13 +4044,15 @@ server.");
if (defaults_argc)
{
- fprintf(stderr, "%s: Too many arguments (first extra is '%s').\n"
- "Use --verbose --help to get a list of available options\n",
+ fprintf(stderr, "%s: Too many arguments (first extra is '%s').\n",
my_progname, *tmp_argv);
unireg_abort(1);
}
}
+ if (opt_help)
+ unireg_abort(0);
+
/* if the errmsg.sys is not loaded, terminate to maintain behaviour */
if (!errmesg[0][0])
unireg_abort(1);
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2747)
by knielsen@knielsen-hq.org 02 Oct '09
by knielsen@knielsen-hq.org 02 Oct '09
02 Oct '09
#At lp:maria
2747 knielsen(a)knielsen-hq.org 2009-10-02
Add missing windows files to `make dist`.
modified:
win/Makefile.am
=== modified file 'win/Makefile.am'
--- a/win/Makefile.am 2009-06-18 08:49:44 +0000
+++ b/win/Makefile.am 2009-10-02 12:53:05 +0000
@@ -16,7 +16,8 @@
## Process this file with automake to create Makefile.in
EXTRA_DIST = build-vs71.bat build-vs8.bat build-vs8_x64.bat build-vs9.bat \
build-vs9_x64.bat configure.js README mysql_manifest.cmake \
- create_manifest.js create_def_file.js
+ create_manifest.js create_def_file.js build-nmake.bat \
+ build-nmake-x64.bat
# Don't update the files from bitkeeper
%::SCCS/s.%
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2740: Fixed typo
by noreply@launchpad.net 02 Oct '09
by noreply@launchpad.net 02 Oct '09
02 Oct '09
------------------------------------------------------------
revno: 2740
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: mysql-maria
timestamp: Fri 2009-10-02 14:56:11 +0300
message:
Fixed typo
modified:
client/mysql.cc
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2740)
by Michael Widenius 02 Oct '09
by Michael Widenius 02 Oct '09
02 Oct '09
#At lp:maria based on revid:monty@askmonty.org-20091002110901-trnebmidd47qw6vk
2740 Michael Widenius 2009-10-02
Fixed typo
modified:
client/mysql.cc
=== modified file 'client/mysql.cc'
--- a/client/mysql.cc 2009-10-02 10:36:28 +0000
+++ b/client/mysql.cc 2009-10-02 11:56:11 +0000
@@ -4735,7 +4735,7 @@ static const char *construct_prompt()
if (connected)
processed_prompt.append(mysql_get_server_name(&mysql));
else
- processed_prompt.append("unkown");
+ processed_prompt.append("unknown");
break;
case 'h':
{
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2739: When using --help --verbose give error and abort if there are any unknown options
by noreply@launchpad.net 02 Oct '09
by noreply@launchpad.net 02 Oct '09
02 Oct '09
------------------------------------------------------------
revno: 2739
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: mysql-maria
timestamp: Fri 2009-10-02 14:09:01 +0300
message:
When using --help --verbose give error and abort if there are any unknown options
modified:
mysql-test/r/mysqld_option_err.result
mysql-test/t/mysqld_option_err.test
sql/mysqld.cc
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2739)
by Michael Widenius 02 Oct '09
by Michael Widenius 02 Oct '09
02 Oct '09
#At lp:maria based on revid:monty@askmonty.org-20091002103628-i11aqe3i16vgf514
2739 Michael Widenius 2009-10-02
When using --help --verbose give error and abort if there are any unknown options
modified:
mysql-test/r/mysqld_option_err.result
mysql-test/t/mysqld_option_err.test
sql/mysqld.cc
per-file messages:
mysql-test/r/mysqld_option_err.result
Test that mysqld --not-known-option --help --verbose gives error
mysql-test/t/mysqld_option_err.test
Test that mysqld --not-known-option --help --verbose gives error
sql/mysqld.cc
When using --help --verbose give error and abort if there are any unknown options
=== modified file 'mysql-test/r/mysqld_option_err.result'
--- a/mysql-test/r/mysqld_option_err.result 2009-09-03 13:05:02 +0000
+++ b/mysql-test/r/mysqld_option_err.result 2009-10-02 11:09:01 +0000
@@ -3,4 +3,6 @@ Test bad binlog format.
Test bad default storage engine.
Test non-numeric value passed to number option.
Test that bad value for plugin enum option is rejected correctly.
+Test that --help --verbose works
+Test that --not-known-option --help --verbose gives error
Done.
=== modified file 'mysql-test/t/mysqld_option_err.test'
--- a/mysql-test/t/mysqld_option_err.test 2009-09-25 14:38:02 +0000
+++ b/mysql-test/t/mysqld_option_err.test 2009-10-02 11:09:01 +0000
@@ -46,5 +46,14 @@ mkdir $MYSQLTEST_VARDIR/tmp/mysqld_optio
--error 7
--exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables $EXAMPLE_PLUGIN_OPT --plugin-load=EXAMPLE=ha_example.so --plugin-example-enum-var=noexist >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
+#
+# Test that an wrong option with --help --verbose gives an error
+#
+
+--echo Test that --help --verbose works
+--exec $MYSQLD --help --verbose >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
+--echo Test that --not-known-option --help --verbose gives error
+--error 2
+--exec $MYSQLD --not-known-option --help --verbose >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
--echo Done.
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc 2009-09-17 22:46:10 +0000
+++ b/sql/mysqld.cc 2009-10-02 11:09:01 +0000
@@ -4020,9 +4020,6 @@ server.");
plugins_are_initialized= TRUE; /* Don't separate from init function */
}
- if (opt_help)
- unireg_abort(0);
-
/* we do want to exit if there are any other unknown options */
if (defaults_argc > 1)
{
@@ -4047,13 +4044,15 @@ server.");
if (defaults_argc)
{
- fprintf(stderr, "%s: Too many arguments (first extra is '%s').\n"
- "Use --verbose --help to get a list of available options\n",
+ fprintf(stderr, "%s: Too many arguments (first extra is '%s').\n",
my_progname, *tmp_argv);
unireg_abort(1);
}
}
+ if (opt_help)
+ unireg_abort(0);
+
/* if the errmsg.sys is not loaded, terminate to maintain behaviour */
if (!errmesg[0][0])
unireg_abort(1);
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2738: Added client functions:
by noreply@launchpad.net 02 Oct '09
by noreply@launchpad.net 02 Oct '09
02 Oct '09
------------------------------------------------------------
revno: 2738
committer: Michael Widenius <monty(a)askmonty.org>
branch nick: mysql-maria
timestamp: Fri 2009-10-02 13:36:28 +0300
message:
Added client functions:
- mysql_get_server_name()
This returns MySQL or MariaDB depending on the server type
- mariadb_connection()
This returns 1 if you are connected to a MariaDB server
Modifed the MySQL command line client to print out if you are connected to MariaDB or MySQL
Better default prompt (shows server you are connected to and base directory)
modified:
client/mysql.cc
configure.in
include/mysql.h
include/mysql.h.pp
libmysql/libmysql.c
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2738)
by Michael Widenius 02 Oct '09
by Michael Widenius 02 Oct '09
02 Oct '09
#At lp:maria based on revid:knielsen@knielsen-hq.org-20090926022556-u2idjsv22sncgvxb
2738 Michael Widenius 2009-10-02
Added client functions:
- mysql_get_server_name()
This returns MySQL or MariaDB depending on the server type
- mariadb_connection()
This returns 1 if you are connected to a MariaDB server
Modifed the MySQL command line client to print out if you are connected to MariaDB or MySQL
Better default prompt (shows server you are connected to and base directory)
modified:
client/mysql.cc
configure.in
include/mysql.h
include/mysql.h.pp
libmysql/libmysql.c
per-file messages:
client/mysql.cc
Print out if you are connected to MariaDB or MySQL
Better default prompt (shows server you are connected to and base directory)
Added option \N to prompt to print server name.
configure.in
Changed maria to MariaDB in version string
include/mysql.h
Added mysql_get_server_name() and mariadb_connection()
include/mysql.h.pp
Update for new API functions
libmysql/libmysql.c
Added client functions:
- mysql_get_server_name()
This returns MySQL or MariaDB depending on the server type
- mariadb_connection()
This returns 1 if you are connected to a MariaDB server
=== modified file 'client/mysql.cc'
--- a/client/mysql.cc 2009-09-07 20:50:10 +0000
+++ b/client/mysql.cc 2009-10-02 10:36:28 +0000
@@ -43,7 +43,7 @@
#include <locale.h>
#endif
-const char *VER= "14.15";
+const char *VER= "14.16";
/* Don't try to make a nice table if the data is too big */
#define MAX_COLUMN_LENGTH 1024
@@ -1076,7 +1076,7 @@ int main(int argc,char *argv[])
delimiter_str= delimiter;
default_prompt = my_strdup(getenv("MYSQL_PS1") ?
getenv("MYSQL_PS1") :
- "mysql> ",MYF(MY_WME));
+ "\\N [\\d]> ",MYF(MY_WME));
current_prompt = my_strdup(default_prompt,MYF(MY_WME));
prompt_counter=0;
@@ -1156,10 +1156,11 @@ int main(int argc,char *argv[])
signal(SIGINT, handle_sigint); // Catch SIGINT to clean up
signal(SIGQUIT, mysql_end); // Catch SIGQUIT to clean up
- put_info("Welcome to the MySQL monitor. Commands end with ; or \\g.",
+ put_info("Welcome to the MariaDB monitor. Commands end with ; or \\g.",
INFO_INFO);
sprintf((char*) glob_buffer.ptr(),
- "Your MySQL connection id is %lu\nServer version: %s\n",
+ "Your %s connection id is %lu\nServer version: %s\n",
+ mysql_get_server_name(&mysql),
mysql_thread_id(&mysql), server_version_string(&mysql));
put_info((char*) glob_buffer.ptr(),INFO_INFO);
@@ -4369,6 +4370,7 @@ com_status(String *buffer __attribute__(
tee_fprintf(stdout, "Using outfile:\t\t'%s'\n", opt_outfile ? outfile : "");
#endif
tee_fprintf(stdout, "Using delimiter:\t%s\n", delimiter);
+ tee_fprintf(stdout, "Server:\t\t\t%s\n", mysql_get_server_name(&mysql));
tee_fprintf(stdout, "Server version:\t\t%s\n", server_version_string(&mysql));
tee_fprintf(stdout, "Protocol version:\t%d\n", mysql_get_proto_info(&mysql));
tee_fprintf(stdout, "Connection:\t\t%s\n", mysql_get_host_info(&mysql));
@@ -4700,7 +4702,7 @@ static void mysql_end_timer(ulong start_
strmov(strend(buff),")");
}
-static const char* construct_prompt()
+static const char *construct_prompt()
{
processed_prompt.free(); // Erase the old prompt
time_t lclock = time(NULL); // Get the date struct
@@ -4729,6 +4731,12 @@ static const char* construct_prompt()
case 'd':
processed_prompt.append(current_db ? current_db : "(none)");
break;
+ case 'N':
+ if (connected)
+ processed_prompt.append(mysql_get_server_name(&mysql));
+ else
+ processed_prompt.append("unkown");
+ break;
case 'h':
{
const char *prompt;
=== modified file 'configure.in'
--- a/configure.in 2009-09-15 11:55:37 +0000
+++ b/configure.in 2009-10-02 10:36:28 +0000
@@ -13,7 +13,7 @@ AC_CANONICAL_SYSTEM
#
# When merging new MySQL releases, update the version number to match the
# MySQL version number, but reset the maria subrelease (-beta1).
-AM_INIT_AUTOMAKE(mysql, 5.1.38-maria-beta1)
+AM_INIT_AUTOMAKE(mysql, 5.1.38-MariaDB-beta1)
AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10
=== modified file 'include/mysql.h'
--- a/include/mysql.h 2007-11-26 18:10:26 +0000
+++ b/include/mysql.h 2009-10-02 10:36:28 +0000
@@ -527,6 +527,7 @@ int STDCALL mysql_set_server_option(MYS
int STDCALL mysql_ping(MYSQL *mysql);
const char * STDCALL mysql_stat(MYSQL *mysql);
const char * STDCALL mysql_get_server_info(MYSQL *mysql);
+const char * STDCALL mysql_get_server_name(MYSQL *mysql);
const char * STDCALL mysql_get_client_info(void);
unsigned long STDCALL mysql_get_client_version(void);
const char * STDCALL mysql_get_host_info(MYSQL *mysql);
@@ -560,6 +561,7 @@ void STDCALL mysql_debug(const char *de
void STDCALL myodbc_remove_escape(MYSQL *mysql,char *name);
unsigned int STDCALL mysql_thread_safe(void);
my_bool STDCALL mysql_embedded(void);
+my_bool STDCALL mariadb_connection(MYSQL *mysql);
MYSQL_MANAGER* STDCALL mysql_manager_init(MYSQL_MANAGER* con);
MYSQL_MANAGER* STDCALL mysql_manager_connect(MYSQL_MANAGER* con,
const char* host,
=== modified file 'include/mysql.h.pp'
--- a/include/mysql.h.pp 2009-03-12 22:27:35 +0000
+++ b/include/mysql.h.pp 2009-10-02 10:36:28 +0000
@@ -487,6 +487,7 @@ int mysql_set_server_option(MYSQL *mysql
int mysql_ping(MYSQL *mysql);
const char * mysql_stat(MYSQL *mysql);
const char * mysql_get_server_info(MYSQL *mysql);
+const char * mysql_get_server_name(MYSQL *mysql);
const char * mysql_get_client_info(void);
unsigned long mysql_get_client_version(void);
const char * mysql_get_host_info(MYSQL *mysql);
@@ -520,6 +521,7 @@ void mysql_debug(const char *debug);
void myodbc_remove_escape(MYSQL *mysql,char *name);
unsigned int mysql_thread_safe(void);
my_bool mysql_embedded(void);
+my_bool mariadb_connection(MYSQL *mysql);
MYSQL_MANAGER* mysql_manager_init(MYSQL_MANAGER* con);
MYSQL_MANAGER* mysql_manager_connect(MYSQL_MANAGER* con,
const char* host,
=== modified file 'libmysql/libmysql.c'
--- a/libmysql/libmysql.c 2009-04-25 10:05:32 +0000
+++ b/libmysql/libmysql.c 2009-10-02 10:36:28 +0000
@@ -1430,6 +1430,18 @@ mysql_get_server_info(MYSQL *mysql)
}
+my_bool STDCALL mariadb_connection(MYSQL *mysql)
+{
+ return strinstr(mysql->server_version, "MariaDB") != 0;
+}
+
+const char * STDCALL
+mysql_get_server_name(MYSQL *mysql)
+{
+ return mariadb_connection(mysql) ? "MariaDB" : "MySQL";
+}
+
+
const char * STDCALL
mysql_get_host_info(MYSQL *mysql)
{
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2746)
by knielsen@knielsen-hq.org 02 Oct '09
by knielsen@knielsen-hq.org 02 Oct '09
02 Oct '09
#At lp:maria
2746 knielsen(a)knielsen-hq.org 2009-10-02
Add a simple way to robustly get the name of the generated source tarball, so as to not
to have to rely on fragile regexp-parsing of configure.in.
modified:
Makefile.am
=== modified file 'Makefile.am'
--- a/Makefile.am 2009-09-30 12:45:03 +0000
+++ b/Makefile.am 2009-10-02 09:40:03 +0000
@@ -60,6 +60,11 @@ dist-hook:
--srcdir=$(top_srcdir)
storage/myisam/myisamchk --silent --fast $(distdir)/win/data/mysql/*.MYI
+# Simple target to allow scripts etc. to get the name of the source
+# tarball easily.
+show-dist-name:
+ @echo "$(PACKAGE)-$(VERSION)"
+
all-local: @ABI_CHECK@
tags:
1
0
[Maria-developers] Rev 2745: Temporary solution: skip PBXT (like we do e.g. for --skip-innodb) in embedded in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 01 Oct '09
by Sergey Petrunya 01 Oct '09
01 Oct '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2745
revision-id: psergey(a)askmonty.org-20091001212739-x4mzj5e7u8pig71f
parent: psergey(a)askmonty.org-20091001104659-51vn4vtgjnqk1w27
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Fri 2009-10-02 01:27:39 +0400
message:
Temporary solution: skip PBXT (like we do e.g. for --skip-innodb) in embedded
server, as it doesn't work there.
=== modified file 'sql/sql_plugin.cc'
--- a/sql/sql_plugin.cc 2009-09-11 13:20:03 +0000
+++ b/sql/sql_plugin.cc 2009-10-01 21:27:39 +0000
@@ -1168,6 +1168,22 @@
!my_strnncoll(&my_charset_latin1, (const uchar*) plugin->name,
6, (const uchar*) "InnoDB", 6))
continue;
+#ifdef EMBEDDED_LIBRARY
+ /*
+ MariaDB: disable PBXT in embedded server. We do this for two reasons
+ - PBXT currently doesn't work in embedded server (see
+ https://bugs.launchpad.net/maria/+bug/439889)
+ - Embedded server is supposed to be "leaner" and our current
+ understanding of that is "without PBXT". At the same time, we want
+ regular server to be with PBXT, and since we don't support compiling
+ embedded server with different options than the regular server,
+ the only way was to disable PBXT from here.
+ */
+ if (!my_strnncoll(&my_charset_latin1, (const uchar*) plugin->name,
+ 4, (const uchar*) "PBXT", 4))
+ continue;
+
+#endif
bzero(&tmp, sizeof(tmp));
tmp.plugin= plugin;
tmp.name.str= (char *)plugin->name;
1
0
[Maria-developers] Rev 2744: Fix embedded server windows build: add opt_table_elimination.cc to list of files in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 01 Oct '09
by Sergey Petrunya 01 Oct '09
01 Oct '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2744
revision-id: psergey(a)askmonty.org-20091001104659-51vn4vtgjnqk1w27
parent: knielsen(a)knielsen-hq.org-20090930124503-4n1uaohke4hjaw22
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Thu 2009-10-01 14:46:59 +0400
message:
Fix embedded server windows build: add opt_table_elimination.cc to list of files
=== modified file 'libmysqld/CMakeLists.txt'
--- a/libmysqld/CMakeLists.txt 2009-09-07 20:50:10 +0000
+++ b/libmysqld/CMakeLists.txt 2009-10-01 10:46:59 +0000
@@ -112,6 +112,7 @@
../sql/item_xmlfunc.cc ../sql/key.cc ../sql/lock.cc ../sql/log.cc
../sql/log_event.cc ../sql/mf_iocache.cc ../sql/my_decimal.cc
../sql/net_serv.cc ../sql/opt_range.cc ../sql/opt_sum.cc
+ ../sql/opt_table_elimination.cc
../sql/parse_file.cc ../sql/procedure.cc ../sql/protocol.cc
../sql/records.cc ../sql/repl_failsafe.cc ../sql/rpl_filter.cc
../sql/rpl_record.cc
1
0
Peter Lieverdink <peter(a)openquery.com> writes:
> I've been working on creating packaging scripts for Maria on Debian/Ubuntu and came across a few issues with the automake scripts. They are basically all related to the use case where srcdir != builddir - as is the case in the debian foo.
>
> My changes are on launchpad; in https://code.launchpad.net/~ourdelta-core/maria/maria-5.1-automakefixes
>
> I've submitted this branch for merging back into maria/maria-5.1-merge.
Thanks a lot! I pushed the merge into maria-5.1-merge.
- Kristian.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2743)
by knielsen@knielsen-hq.org 30 Sep '09
by knielsen@knielsen-hq.org 30 Sep '09
30 Sep '09
#At lp:maria
2743 knielsen(a)knielsen-hq.org 2009-09-30
Add environment variable MTR_EXTRA_OPTIONS to influence `make test*` targets.
This allows to eg use --mem or --parallel for better performance on big boxes.
modified:
Makefile.am
=== modified file 'Makefile.am'
--- a/Makefile.am 2009-09-07 20:50:10 +0000
+++ b/Makefile.am 2009-09-30 12:45:03 +0000
@@ -81,6 +81,9 @@ tags:
# environment variable MTR_BUILD_THREAD. The script "mysql-test-run"
# will then calculate the various port numbers it needs from this,
# making sure each user use different ports.
+#
+# Set MTR_EXTRA_OPTIONS to add custom options for mysql-test-run,
+# like MTR_EXTRA_OPTIONS"--parallel=3 --mem".
test-unit:
cd unittest; $(MAKE) test
@@ -90,29 +93,29 @@ test-unit-big:
test-ps:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) --ps-protocol --mysqld=--binlog-format=mixed
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) --ps-protocol --mysqld=--binlog-format=mixed
test-nr:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) --mysqld=--binlog-format=row
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) --mysqld=--binlog-format=row
test-pr:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol --mysqld=--binlog-format=row #@libevent_test_option@
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) $(mem) --ps-protocol --mysqld=--binlog-format=row #@libevent_test_option@
test-ns:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem) --mysqld=--binlog-format=mixed
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) $(mem) --mysqld=--binlog-format=mixed
test-binlog-statement:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) --mysqld=--binlog-format=statement
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) --mysqld=--binlog-format=statement
# This code is duplicated in "test-bt", see the Changeset comment of 2007-Dec-07
test-embedded:
if [ -e bin/mysqltest_embedded -o -e libmysqld/examples/mysqltest_embedded ] ; then \
cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=embedded --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=embedded --force --timer \
--embedded-server --skip-rpl --skip-ndbcluster ; \
else \
echo "no program found for 'embedded' tests - skipped testing" ; \
@@ -120,14 +123,14 @@ test-embedded:
test-reprepare:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(force) $(mem) --ps-protocol \
--mysqld=--debug=+d,reprepare_each_statement
test: test-ns test-pr
smoke:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --do-test=s
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --do-test=s
test-full: test test-nr test-ps
@@ -143,43 +146,43 @@ test-force-mem:
test-bt:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=normal --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=normal --force --timer \
--skip-ndbcluster --report-features
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ps --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ps --force --timer \
--skip-ndbcluster --ps-protocol
-if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \
cd mysql-test ; \
MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ndb+rpl_ndb+ps --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ndb+rpl_ndb+ps --force --timer \
--ps-protocol --mysqld=--binlog-format=row --suite=ndb,rpl_ndb ; \
MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ndb --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ndb --force --timer \
--with-ndbcluster-only ; \
else \
echo "no program found for 'ndbcluster' tests - skipped testing" ; \
fi
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=funcs1+ps --ps-protocol --reorder --suite=funcs_1
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=funcs1+ps --ps-protocol --reorder --suite=funcs_1
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=funcs2 --suite=funcs_2
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=partitions --suite=parts
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=partitions --suite=parts
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=stress --suite=stress
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=jp --suite=jp
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=jp --suite=jp
-if [ -d mysql-test/suite/nist ] ; then \
cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=nist --force --suite=nist ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=nist --force --suite=nist ; \
fi
-if [ -d mysql-test/suite/nist ] ; then \
cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=nist+ps --force --suite=nist --ps-protocol ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=nist+ps --force --suite=nist --ps-protocol ; \
fi
-if [ -e bin/mysqltest_embedded -o -e libmysqld/examples/mysqltest_embedded ] ; then \
cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=embedded --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=embedded --force --timer \
--embedded-server --skip-rpl --skip-ndbcluster ; \
else \
echo "no program found for 'embedded' tests - skipped testing" ; \
@@ -187,22 +190,22 @@ test-bt:
test-bt-fast:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ps --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ps --force --timer \
--skip-ndbcluster --ps-protocol --report-features
-if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \
cd mysql-test ; \
MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=ndb --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ndb --force --timer \
--with-ndbcluster-only ; \
else \
echo "no program found for 'ndbcluster' tests - skipped testing" ; \
fi
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=stress --suite=stress
test-bt-debug:
-cd mysql-test ; MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl --comment=debug --force --timer \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=debug --force --timer \
--skip-ndbcluster --skip-rpl --report-features
test-bt-debug-fast:
@@ -216,32 +219,32 @@ test-force-full-pl: test-force-full
test-ext-funcs:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --reorder --suite=funcs_1 ; \
- @PERL@ ./mysql-test-run.pl --force --suite=funcs_2
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --reorder --suite=funcs_1 ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --suite=funcs_2
test-ext-rpl:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --suite=rpl
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --suite=rpl
test-ext-partitions:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --suite=parts
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --suite=parts
test-ext-jp:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --suite=jp
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --suite=jp
test-ext-stress:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl --force --big-test --suite=stress
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --big-test --suite=stress
test-ext: test-ext-funcs test-ext-rpl test-ext-partitions test-ext-jp test-ext-stress
test-fast:
cd mysql-test ; \
- @PERL@ ./mysql-test-run.pl $(subset) --force --skip-ndb --skip-innodb --skip-im --skip-rpl ; \
- @PERL@ ./mysql-test-run.pl $(subset) --force --suite=funcs_1 --do-test=myisam ; \
- @PERL@ ./mysql-test-run.pl $(subset) --force --suite=stress --do-test=ddl_myisam
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(subset) --force --skip-ndb --skip-innodb --skip-im --skip-rpl ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(subset) --force --suite=funcs_1 --do-test=myisam ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) $(subset) --force --suite=stress --do-test=ddl_myisam
test-fast-view:
$(MAKE) subset=--view-protocol test-fast
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2742)
by knielsen@knielsen-hq.org 30 Sep '09
by knielsen@knielsen-hq.org 30 Sep '09
30 Sep '09
#At lp:maria
2742 knielsen(a)knielsen-hq.org 2009-09-30 [merge]
Merge autotools fixes to be able to build with builddir != srcdir.
Author: Peter Lieverdink
modified:
config/ac-macros/libevent.m4
configure.in
extra/libevent/Makefile.am
=== modified file 'config/ac-macros/libevent.m4'
--- a/config/ac-macros/libevent.m4 2009-03-12 22:27:35 +0000
+++ b/config/ac-macros/libevent.m4 2009-09-29 23:36:15 +0000
@@ -13,7 +13,7 @@ AC_DEFUN([MYSQL_USE_BUNDLED_LIBEVENT], [
AC_SUBST([libevent_dir])
libevent_libs="\$(top_builddir)/extra/libevent/libevent.a"
- libevent_includes="-I\$(top_builddir)/extra/libevent"
+ libevent_includes="-I\$(top_srcdir)/extra/libevent"
libevent_test_option="--mysqld=--thread-handling=pool-of-threads"
AC_SUBST(libevent_libs)
AC_SUBST(libevent_includes)
=== modified file 'configure.in'
--- a/configure.in 2009-09-15 11:55:37 +0000
+++ b/configure.in 2009-09-29 22:50:10 +0000
@@ -2697,7 +2697,7 @@ case $SYSTEM_TYPE in
fi
# if there is no readline, but we want to build with readline, we fail
- if [test "$want_to_use_readline" = "yes"] && [test ! -d "./cmd-line-utils/readline"]
+ if [test "$want_to_use_readline" = "yes"] && [test ! -d "$srcdir/cmd-line-utils/readline"]
then
AC_MSG_ERROR([This commercially licensed MySQL source package can't
be built with libreadline. Please use --with-libedit to use
=== modified file 'extra/libevent/Makefile.am'
--- a/extra/libevent/Makefile.am 2009-03-12 22:27:35 +0000
+++ b/extra/libevent/Makefile.am 2009-09-29 23:00:57 +0000
@@ -22,7 +22,7 @@ include_HEADERS = event.h evutil.h event
BUILT_SOURCES = event-config.h
-event-config.h: $(top_srcdir)/include/config.h
+event-config.h: $(top_builddir)/include/config.h
echo '/* event-config.h' > $@
echo ' * Generated by autoconf; post-processed by libevent.' >> $@
echo ' * Do not edit this file.' >> $@
@@ -33,7 +33,7 @@ event-config.h: $(top_srcdir)/include/co
sed -e 's/#define /#define _EVENT_/' \
-e 's/#undef /#undef _EVENT_/' \
- -e 's/#ifndef /#ifndef _EVENT_/' < $(top_srcdir)/include/config.h >> $@
+ -e 's/#ifndef /#ifndef _EVENT_/' < $(top_builddir)/include/config.h >> $@
echo "#endif" >> $@
AM_CPPFLAGS = -Icompat -I$(top_srcdir)/include
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2741)
by knielsen@knielsen-hq.org 30 Sep '09
by knielsen@knielsen-hq.org 30 Sep '09
30 Sep '09
#At lp:maria
2741 knielsen(a)knielsen-hq.org 2009-09-30
Completely disable the innodb plugin.
Don't ever build it, and don't include it in source tarballs.
(we keep the sources in bzr to not get conflicts on every upstream change).
renamed:
storage/innodb_plugin/plug.in => storage/innodb_plugin/plug.in.disabled
=== renamed file 'storage/innodb_plugin/plug.in' => 'storage/innodb_plugin/plug.in.disabled'
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2740) Bug#46010
by knielsen@knielsen-hq.org 30 Sep '09
by knielsen@knielsen-hq.org 30 Sep '09
30 Sep '09
#At lp:maria
2740 knielsen(a)knielsen-hq.org 2009-09-30
Apply patch from Bug#46010.
This is needed to fix failures seen in Buildbot (main.ctype_gbk_binlog).
Problem is that some tests did not RESET MASTER, causing them to pick up random
binlog files depending on prior tests.
modified:
mysql-test/r/ctype_gbk_binlog.result
mysql-test/r/mysqlbinlog-cp932.result
mysql-test/suite/binlog/r/binlog_incident.result
mysql-test/suite/binlog/r/binlog_tmp_table.result
mysql-test/suite/binlog/t/binlog_incident.test
mysql-test/suite/binlog/t/binlog_tmp_table.test
mysql-test/t/ctype_gbk_binlog.test
mysql-test/t/mysqlbinlog-cp932.test
=== modified file 'mysql-test/r/ctype_gbk_binlog.result'
--- a/mysql-test/r/ctype_gbk_binlog.result 2009-07-07 14:18:44 +0000
+++ b/mysql-test/r/ctype_gbk_binlog.result 2009-09-30 06:35:31 +0000
@@ -1,3 +1,4 @@
+RESET MASTER;
SET NAMES gbk;
CREATE TABLE t1 (
f1 BLOB
=== modified file 'mysql-test/r/mysqlbinlog-cp932.result'
--- a/mysql-test/r/mysqlbinlog-cp932.result 2007-02-19 10:57:06 +0000
+++ b/mysql-test/r/mysqlbinlog-cp932.result 2009-09-30 06:35:31 +0000
@@ -1,4 +1,4 @@
-flush logs;
+RESET MASTER;
create table t3 (f text character set utf8);
create table t4 (f text character set cp932);
flush logs;
=== modified file 'mysql-test/suite/binlog/r/binlog_incident.result'
--- a/mysql-test/suite/binlog/r/binlog_incident.result 2009-05-11 11:32:38 +0000
+++ b/mysql-test/suite/binlog/r/binlog_incident.result 2009-09-30 06:35:31 +0000
@@ -1,3 +1,4 @@
+RESET MASTER;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2),(3);
SELECT * FROM t1;
=== modified file 'mysql-test/suite/binlog/r/binlog_tmp_table.result'
--- a/mysql-test/suite/binlog/r/binlog_tmp_table.result 2009-01-28 14:35:12 +0000
+++ b/mysql-test/suite/binlog/r/binlog_tmp_table.result 2009-09-30 06:35:31 +0000
@@ -1,3 +1,4 @@
+RESET MASTER;
create table foo (a int);
flush logs;
create temporary table tmp1_foo like foo;
=== modified file 'mysql-test/suite/binlog/t/binlog_incident.test'
--- a/mysql-test/suite/binlog/t/binlog_incident.test 2009-05-11 11:32:38 +0000
+++ b/mysql-test/suite/binlog/t/binlog_incident.test 2009-09-30 06:35:31 +0000
@@ -6,6 +6,7 @@ source include/have_log_bin.inc;
source include/have_debug.inc;
let $MYSQLD_DATADIR= `select @@datadir`;
+RESET MASTER;
CREATE TABLE t1 (a INT);
@@ -24,4 +25,4 @@ exec $MYSQL_BINLOG --start-position=106
eval SELECT cont LIKE '%RELOAD DATABASE; # Shall generate syntax error%' AS `Contain RELOAD DATABASE` FROM (SELECT load_file('$MYSQLTEST_VARDIR/tmp/binlog_incident-bug44442.sql') AS cont) AS tbl;
--enable_query_log
-remove_file $MYSQLTEST_VARDIR/tmp/binlog_incident-bug44442.sql;
\ No newline at end of file
+remove_file $MYSQLTEST_VARDIR/tmp/binlog_incident-bug44442.sql;
=== modified file 'mysql-test/suite/binlog/t/binlog_tmp_table.test'
--- a/mysql-test/suite/binlog/t/binlog_tmp_table.test 2009-01-31 21:47:50 +0000
+++ b/mysql-test/suite/binlog/t/binlog_tmp_table.test 2009-09-30 06:35:31 +0000
@@ -30,6 +30,7 @@ source include/have_binlog_format_mixed_
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,);
+RESET MASTER;
create table foo (a int);
=== modified file 'mysql-test/t/ctype_gbk_binlog.test'
--- a/mysql-test/t/ctype_gbk_binlog.test 2009-07-07 14:18:44 +0000
+++ b/mysql-test/t/ctype_gbk_binlog.test 2009-09-30 06:35:31 +0000
@@ -1,6 +1,7 @@
-- source include/have_binlog_format_mixed_or_statement.inc
-- source include/have_gbk.inc
+RESET MASTER;
SET NAMES gbk;
--character_set gbk
=== modified file 'mysql-test/t/mysqlbinlog-cp932.test'
--- a/mysql-test/t/mysqlbinlog-cp932.test 2007-12-12 17:19:24 +0000
+++ b/mysql-test/t/mysqlbinlog-cp932.test 2009-09-30 06:35:31 +0000
@@ -5,8 +5,9 @@
-- source include/have_cp932.inc
-- source include/have_log_bin.inc
+RESET MASTER;
+
# Bug#16217 (mysql client did not know how not switch its internal charset)
-flush logs;
create table t3 (f text character set utf8);
create table t4 (f text character set cp932);
--exec $MYSQL --default-character-set=utf8 test -e "insert into t3 values(_utf8'ソ')"
@@ -14,7 +15,7 @@ create table t4 (f text character set cp
flush logs;
rename table t3 to t03, t4 to t04;
let $MYSQLD_DATADIR= `select @@datadir`;
---exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000002 | $MYSQL --default-character-set=utf8
+--exec $MYSQL_BINLOG --short-form $MYSQLD_DATADIR/master-bin.000001 | $MYSQL --default-character-set=utf8
# original and recovered data must be equal
select HEX(f) from t03;
select HEX(f) from t3;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2739)
by knielsen@knielsen-hq.org 29 Sep '09
by knielsen@knielsen-hq.org 29 Sep '09
29 Sep '09
#At lp:maria
2739 knielsen(a)knielsen-hq.org 2009-09-29
Fix race in test of times shown in SHOW FULL PROCESSLIST.
(These are by their nature difficult to test reliably due to differences in timing).
modified:
mysql-test/r/information_schema.result
mysql-test/t/information_schema.test
=== modified file 'mysql-test/r/information_schema.result'
--- a/mysql-test/r/information_schema.result 2009-09-23 11:03:47 +0000
+++ b/mysql-test/r/information_schema.result 2009-09-29 20:19:43 +0000
@@ -1385,7 +1385,7 @@ who
other connection here
SELECT IF(`time` > 0, 'OK', `time`) AS time_low,
IF(`time` < 1000, 'OK', `time`) AS time_high,
-IF(time_ms > 900, 'OK', time_ms) AS time_ms_low,
+IF(time_ms > 1500, 'OK', time_ms) AS time_ms_low,
IF(time_ms < 1000000, 'OK', time_ms) AS time_ms_high
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE ID=@tid;
=== modified file 'mysql-test/t/information_schema.test'
--- a/mysql-test/t/information_schema.test 2009-09-23 11:03:47 +0000
+++ b/mysql-test/t/information_schema.test 2009-09-29 20:19:43 +0000
@@ -1105,13 +1105,13 @@ connect (pslistcon,localhost,root,,test)
let $ID= `select connection_id()`;
SELECT 'other connection here' AS who;
connection default;
-sleep 1;
+sleep 2;
--disable_query_log
eval SET @tid=$ID;
--enable_query_log
SELECT IF(`time` > 0, 'OK', `time`) AS time_low,
IF(`time` < 1000, 'OK', `time`) AS time_high,
- IF(time_ms > 900, 'OK', time_ms) AS time_ms_low,
+ IF(time_ms > 1500, 'OK', time_ms) AS time_ms_low,
IF(time_ms < 1000000, 'OK', time_ms) AS time_ms_high
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE ID=@tid;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2738)
by knielsen@knielsen-hq.org 29 Sep '09
by knielsen@knielsen-hq.org 29 Sep '09
29 Sep '09
#At lp:maria
2738 knielsen(a)knielsen-hq.org 2009-09-29
Fix running test suite from installed directory rather than source directory.
Fix trivial typo in BUILD/* scripts.
modified:
BUILD/SETUP.sh
mysql-test/mysql-test-run.pl
per-file messages:
BUILD/SETUP.sh
Fix typo.
mysql-test/mysql-test-run.pl
Fix mysql-test-run.pl to be able to find plugins used in testing also when running the
test suite from an installed mysqld package.
=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh 2009-09-10 08:11:23 +0000
+++ b/BUILD/SETUP.sh 2009-09-29 19:02:48 +0000
@@ -173,7 +173,7 @@ local_infile_configs="--enable-local-inf
max_no_embedded_configs="$SSL_LIBRARY --with-plugins=max"
max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent"
-max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server -with-libevent"
+max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server --with-libevent"
# Disable NDB in maria max builds
max_configs=$max_no_ndb_configs
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-26 02:25:56 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-09-29 19:02:48 +0000
@@ -1886,7 +1886,8 @@ sub environment_setup {
# --------------------------------------------------------------------------
my $lib_udf_example=
mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'),
- "$basedir/sql/.libs/udf_example.so",);
+ "$basedir/sql/.libs/udf_example.so",
+ "$basedir/lib/mysql/plugin/udf_example.so",);
if ( $lib_udf_example )
{
@@ -1913,7 +1914,8 @@ sub environment_setup {
}
my $lib_example_plugin=
mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
- "$basedir/storage/example/.libs/".$plugin_filename);
+ "$basedir/storage/example/.libs/".$plugin_filename,
+ "$basedir/lib/mysql/plugin/".$plugin_filename);
$ENV{'EXAMPLE_PLUGIN'}=
($lib_example_plugin ? basename($lib_example_plugin) : "");
$ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
@@ -1928,7 +1930,8 @@ sub environment_setup {
# ----------------------------------------------------
my $lib_simple_parser=
mtr_file_exists(vs_config_dirs('plugin/fulltext', 'mypluglib.dll'),
- "$basedir/plugin/fulltext/.libs/mypluglib.so",);
+ "$basedir/plugin/fulltext/.libs/mypluglib.so",
+ "$basedir/lib/mysql/plugin/mypluglib.so",);
$ENV{'SIMPLE_PARSER'}=
($lib_simple_parser ? basename($lib_simple_parser) : "");
1
0
Hi
Since I for once took good notes (less stressed today :-) I'm sharing
them here. Sergey, maybe you can reuse some of this to update todo
page.
Maria
- win and valgrind problems
- race conditions only seen on slow machines
- problem likely in the test, not the server
- this is not blocking release
- arjen working on builds, henrik spoke with him today.
- arjen happy with cooperation with kristian and says mariadb is
easier to build than mysql.
- bo and kristian set up windows dev environment for bo today
- will provide another buildbot slave for win
- kristian testing make dist
- which can be used to produce a tarball
- bo and kristian working on windows binary
- release tree is maria-5.1-merge
- Windows VM needed by Kristian, and also as a build environment
- Daniel now setting this up on is own dev server
- Sanja's QC bug fix still waiting for review. This is also not
blocking release. (Current behavior is as in MySQL.)
- Hakan adds smoke test to MariaDB test plan
- We have a couple of mirrors for downloads. Ourdelta will probably
play a role here too.
- Ourdelta provides also apt and yum repos!
- Henrik will talk with Bryan about tracking clicks of downloads
- Henrik has not had time to look at documentation stuff Daniel is
working on, will talk about that separately later.
Also talked about Virtual Columns, Create table options etc, not
important for release.
henrik
--
email: henrik.ingo(a)avoinelama.fi
tel: +358-40-5697354
www: www.avoinelama.fi/~hingo
book: www.openlife.cc
1
0
[Maria-developers] Updated (by Knielsen): mysqlbinlog: remove undesired effects of format description binlog statement (50)
by worklog-noreply@askmonty.org 29 Sep '09
by worklog-noreply@askmonty.org 29 Sep '09
29 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: mysqlbinlog: remove undesired effects of format description binlog
statement
CREATION DATE..: Mon, 17 Aug 2009, 14:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 50 (http://askmonty.org/worklog/?tid=50)
VERSION........: Server-9.x
STATUS.........: Code-Review
PRIORITY.......: 60
WORKED HOURS...: 14
ESTIMATE.......: 6 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Category updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-Sprint
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Status updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Un-Assigned
+Code-Review
-=-=(Knielsen - Mon, 28 Sep 2009, 16:00)=-=-
Updated patch against MySQL 5.1.39
Fixes a couple of issues with the patch.
Discussions with MySQL developer.
Worked 4 hours and estimate 6 hours remain (original estimate unchanged).
-=-=(Knielsen - Wed, 09 Sep 2009, 18:31)=-=-
Discussed with MySQL developers on Bug#46640.
Committed a suggested fix:
https://lists.launchpad.net/maria-developers/msg00926.html
Worked 8 hours and estimate 10 hours remain (original estimate increased by 18 hours).
-=-=(Guest - Wed, 09 Sep 2009, 11:50)=-=-
High Level Description modified.
--- /tmp/wklog.50.old.11584 2009-09-09 11:50:12.000000000 +0300
+++ /tmp/wklog.50.new.11584 2009-09-09 11:50:12.000000000 +0300
@@ -5,7 +5,11 @@
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
-2. When one applies "format description binlog statement" at the slave, it
-will change the slave's server_id when applied.
+2. When one executes a BINLOG statement (containing "format description binlog
+statement" or other events), this will cause subsequent statements run in
+the same session to be binlogged with the server id of the last event
+executed, not with the real server id. This can cause problems like infinite
+recursive application in a circular replication topology.
This WL is to fix these issues.
+
-=-=(Knielsen - Tue, 08 Sep 2009, 15:07)=-=-
Low Level Design modified.
--- /tmp/wklog.50.old.19208 2009-09-08 15:07:09.000000000 +0300
+++ /tmp/wklog.50.new.19208 2009-09-08 15:07:09.000000000 +0300
@@ -1 +1,34 @@
+I think the fix for point 2 is to replace the call to
+apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
+call to ev->apply_event(). However, I need to check two things to be sure this
+is correct:
+
+1. The existing code does
+
+ if (!ev->when) ev->when= my_time(0)
+
+Need to understand if this is needed/correct or not.
+
+2. The existing code does ev->update_pos(). I think this is redundant for
+BINLOG statement (as it uses a fake rli structure), but I need to check to
+make sure.
+
+Once this is done, point 1 may no longer be needed. The user can use
+--base64-output=never when applying the output to a 5.0 server, and omit that
+option when applying the output to a 5.1 server. There should be no need to
+omit the format description event in the output when other BINLOG statements
+for row events are present, as it no longer changes the server id. In fact the
+format description event is required to be able to execute other BINLOG
+statements, as its purpose is to define the binary format of the events
+contained in these statements.
+
+Alternatively, we could implement that if the format description event of the
+source binlog has server version < 5.1, and --base64-output=auto (default),
+then the format description event is omitted (and should any BINLOG statement
+be needed, unlikely as it is from a 5.0 server, we will need to throw an
+error).
+
+The binlog format version for 5.0 and 5.1 is actually the same, hence the need
+to look at server version to guess if the format description event can be
+omitted.
-=-=(Knielsen - Tue, 08 Sep 2009, 14:29)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.17531 2009-09-08 14:29:30.000000000 +0300
+++ /tmp/wklog.50.new.17531 2009-09-08 14:29:30.000000000 +0300
@@ -12,3 +12,37 @@
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
+First, the problem is not the format description log event. In fact all log
+events have their own value of server_id, and every event in the BINLOG
+statement is executed with its own id as server_id.
+
+It seems it was introduced deliberately in the patch for Bug#32407. This patch
+makes sql thread and BINLOG statement share code path for executing the binary
+event, even though the bug is really about something different (outputting
+format description event to allow proper execution of other BINLOG
+statements).
+
+Nevertheless, I think using the server_id in the events of a BINLOG statement
+is wrong:
+
+1. It is different behaviour from executing normal statement-based events not
+written using BINLOG.
+
+2. It causes the possibility for infinite cycle of replication in a cyclic
+replication setup, if the server ids in BINLOG are different from all other
+server ids in the cycle.
+
+3. The functionality of applying events with original server id from the event
+is still available by pointing the slave thread to the binlog. The
+functionality of applying row-based binlog events with server id of the server
+executing the BINLOG statements is not otherwise available.
+
+In fact most of the code from the slave thread that is now also run when
+executing BINLOG statements is redundant, or does the wrong thing (like
+updating binlog position).
+
+Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
+able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
+it to be able to simulate the effect of the slave sql thread? I think the
+former is the most important one.
+
-=-=(Knielsen - Mon, 07 Sep 2009, 10:06)=-=-
Research worklog, bugs, and existing server code.
Worked 2 hours and estimate 0 hours remain (original estimate increased by 2 hours).
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
Dependency created: 39 now depends on 50
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.11389 2009-08-17 14:13:05.000000000 +0300
+++ /tmp/wklog.50.new.11389 2009-08-17 14:13:05.000000000 +0300
@@ -1 +1,14 @@
+First item
+----------
+AFAIU what needs to be done is:
+1. record a source server version (it is in the first binlog event).
+2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
+ below.
+
+and we'll get a 5.0-applicable binlog.
+
+Second item
+-----------
+One question that one needs to sort out before disabling server_id change is
+why it was put there in the first place? Should it be always removed?
DESCRIPTION:
According to complaints in BUG#46640:
1. mysqlbinlog will emit a 5.0-incompatible "format description binlog
statement" even when reading a binary log that was produced by 5.0.
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
2. When one executes a BINLOG statement (containing "format description binlog
statement" or other events), this will cause subsequent statements run in
the same session to be binlogged with the server id of the last event
executed, not with the real server id. This can cause problems like infinite
recursive application in a circular replication topology.
This WL is to fix these issues.
HIGH-LEVEL SPECIFICATION:
First item
----------
AFAIU what needs to be done is:
1. record a source server version (it is in the first binlog event).
2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
below.
and we'll get a 5.0-applicable binlog.
Second item
-----------
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
First, the problem is not the format description log event. In fact all log
events have their own value of server_id, and every event in the BINLOG
statement is executed with its own id as server_id.
It seems it was introduced deliberately in the patch for Bug#32407. This patch
makes sql thread and BINLOG statement share code path for executing the binary
event, even though the bug is really about something different (outputting
format description event to allow proper execution of other BINLOG
statements).
Nevertheless, I think using the server_id in the events of a BINLOG statement
is wrong:
1. It is different behaviour from executing normal statement-based events not
written using BINLOG.
2. It causes the possibility for infinite cycle of replication in a cyclic
replication setup, if the server ids in BINLOG are different from all other
server ids in the cycle.
3. The functionality of applying events with original server id from the event
is still available by pointing the slave thread to the binlog. The
functionality of applying row-based binlog events with server id of the server
executing the BINLOG statements is not otherwise available.
In fact most of the code from the slave thread that is now also run when
executing BINLOG statements is redundant, or does the wrong thing (like
updating binlog position).
Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
it to be able to simulate the effect of the slave sql thread? I think the
former is the most important one.
LOW-LEVEL DESIGN:
I think the fix for point 2 is to replace the call to
apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
call to ev->apply_event(). However, I need to check two things to be sure this
is correct:
1. The existing code does
if (!ev->when) ev->when= my_time(0)
Need to understand if this is needed/correct or not.
2. The existing code does ev->update_pos(). I think this is redundant for
BINLOG statement (as it uses a fake rli structure), but I need to check to
make sure.
Once this is done, point 1 may no longer be needed. The user can use
--base64-output=never when applying the output to a 5.0 server, and omit that
option when applying the output to a 5.1 server. There should be no need to
omit the format description event in the output when other BINLOG statements
for row events are present, as it no longer changes the server id. In fact the
format description event is required to be able to execute other BINLOG
statements, as its purpose is to define the binary format of the events
contained in these statements.
Alternatively, we could implement that if the format description event of the
source binlog has server version < 5.1, and --base64-output=auto (default),
then the format description event is omitted (and should any BINLOG statement
be needed, unlikely as it is from a 5.0 server, we will need to throw an
error).
The binlog format version for 5.0 and 5.1 is actually the same, hence the need
to look at server version to guess if the format description event can be
omitted.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Knielsen): mysqlbinlog: remove undesired effects of format description binlog statement (50)
by worklog-noreply@askmonty.org 29 Sep '09
by worklog-noreply@askmonty.org 29 Sep '09
29 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: mysqlbinlog: remove undesired effects of format description binlog
statement
CREATION DATE..: Mon, 17 Aug 2009, 14:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 50 (http://askmonty.org/worklog/?tid=50)
VERSION........: Server-9.x
STATUS.........: Code-Review
PRIORITY.......: 60
WORKED HOURS...: 14
ESTIMATE.......: 6 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Category updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-Sprint
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Status updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Un-Assigned
+Code-Review
-=-=(Knielsen - Mon, 28 Sep 2009, 16:00)=-=-
Updated patch against MySQL 5.1.39
Fixes a couple of issues with the patch.
Discussions with MySQL developer.
Worked 4 hours and estimate 6 hours remain (original estimate unchanged).
-=-=(Knielsen - Wed, 09 Sep 2009, 18:31)=-=-
Discussed with MySQL developers on Bug#46640.
Committed a suggested fix:
https://lists.launchpad.net/maria-developers/msg00926.html
Worked 8 hours and estimate 10 hours remain (original estimate increased by 18 hours).
-=-=(Guest - Wed, 09 Sep 2009, 11:50)=-=-
High Level Description modified.
--- /tmp/wklog.50.old.11584 2009-09-09 11:50:12.000000000 +0300
+++ /tmp/wklog.50.new.11584 2009-09-09 11:50:12.000000000 +0300
@@ -5,7 +5,11 @@
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
-2. When one applies "format description binlog statement" at the slave, it
-will change the slave's server_id when applied.
+2. When one executes a BINLOG statement (containing "format description binlog
+statement" or other events), this will cause subsequent statements run in
+the same session to be binlogged with the server id of the last event
+executed, not with the real server id. This can cause problems like infinite
+recursive application in a circular replication topology.
This WL is to fix these issues.
+
-=-=(Knielsen - Tue, 08 Sep 2009, 15:07)=-=-
Low Level Design modified.
--- /tmp/wklog.50.old.19208 2009-09-08 15:07:09.000000000 +0300
+++ /tmp/wklog.50.new.19208 2009-09-08 15:07:09.000000000 +0300
@@ -1 +1,34 @@
+I think the fix for point 2 is to replace the call to
+apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
+call to ev->apply_event(). However, I need to check two things to be sure this
+is correct:
+
+1. The existing code does
+
+ if (!ev->when) ev->when= my_time(0)
+
+Need to understand if this is needed/correct or not.
+
+2. The existing code does ev->update_pos(). I think this is redundant for
+BINLOG statement (as it uses a fake rli structure), but I need to check to
+make sure.
+
+Once this is done, point 1 may no longer be needed. The user can use
+--base64-output=never when applying the output to a 5.0 server, and omit that
+option when applying the output to a 5.1 server. There should be no need to
+omit the format description event in the output when other BINLOG statements
+for row events are present, as it no longer changes the server id. In fact the
+format description event is required to be able to execute other BINLOG
+statements, as its purpose is to define the binary format of the events
+contained in these statements.
+
+Alternatively, we could implement that if the format description event of the
+source binlog has server version < 5.1, and --base64-output=auto (default),
+then the format description event is omitted (and should any BINLOG statement
+be needed, unlikely as it is from a 5.0 server, we will need to throw an
+error).
+
+The binlog format version for 5.0 and 5.1 is actually the same, hence the need
+to look at server version to guess if the format description event can be
+omitted.
-=-=(Knielsen - Tue, 08 Sep 2009, 14:29)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.17531 2009-09-08 14:29:30.000000000 +0300
+++ /tmp/wklog.50.new.17531 2009-09-08 14:29:30.000000000 +0300
@@ -12,3 +12,37 @@
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
+First, the problem is not the format description log event. In fact all log
+events have their own value of server_id, and every event in the BINLOG
+statement is executed with its own id as server_id.
+
+It seems it was introduced deliberately in the patch for Bug#32407. This patch
+makes sql thread and BINLOG statement share code path for executing the binary
+event, even though the bug is really about something different (outputting
+format description event to allow proper execution of other BINLOG
+statements).
+
+Nevertheless, I think using the server_id in the events of a BINLOG statement
+is wrong:
+
+1. It is different behaviour from executing normal statement-based events not
+written using BINLOG.
+
+2. It causes the possibility for infinite cycle of replication in a cyclic
+replication setup, if the server ids in BINLOG are different from all other
+server ids in the cycle.
+
+3. The functionality of applying events with original server id from the event
+is still available by pointing the slave thread to the binlog. The
+functionality of applying row-based binlog events with server id of the server
+executing the BINLOG statements is not otherwise available.
+
+In fact most of the code from the slave thread that is now also run when
+executing BINLOG statements is redundant, or does the wrong thing (like
+updating binlog position).
+
+Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
+able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
+it to be able to simulate the effect of the slave sql thread? I think the
+former is the most important one.
+
-=-=(Knielsen - Mon, 07 Sep 2009, 10:06)=-=-
Research worklog, bugs, and existing server code.
Worked 2 hours and estimate 0 hours remain (original estimate increased by 2 hours).
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
Dependency created: 39 now depends on 50
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.11389 2009-08-17 14:13:05.000000000 +0300
+++ /tmp/wklog.50.new.11389 2009-08-17 14:13:05.000000000 +0300
@@ -1 +1,14 @@
+First item
+----------
+AFAIU what needs to be done is:
+1. record a source server version (it is in the first binlog event).
+2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
+ below.
+
+and we'll get a 5.0-applicable binlog.
+
+Second item
+-----------
+One question that one needs to sort out before disabling server_id change is
+why it was put there in the first place? Should it be always removed?
DESCRIPTION:
According to complaints in BUG#46640:
1. mysqlbinlog will emit a 5.0-incompatible "format description binlog
statement" even when reading a binary log that was produced by 5.0.
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
2. When one executes a BINLOG statement (containing "format description binlog
statement" or other events), this will cause subsequent statements run in
the same session to be binlogged with the server id of the last event
executed, not with the real server id. This can cause problems like infinite
recursive application in a circular replication topology.
This WL is to fix these issues.
HIGH-LEVEL SPECIFICATION:
First item
----------
AFAIU what needs to be done is:
1. record a source server version (it is in the first binlog event).
2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
below.
and we'll get a 5.0-applicable binlog.
Second item
-----------
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
First, the problem is not the format description log event. In fact all log
events have their own value of server_id, and every event in the BINLOG
statement is executed with its own id as server_id.
It seems it was introduced deliberately in the patch for Bug#32407. This patch
makes sql thread and BINLOG statement share code path for executing the binary
event, even though the bug is really about something different (outputting
format description event to allow proper execution of other BINLOG
statements).
Nevertheless, I think using the server_id in the events of a BINLOG statement
is wrong:
1. It is different behaviour from executing normal statement-based events not
written using BINLOG.
2. It causes the possibility for infinite cycle of replication in a cyclic
replication setup, if the server ids in BINLOG are different from all other
server ids in the cycle.
3. The functionality of applying events with original server id from the event
is still available by pointing the slave thread to the binlog. The
functionality of applying row-based binlog events with server id of the server
executing the BINLOG statements is not otherwise available.
In fact most of the code from the slave thread that is now also run when
executing BINLOG statements is redundant, or does the wrong thing (like
updating binlog position).
Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
it to be able to simulate the effect of the slave sql thread? I think the
former is the most important one.
LOW-LEVEL DESIGN:
I think the fix for point 2 is to replace the call to
apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
call to ev->apply_event(). However, I need to check two things to be sure this
is correct:
1. The existing code does
if (!ev->when) ev->when= my_time(0)
Need to understand if this is needed/correct or not.
2. The existing code does ev->update_pos(). I think this is redundant for
BINLOG statement (as it uses a fake rli structure), but I need to check to
make sure.
Once this is done, point 1 may no longer be needed. The user can use
--base64-output=never when applying the output to a 5.0 server, and omit that
option when applying the output to a 5.1 server. There should be no need to
omit the format description event in the output when other BINLOG statements
for row events are present, as it no longer changes the server id. In fact the
format description event is required to be able to execute other BINLOG
statements, as its purpose is to define the binary format of the events
contained in these statements.
Alternatively, we could implement that if the format description event of the
source binlog has server version < 5.1, and --base64-output=auto (default),
then the format description event is omitted (and should any BINLOG statement
be needed, unlikely as it is from a 5.0 server, we will need to throw an
error).
The binlog format version for 5.0 and 5.1 is actually the same, hence the need
to look at server version to guess if the format description event can be
omitted.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Knielsen): mysqlbinlog: remove undesired effects of format description binlog statement (50)
by worklog-noreply@askmonty.org 29 Sep '09
by worklog-noreply@askmonty.org 29 Sep '09
29 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: mysqlbinlog: remove undesired effects of format description binlog
statement
CREATION DATE..: Mon, 17 Aug 2009, 14:12
SUPERVISOR.....: Monty
IMPLEMENTOR....: Knielsen
COPIES TO......:
CATEGORY.......: Server-Sprint
TASK ID........: 50 (http://askmonty.org/worklog/?tid=50)
VERSION........: Server-9.x
STATUS.........: Code-Review
PRIORITY.......: 60
WORKED HOURS...: 14
ESTIMATE.......: 6 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Category updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Server-RawIdeaBin
+Server-Sprint
-=-=(Knielsen - Tue, 29 Sep 2009, 10:12)=-=-
Status updated.
--- /tmp/wklog.50.old.3293 2009-09-29 10:12:26.000000000 +0300
+++ /tmp/wklog.50.new.3293 2009-09-29 10:12:26.000000000 +0300
@@ -1 +1 @@
-Un-Assigned
+Code-Review
-=-=(Knielsen - Mon, 28 Sep 2009, 16:00)=-=-
Updated patch against MySQL 5.1.39
Fixes a couple of issues with the patch.
Discussions with MySQL developer.
Worked 4 hours and estimate 6 hours remain (original estimate unchanged).
-=-=(Knielsen - Wed, 09 Sep 2009, 18:31)=-=-
Discussed with MySQL developers on Bug#46640.
Committed a suggested fix:
https://lists.launchpad.net/maria-developers/msg00926.html
Worked 8 hours and estimate 10 hours remain (original estimate increased by 18 hours).
-=-=(Guest - Wed, 09 Sep 2009, 11:50)=-=-
High Level Description modified.
--- /tmp/wklog.50.old.11584 2009-09-09 11:50:12.000000000 +0300
+++ /tmp/wklog.50.new.11584 2009-09-09 11:50:12.000000000 +0300
@@ -5,7 +5,11 @@
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
-2. When one applies "format description binlog statement" at the slave, it
-will change the slave's server_id when applied.
+2. When one executes a BINLOG statement (containing "format description binlog
+statement" or other events), this will cause subsequent statements run in
+the same session to be binlogged with the server id of the last event
+executed, not with the real server id. This can cause problems like infinite
+recursive application in a circular replication topology.
This WL is to fix these issues.
+
-=-=(Knielsen - Tue, 08 Sep 2009, 15:07)=-=-
Low Level Design modified.
--- /tmp/wklog.50.old.19208 2009-09-08 15:07:09.000000000 +0300
+++ /tmp/wklog.50.new.19208 2009-09-08 15:07:09.000000000 +0300
@@ -1 +1,34 @@
+I think the fix for point 2 is to replace the call to
+apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
+call to ev->apply_event(). However, I need to check two things to be sure this
+is correct:
+
+1. The existing code does
+
+ if (!ev->when) ev->when= my_time(0)
+
+Need to understand if this is needed/correct or not.
+
+2. The existing code does ev->update_pos(). I think this is redundant for
+BINLOG statement (as it uses a fake rli structure), but I need to check to
+make sure.
+
+Once this is done, point 1 may no longer be needed. The user can use
+--base64-output=never when applying the output to a 5.0 server, and omit that
+option when applying the output to a 5.1 server. There should be no need to
+omit the format description event in the output when other BINLOG statements
+for row events are present, as it no longer changes the server id. In fact the
+format description event is required to be able to execute other BINLOG
+statements, as its purpose is to define the binary format of the events
+contained in these statements.
+
+Alternatively, we could implement that if the format description event of the
+source binlog has server version < 5.1, and --base64-output=auto (default),
+then the format description event is omitted (and should any BINLOG statement
+be needed, unlikely as it is from a 5.0 server, we will need to throw an
+error).
+
+The binlog format version for 5.0 and 5.1 is actually the same, hence the need
+to look at server version to guess if the format description event can be
+omitted.
-=-=(Knielsen - Tue, 08 Sep 2009, 14:29)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.17531 2009-09-08 14:29:30.000000000 +0300
+++ /tmp/wklog.50.new.17531 2009-09-08 14:29:30.000000000 +0300
@@ -12,3 +12,37 @@
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
+First, the problem is not the format description log event. In fact all log
+events have their own value of server_id, and every event in the BINLOG
+statement is executed with its own id as server_id.
+
+It seems it was introduced deliberately in the patch for Bug#32407. This patch
+makes sql thread and BINLOG statement share code path for executing the binary
+event, even though the bug is really about something different (outputting
+format description event to allow proper execution of other BINLOG
+statements).
+
+Nevertheless, I think using the server_id in the events of a BINLOG statement
+is wrong:
+
+1. It is different behaviour from executing normal statement-based events not
+written using BINLOG.
+
+2. It causes the possibility for infinite cycle of replication in a cyclic
+replication setup, if the server ids in BINLOG are different from all other
+server ids in the cycle.
+
+3. The functionality of applying events with original server id from the event
+is still available by pointing the slave thread to the binlog. The
+functionality of applying row-based binlog events with server id of the server
+executing the BINLOG statements is not otherwise available.
+
+In fact most of the code from the slave thread that is now also run when
+executing BINLOG statements is redundant, or does the wrong thing (like
+updating binlog position).
+
+Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
+able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
+it to be able to simulate the effect of the slave sql thread? I think the
+former is the most important one.
+
-=-=(Knielsen - Mon, 07 Sep 2009, 10:06)=-=-
Research worklog, bugs, and existing server code.
Worked 2 hours and estimate 0 hours remain (original estimate increased by 2 hours).
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
Dependency created: 39 now depends on 50
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.11389 2009-08-17 14:13:05.000000000 +0300
+++ /tmp/wklog.50.new.11389 2009-08-17 14:13:05.000000000 +0300
@@ -1 +1,14 @@
+First item
+----------
+AFAIU what needs to be done is:
+1. record a source server version (it is in the first binlog event).
+2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
+ below.
+
+and we'll get a 5.0-applicable binlog.
+
+Second item
+-----------
+One question that one needs to sort out before disabling server_id change is
+why it was put there in the first place? Should it be always removed?
DESCRIPTION:
According to complaints in BUG#46640:
1. mysqlbinlog will emit a 5.0-incompatible "format description binlog
statement" even when reading a binary log that was produced by 5.0.
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
2. When one executes a BINLOG statement (containing "format description binlog
statement" or other events), this will cause subsequent statements run in
the same session to be binlogged with the server id of the last event
executed, not with the real server id. This can cause problems like infinite
recursive application in a circular replication topology.
This WL is to fix these issues.
HIGH-LEVEL SPECIFICATION:
First item
----------
AFAIU what needs to be done is:
1. record a source server version (it is in the first binlog event).
2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
below.
and we'll get a 5.0-applicable binlog.
Second item
-----------
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
First, the problem is not the format description log event. In fact all log
events have their own value of server_id, and every event in the BINLOG
statement is executed with its own id as server_id.
It seems it was introduced deliberately in the patch for Bug#32407. This patch
makes sql thread and BINLOG statement share code path for executing the binary
event, even though the bug is really about something different (outputting
format description event to allow proper execution of other BINLOG
statements).
Nevertheless, I think using the server_id in the events of a BINLOG statement
is wrong:
1. It is different behaviour from executing normal statement-based events not
written using BINLOG.
2. It causes the possibility for infinite cycle of replication in a cyclic
replication setup, if the server ids in BINLOG are different from all other
server ids in the cycle.
3. The functionality of applying events with original server id from the event
is still available by pointing the slave thread to the binlog. The
functionality of applying row-based binlog events with server id of the server
executing the BINLOG statements is not otherwise available.
In fact most of the code from the slave thread that is now also run when
executing BINLOG statements is redundant, or does the wrong thing (like
updating binlog position).
Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
it to be able to simulate the effect of the slave sql thread? I think the
former is the most important one.
LOW-LEVEL DESIGN:
I think the fix for point 2 is to replace the call to
apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
call to ev->apply_event(). However, I need to check two things to be sure this
is correct:
1. The existing code does
if (!ev->when) ev->when= my_time(0)
Need to understand if this is needed/correct or not.
2. The existing code does ev->update_pos(). I think this is redundant for
BINLOG statement (as it uses a fake rli structure), but I need to check to
make sure.
Once this is done, point 1 may no longer be needed. The user can use
--base64-output=never when applying the output to a 5.0 server, and omit that
option when applying the output to a 5.1 server. There should be no need to
omit the format description event in the output when other BINLOG statements
for row events are present, as it no longer changes the server id. In fact the
format description event is required to be able to execute other BINLOG
statements, as its purpose is to define the binary format of the events
contained in these statements.
Alternatively, we could implement that if the format description event of the
source binlog has server version < 5.1, and --base64-output=auto (default),
then the format description event is omitted (and should any BINLOG statement
be needed, unlikely as it is from a 5.0 server, we will need to throw an
error).
The binlog format version for 5.0 and 5.1 is actually the same, hence the need
to look at server version to guess if the format description event can be
omitted.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Progress (by Knielsen): mysqlbinlog: remove undesired effects of format description binlog statement (50)
by worklog-noreply@askmonty.org 28 Sep '09
by worklog-noreply@askmonty.org 28 Sep '09
28 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: mysqlbinlog: remove undesired effects of format description binlog
statement
CREATION DATE..: Mon, 17 Aug 2009, 14:12
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 50 (http://askmonty.org/worklog/?tid=50)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 14
ESTIMATE.......: 6 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Mon, 28 Sep 2009, 16:00)=-=-
Updated patch against MySQL 5.1.39
Fixes a couple of issues with the patch.
Discussions with MySQL developer.
Worked 4 hours and estimate 6 hours remain (original estimate unchanged).
-=-=(Knielsen - Wed, 09 Sep 2009, 18:31)=-=-
Discussed with MySQL developers on Bug#46640.
Committed a suggested fix:
https://lists.launchpad.net/maria-developers/msg00926.html
Worked 8 hours and estimate 10 hours remain (original estimate increased by 18 hours).
-=-=(Guest - Wed, 09 Sep 2009, 11:50)=-=-
High Level Description modified.
--- /tmp/wklog.50.old.11584 2009-09-09 11:50:12.000000000 +0300
+++ /tmp/wklog.50.new.11584 2009-09-09 11:50:12.000000000 +0300
@@ -5,7 +5,11 @@
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
-2. When one applies "format description binlog statement" at the slave, it
-will change the slave's server_id when applied.
+2. When one executes a BINLOG statement (containing "format description binlog
+statement" or other events), this will cause subsequent statements run in
+the same session to be binlogged with the server id of the last event
+executed, not with the real server id. This can cause problems like infinite
+recursive application in a circular replication topology.
This WL is to fix these issues.
+
-=-=(Knielsen - Tue, 08 Sep 2009, 15:07)=-=-
Low Level Design modified.
--- /tmp/wklog.50.old.19208 2009-09-08 15:07:09.000000000 +0300
+++ /tmp/wklog.50.new.19208 2009-09-08 15:07:09.000000000 +0300
@@ -1 +1,34 @@
+I think the fix for point 2 is to replace the call to
+apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
+call to ev->apply_event(). However, I need to check two things to be sure this
+is correct:
+
+1. The existing code does
+
+ if (!ev->when) ev->when= my_time(0)
+
+Need to understand if this is needed/correct or not.
+
+2. The existing code does ev->update_pos(). I think this is redundant for
+BINLOG statement (as it uses a fake rli structure), but I need to check to
+make sure.
+
+Once this is done, point 1 may no longer be needed. The user can use
+--base64-output=never when applying the output to a 5.0 server, and omit that
+option when applying the output to a 5.1 server. There should be no need to
+omit the format description event in the output when other BINLOG statements
+for row events are present, as it no longer changes the server id. In fact the
+format description event is required to be able to execute other BINLOG
+statements, as its purpose is to define the binary format of the events
+contained in these statements.
+
+Alternatively, we could implement that if the format description event of the
+source binlog has server version < 5.1, and --base64-output=auto (default),
+then the format description event is omitted (and should any BINLOG statement
+be needed, unlikely as it is from a 5.0 server, we will need to throw an
+error).
+
+The binlog format version for 5.0 and 5.1 is actually the same, hence the need
+to look at server version to guess if the format description event can be
+omitted.
-=-=(Knielsen - Tue, 08 Sep 2009, 14:29)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.17531 2009-09-08 14:29:30.000000000 +0300
+++ /tmp/wklog.50.new.17531 2009-09-08 14:29:30.000000000 +0300
@@ -12,3 +12,37 @@
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
+First, the problem is not the format description log event. In fact all log
+events have their own value of server_id, and every event in the BINLOG
+statement is executed with its own id as server_id.
+
+It seems it was introduced deliberately in the patch for Bug#32407. This patch
+makes sql thread and BINLOG statement share code path for executing the binary
+event, even though the bug is really about something different (outputting
+format description event to allow proper execution of other BINLOG
+statements).
+
+Nevertheless, I think using the server_id in the events of a BINLOG statement
+is wrong:
+
+1. It is different behaviour from executing normal statement-based events not
+written using BINLOG.
+
+2. It causes the possibility for infinite cycle of replication in a cyclic
+replication setup, if the server ids in BINLOG are different from all other
+server ids in the cycle.
+
+3. The functionality of applying events with original server id from the event
+is still available by pointing the slave thread to the binlog. The
+functionality of applying row-based binlog events with server id of the server
+executing the BINLOG statements is not otherwise available.
+
+In fact most of the code from the slave thread that is now also run when
+executing BINLOG statements is redundant, or does the wrong thing (like
+updating binlog position).
+
+Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
+able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
+it to be able to simulate the effect of the slave sql thread? I think the
+former is the most important one.
+
-=-=(Knielsen - Mon, 07 Sep 2009, 10:06)=-=-
Research worklog, bugs, and existing server code.
Worked 2 hours and estimate 0 hours remain (original estimate increased by 2 hours).
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
Dependency created: 39 now depends on 50
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.11389 2009-08-17 14:13:05.000000000 +0300
+++ /tmp/wklog.50.new.11389 2009-08-17 14:13:05.000000000 +0300
@@ -1 +1,14 @@
+First item
+----------
+AFAIU what needs to be done is:
+1. record a source server version (it is in the first binlog event).
+2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
+ below.
+
+and we'll get a 5.0-applicable binlog.
+
+Second item
+-----------
+One question that one needs to sort out before disabling server_id change is
+why it was put there in the first place? Should it be always removed?
DESCRIPTION:
According to complaints in BUG#46640:
1. mysqlbinlog will emit a 5.0-incompatible "format description binlog
statement" even when reading a binary log that was produced by 5.0.
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
2. When one executes a BINLOG statement (containing "format description binlog
statement" or other events), this will cause subsequent statements run in
the same session to be binlogged with the server id of the last event
executed, not with the real server id. This can cause problems like infinite
recursive application in a circular replication topology.
This WL is to fix these issues.
HIGH-LEVEL SPECIFICATION:
First item
----------
AFAIU what needs to be done is:
1. record a source server version (it is in the first binlog event).
2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
below.
and we'll get a 5.0-applicable binlog.
Second item
-----------
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
First, the problem is not the format description log event. In fact all log
events have their own value of server_id, and every event in the BINLOG
statement is executed with its own id as server_id.
It seems it was introduced deliberately in the patch for Bug#32407. This patch
makes sql thread and BINLOG statement share code path for executing the binary
event, even though the bug is really about something different (outputting
format description event to allow proper execution of other BINLOG
statements).
Nevertheless, I think using the server_id in the events of a BINLOG statement
is wrong:
1. It is different behaviour from executing normal statement-based events not
written using BINLOG.
2. It causes the possibility for infinite cycle of replication in a cyclic
replication setup, if the server ids in BINLOG are different from all other
server ids in the cycle.
3. The functionality of applying events with original server id from the event
is still available by pointing the slave thread to the binlog. The
functionality of applying row-based binlog events with server id of the server
executing the BINLOG statements is not otherwise available.
In fact most of the code from the slave thread that is now also run when
executing BINLOG statements is redundant, or does the wrong thing (like
updating binlog position).
Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
it to be able to simulate the effect of the slave sql thread? I think the
former is the most important one.
LOW-LEVEL DESIGN:
I think the fix for point 2 is to replace the call to
apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
call to ev->apply_event(). However, I need to check two things to be sure this
is correct:
1. The existing code does
if (!ev->when) ev->when= my_time(0)
Need to understand if this is needed/correct or not.
2. The existing code does ev->update_pos(). I think this is redundant for
BINLOG statement (as it uses a fake rli structure), but I need to check to
make sure.
Once this is done, point 1 may no longer be needed. The user can use
--base64-output=never when applying the output to a 5.0 server, and omit that
option when applying the output to a 5.1 server. There should be no need to
omit the format description event in the output when other BINLOG statements
for row events are present, as it no longer changes the server id. In fact the
format description event is required to be able to execute other BINLOG
statements, as its purpose is to define the binary format of the events
contained in these statements.
Alternatively, we could implement that if the format description event of the
source binlog has server version < 5.1, and --base64-output=auto (default),
then the format description event is omitted (and should any BINLOG statement
be needed, unlikely as it is from a 5.0 server, we will need to throw an
error).
The binlog format version for 5.0 and 5.1 is actually the same, hence the need
to look at server version to guess if the format description event can be
omitted.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Progress (by Knielsen): mysqlbinlog: remove undesired effects of format description binlog statement (50)
by worklog-noreply@askmonty.org 28 Sep '09
by worklog-noreply@askmonty.org 28 Sep '09
28 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: mysqlbinlog: remove undesired effects of format description binlog
statement
CREATION DATE..: Mon, 17 Aug 2009, 14:12
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 50 (http://askmonty.org/worklog/?tid=50)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 14
ESTIMATE.......: 6 (hours remain)
ORIG. ESTIMATE.: 10
PROGRESS NOTES:
-=-=(Knielsen - Mon, 28 Sep 2009, 16:00)=-=-
Updated patch against MySQL 5.1.39
Fixes a couple of issues with the patch.
Discussions with MySQL developer.
Worked 4 hours and estimate 6 hours remain (original estimate unchanged).
-=-=(Knielsen - Wed, 09 Sep 2009, 18:31)=-=-
Discussed with MySQL developers on Bug#46640.
Committed a suggested fix:
https://lists.launchpad.net/maria-developers/msg00926.html
Worked 8 hours and estimate 10 hours remain (original estimate increased by 18 hours).
-=-=(Guest - Wed, 09 Sep 2009, 11:50)=-=-
High Level Description modified.
--- /tmp/wklog.50.old.11584 2009-09-09 11:50:12.000000000 +0300
+++ /tmp/wklog.50.new.11584 2009-09-09 11:50:12.000000000 +0300
@@ -5,7 +5,11 @@
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
-2. When one applies "format description binlog statement" at the slave, it
-will change the slave's server_id when applied.
+2. When one executes a BINLOG statement (containing "format description binlog
+statement" or other events), this will cause subsequent statements run in
+the same session to be binlogged with the server id of the last event
+executed, not with the real server id. This can cause problems like infinite
+recursive application in a circular replication topology.
This WL is to fix these issues.
+
-=-=(Knielsen - Tue, 08 Sep 2009, 15:07)=-=-
Low Level Design modified.
--- /tmp/wklog.50.old.19208 2009-09-08 15:07:09.000000000 +0300
+++ /tmp/wklog.50.new.19208 2009-09-08 15:07:09.000000000 +0300
@@ -1 +1,34 @@
+I think the fix for point 2 is to replace the call to
+apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
+call to ev->apply_event(). However, I need to check two things to be sure this
+is correct:
+
+1. The existing code does
+
+ if (!ev->when) ev->when= my_time(0)
+
+Need to understand if this is needed/correct or not.
+
+2. The existing code does ev->update_pos(). I think this is redundant for
+BINLOG statement (as it uses a fake rli structure), but I need to check to
+make sure.
+
+Once this is done, point 1 may no longer be needed. The user can use
+--base64-output=never when applying the output to a 5.0 server, and omit that
+option when applying the output to a 5.1 server. There should be no need to
+omit the format description event in the output when other BINLOG statements
+for row events are present, as it no longer changes the server id. In fact the
+format description event is required to be able to execute other BINLOG
+statements, as its purpose is to define the binary format of the events
+contained in these statements.
+
+Alternatively, we could implement that if the format description event of the
+source binlog has server version < 5.1, and --base64-output=auto (default),
+then the format description event is omitted (and should any BINLOG statement
+be needed, unlikely as it is from a 5.0 server, we will need to throw an
+error).
+
+The binlog format version for 5.0 and 5.1 is actually the same, hence the need
+to look at server version to guess if the format description event can be
+omitted.
-=-=(Knielsen - Tue, 08 Sep 2009, 14:29)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.17531 2009-09-08 14:29:30.000000000 +0300
+++ /tmp/wklog.50.new.17531 2009-09-08 14:29:30.000000000 +0300
@@ -12,3 +12,37 @@
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
+First, the problem is not the format description log event. In fact all log
+events have their own value of server_id, and every event in the BINLOG
+statement is executed with its own id as server_id.
+
+It seems it was introduced deliberately in the patch for Bug#32407. This patch
+makes sql thread and BINLOG statement share code path for executing the binary
+event, even though the bug is really about something different (outputting
+format description event to allow proper execution of other BINLOG
+statements).
+
+Nevertheless, I think using the server_id in the events of a BINLOG statement
+is wrong:
+
+1. It is different behaviour from executing normal statement-based events not
+written using BINLOG.
+
+2. It causes the possibility for infinite cycle of replication in a cyclic
+replication setup, if the server ids in BINLOG are different from all other
+server ids in the cycle.
+
+3. The functionality of applying events with original server id from the event
+is still available by pointing the slave thread to the binlog. The
+functionality of applying row-based binlog events with server id of the server
+executing the BINLOG statements is not otherwise available.
+
+In fact most of the code from the slave thread that is now also run when
+executing BINLOG statements is redundant, or does the wrong thing (like
+updating binlog position).
+
+Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
+able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
+it to be able to simulate the effect of the slave sql thread? I think the
+former is the most important one.
+
-=-=(Knielsen - Mon, 07 Sep 2009, 10:06)=-=-
Research worklog, bugs, and existing server code.
Worked 2 hours and estimate 0 hours remain (original estimate increased by 2 hours).
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
Dependency created: 39 now depends on 50
-=-=(Psergey - Mon, 17 Aug 2009, 14:13)=-=-
High-Level Specification modified.
--- /tmp/wklog.50.old.11389 2009-08-17 14:13:05.000000000 +0300
+++ /tmp/wklog.50.new.11389 2009-08-17 14:13:05.000000000 +0300
@@ -1 +1,14 @@
+First item
+----------
+AFAIU what needs to be done is:
+1. record a source server version (it is in the first binlog event).
+2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
+ below.
+
+and we'll get a 5.0-applicable binlog.
+
+Second item
+-----------
+One question that one needs to sort out before disabling server_id change is
+why it was put there in the first place? Should it be always removed?
DESCRIPTION:
According to complaints in BUG#46640:
1. mysqlbinlog will emit a 5.0-incompatible "format description binlog
statement" even when reading a binary log that was produced by 5.0.
This will cause an error when one tires to apply mysqlbinlog output to a
5.0.x server.
2. When one executes a BINLOG statement (containing "format description binlog
statement" or other events), this will cause subsequent statements run in
the same session to be binlogged with the server id of the last event
executed, not with the real server id. This can cause problems like infinite
recursive application in a circular replication topology.
This WL is to fix these issues.
HIGH-LEVEL SPECIFICATION:
First item
----------
AFAIU what needs to be done is:
1. record a source server version (it is in the first binlog event).
2. don't emit a BINLOG statement if the recorded version number is 5.0.x or
below.
and we'll get a 5.0-applicable binlog.
Second item
-----------
One question that one needs to sort out before disabling server_id change is
why it was put there in the first place? Should it be always removed?
First, the problem is not the format description log event. In fact all log
events have their own value of server_id, and every event in the BINLOG
statement is executed with its own id as server_id.
It seems it was introduced deliberately in the patch for Bug#32407. This patch
makes sql thread and BINLOG statement share code path for executing the binary
event, even though the bug is really about something different (outputting
format description event to allow proper execution of other BINLOG
statements).
Nevertheless, I think using the server_id in the events of a BINLOG statement
is wrong:
1. It is different behaviour from executing normal statement-based events not
written using BINLOG.
2. It causes the possibility for infinite cycle of replication in a cyclic
replication setup, if the server ids in BINLOG are different from all other
server ids in the cycle.
3. The functionality of applying events with original server id from the event
is still available by pointing the slave thread to the binlog. The
functionality of applying row-based binlog events with server id of the server
executing the BINLOG statements is not otherwise available.
In fact most of the code from the slave thread that is now also run when
executing BINLOG statements is redundant, or does the wrong thing (like
updating binlog position).
Maybe there is a confusion on the purpose of the BINLOG statement. Is it to be
able to apply row-based events manually to a server (mysqlbinlog|mysql)? Or is
it to be able to simulate the effect of the slave sql thread? I think the
former is the most important one.
LOW-LEVEL DESIGN:
I think the fix for point 2 is to replace the call to
apply_event_and_update_pos() in mysql_client_binlog_statement() with a direct
call to ev->apply_event(). However, I need to check two things to be sure this
is correct:
1. The existing code does
if (!ev->when) ev->when= my_time(0)
Need to understand if this is needed/correct or not.
2. The existing code does ev->update_pos(). I think this is redundant for
BINLOG statement (as it uses a fake rli structure), but I need to check to
make sure.
Once this is done, point 1 may no longer be needed. The user can use
--base64-output=never when applying the output to a 5.0 server, and omit that
option when applying the output to a 5.1 server. There should be no need to
omit the format description event in the output when other BINLOG statements
for row events are present, as it no longer changes the server id. In fact the
format description event is required to be able to execute other BINLOG
statements, as its purpose is to define the binary format of the events
contained in these statements.
Alternatively, we could implement that if the format description event of the
source binlog has server version < 5.1, and --base64-output=auto (default),
then the format description event is omitted (and should any BINLOG statement
be needed, unlikely as it is from a 5.0 server, we will need to throw an
error).
The binlog format version for 5.0 and 5.1 is actually the same, hence the need
to look at server version to guess if the format description event can be
omitted.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
Hi Daniel,
Here is a rough changelog written from reading through bzr history.
I took a dump of every commit in MariaDB that is not in MySQL 5.1.38, and
wrote this summary of the changes.
I don't have sufficient knowledge to parse through all of the Maria changes
from before MariaDB started. Instead I wrote a generic entry for the Maria
storage engine, and also added entries for what is already written (by Monty I
think) on http://askmonty.org/wiki/index.php/MariaDB_versus_MySQL
So this is probably the best shot we have at a complete list of relevant
differences between MySQL and MariaDB. Do let me know if anyone finds anything
missing or any errors.
Daniel, I hope you can use this as the basis for the release notes.
Maybe this list will also be useful for you to fill out the Manual on the Wiki. I am
thinking you could check that all new features are documented, and add pages
for those that are not. If not trivial, you could just make a stub page and
ask on maria-developers@ for someone to fill them out?
- Kristian.
-----------------------------------------------------------------------
Generally: MariaDB-5.1.38-beta1 is based on MySQL-5.1.38, but has these
additional features and bug fixes.
Feature:
mysql-test-run now has options --stop-file and --stop-keep-alive (also
accessible with environment variables MTR_STOP_FILE and
MTR_STOP_KEEP_ALIVE). With these, it is possible to pause a running test
temporarily and let it continue later.
Bug fix:
mysqlslap: setting --engine does not get replicated
http://bugs.mysql.com/bug.php?id=46967
mysqlslap: specifying --engine and --create does not work with
--engine=<storage_engine>:<option>
https://bugs.launchpad.net/maria/+bug/429773
Feature:
Improvements to Gcov support in testing.
Feature:
New column TIME_MS in SHOW FULL PROCESSLIST and
INFORMATION_SCHEMA.PROCESSLIST, similar to the old TIME column, but with
microsecond resolution. Also fixes old TIME column to not be influenced by
@TIMESTAMP.
Patch by Percona.
Bug fix:
rpl_do_grant fails on PB-2 with a failing connect
http://bugs.mysql.com/bug.php?id=47016
Bug fix:
Windows: mysql-test-run --log-error fixed to not add --console.
Bug fix:
The myisam_crash_before_flush_keys test fails on Windows
http://bugs.mysql.com/bug.php?id=47455
Bug fix:
rpl.rpl_get_master_version_and_clock fails on hpux11.31
http://bugs.mysql.com/bug.php?id=46931
Bug fix:
safe_process: FATAL ERROR, Unknown option: --nocore
http://bugs.mysql.com/bug.php?id=46212
Feature:
Optimizer improvement: Table elimination.
http://askmonty.org/worklog/Server-Sprint/?tid=17
Bug fix:
XtraDB crashes on startup on windows
https://bugs.launchpad.net/maria/+bug/417751
Bug fix:
Eliminate compiler warnings.
Bug fix:
Fix parsing of enum-valued options for plugins.
https://bugs.launchpad.net/maria/+bug/423035
Feature:
Enhancements to slow log. Includes details of execution plan and
microsecond-precision resolution.
Based on microslow patch by Percona.
Feature:
PBXT storage engine.
PBXT is developed by PrimeBase Technologies, http://www.primebase.org/
Bug fix:
Solaris build fixes.
Feature:
XtraDB storage engine as a replacement for the MySQL built-in InnoDB.
XtraDB is based on the Oracle/Innobase InnoDB plugin version 1.0.3, with
enhancements.
XtraDB is developed by Percona.
Feature:
Performance improvements for common cases of character set conversion.
Feature:
Pool-of-threads, allowing to map a high number of simultaneous connections
onto a lower number of operating system treads, to reduce overhead with
using large number of threads.
Feature:
New handler call prepare_index_scan() and other small improvements to the
internal storage engine handler API.
Bug fix:
query_cache_debug.test fails
http://bugs.mysql.com/bug.php?id=45632
Bug fix:
enum-style command-line options are not honoured (maria.maria-recover fails)
http://bugs.mysql.com/bug.php?id=41010
Bug fix:
mysql-test-run sometimes terminated mysqld early, causing loss of memory
leak error reports from Valgrind and GCov test coverage output.
http://bugs.mysql.com/bug.php?id=43418
Bug fix:
Several Valgrind reported bugs in the source code fixed.
Bug fix:
Save SAFE_MUTEX configure #define in config.h, to facilitate correct build
options for plugins.
Feature:
./configure now outputs a summary section at the end of the output.
(By C.J. Adams-Collier).
Bug fix:
test maria.maria fails if server built without '--with-partition'
https://bugs.launchpad.net/maria/+bug/330611
Feature:
NDB storage engine disabled in MariaDB builds.
(NDB is not supported in MariaDB).
Feature:
Added --abort-source-on-error to the mysql client.
Feature:
Faster CHECKSUM TABLE.
Feature:
Debugging code to check for taking mutexes in the wrong order, which
enables to catch potential deadlocks in the server code.
Feature:
Maria storage engine.
The Maria storage engine is an enhanment over the MyISAM storage engine
which provides journaling and crash recovery.
4
3
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2737: Fix all innodb tests being disabled when running testsuite as root.
by noreply@launchpad.net 26 Sep '09
by noreply@launchpad.net 26 Sep '09
26 Sep '09
------------------------------------------------------------
revno: 2737
committer: knielsen(a)knielsen-hq.org
branch nick: work-5.1-release
timestamp: Sat 2009-09-26 04:25:56 +0200
message:
Fix all innodb tests being disabled when running testsuite as root.
modified:
mysql-test/mysql-test-run.pl
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2737)
by knielsen@knielsen-hq.org 26 Sep '09
by knielsen@knielsen-hq.org 26 Sep '09
26 Sep '09
#At lp:maria
2737 knielsen(a)knielsen-hq.org 2009-09-26
Fix all innodb tests being disabled when running testsuite as root.
modified:
mysql-test/mysql-test-run.pl
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-25 14:38:02 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-09-26 02:25:56 +0000
@@ -1500,6 +1500,10 @@ sub collect_mysqld_features {
mtr_add_arg($args, "--datadir=%s", mixed_path($tmpdir));
mtr_add_arg($args, "--language=%s", $path_language);
mtr_add_arg($args, "--skip-grant-tables");
+ my $euid= $>;
+ if (!IS_WINDOWS and $euid == 0) {
+ mtr_add_arg($args, "--user=root");
+ }
mtr_add_arg($args, "--verbose");
mtr_add_arg($args, "--help");
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2736: Fix some test failures found during RPM package building:
by noreply@launchpad.net 25 Sep '09
by noreply@launchpad.net 25 Sep '09
25 Sep '09
------------------------------------------------------------
revno: 2736
committer: knielsen(a)knielsen-hq.org
branch nick: work-5.1-release
timestamp: Fri 2009-09-25 16:38:02 +0200
message:
Fix some test failures found during RPM package building:
- mysqlslap result file update after merge.
- Fix skipping certain tests when running test suite as root, got broken somehow.
modified:
mysql-test/mysql-test-run.pl
mysql-test/r/mysqlslap.result
mysql-test/t/mysqld_option_err.test
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2736)
by knielsen@knielsen-hq.org 25 Sep '09
by knielsen@knielsen-hq.org 25 Sep '09
25 Sep '09
#At lp:maria
2736 knielsen(a)knielsen-hq.org 2009-09-25
Fix some test failures found during RPM package building:
- mysqlslap result file update after merge.
- Fix skipping certain tests when running test suite as root, got broken somehow.
modified:
mysql-test/mysql-test-run.pl
mysql-test/r/mysqlslap.result
mysql-test/t/mysqld_option_err.test
per-file messages:
mysql-test/mysql-test-run.pl
Somehow skipping tests when running as root got broken. The mysqltest if() no longer seems
to accept YES as a true value, so use 1 for true value instead.
mysql-test/r/mysqlslap.result
Result file update after change in engine behaviour of mysqlslap.
mysql-test/t/mysqld_option_err.test
This test does not work when run as root.
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-25 08:56:53 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-09-25 14:38:02 +0000
@@ -2288,7 +2288,7 @@ sub check_running_as_root () {
{
mtr_warning("running this script as _root_ will cause some " .
"tests to be skipped");
- $ENV{'MYSQL_TEST_ROOT'}= "YES";
+ $ENV{'MYSQL_TEST_ROOT'}= "1";
}
chmod(oct("0755"), $test_file);
=== modified file 'mysql-test/r/mysqlslap.result'
--- a/mysql-test/r/mysqlslap.result 2007-12-20 20:32:16 +0000
+++ b/mysql-test/r/mysqlslap.result 2009-09-25 14:38:02 +0000
@@ -122,8 +122,7 @@ DROP SCHEMA IF EXISTS `mysqlslap`;
DROP SCHEMA IF EXISTS `mysqlslap`;
CREATE SCHEMA `mysqlslap`;
use mysqlslap;
-set storage_engine=`heap`;
-CREATE TABLE t1 (id int, name varchar(64));
+CREATE TABLE t1 (id int, name varchar(64)) Engine = heap;
create table t2(foo1 varchar(32), foo2 varchar(32));
INSERT INTO t1 VALUES (1, 'This is a test');
insert into t2 values ('test', 'test2');
@@ -133,8 +132,7 @@ DROP SCHEMA IF EXISTS `mysqlslap`;
DROP SCHEMA IF EXISTS `mysqlslap`;
CREATE SCHEMA `mysqlslap`;
use mysqlslap;
-set storage_engine=`myisam`;
-CREATE TABLE t1 (id int, name varchar(64));
+CREATE TABLE t1 (id int, name varchar(64)) Engine = myisam;
create table t2(foo1 varchar(32), foo2 varchar(32));
INSERT INTO t1 VALUES (1, 'This is a test');
insert into t2 values ('test', 'test2');
@@ -144,8 +142,7 @@ DROP SCHEMA IF EXISTS `mysqlslap`;
DROP SCHEMA IF EXISTS `mysqlslap`;
CREATE SCHEMA `mysqlslap`;
use mysqlslap;
-set storage_engine=`heap`;
-CREATE TABLE t1 (id int, name varchar(64));
+CREATE TABLE t1 (id int, name varchar(64)) Engine = heap;
create table t2(foo1 varchar(32), foo2 varchar(32));
INSERT INTO t1 VALUES (1, 'This is a test');
insert into t2 values ('test', 'test2');
@@ -157,8 +154,7 @@ DROP SCHEMA IF EXISTS `mysqlslap`;
DROP SCHEMA IF EXISTS `mysqlslap`;
CREATE SCHEMA `mysqlslap`;
use mysqlslap;
-set storage_engine=`myisam`;
-CREATE TABLE t1 (id int, name varchar(64));
+CREATE TABLE t1 (id int, name varchar(64)) Engine = myisam;
create table t2(foo1 varchar(32), foo2 varchar(32));
INSERT INTO t1 VALUES (1, 'This is a test');
insert into t2 values ('test', 'test2');
@@ -170,8 +166,7 @@ DROP SCHEMA IF EXISTS `mysqlslap`;
DROP SCHEMA IF EXISTS `mysqlslap`;
CREATE SCHEMA `mysqlslap`;
use mysqlslap;
-set storage_engine=`heap`;
-CREATE TABLE t1 (id int, name varchar(64));
+CREATE TABLE t1 (id int, name varchar(64)) Engine = heap;
create table t2(foo1 varchar(32), foo2 varchar(32));
INSERT INTO t1 VALUES (1, 'This is a test');
insert into t2 values ('test', 'test2');
@@ -196,8 +191,7 @@ DROP SCHEMA IF EXISTS `mysqlslap`;
DROP SCHEMA IF EXISTS `mysqlslap`;
CREATE SCHEMA `mysqlslap`;
use mysqlslap;
-set storage_engine=`myisam`;
-CREATE TABLE t1 (id int, name varchar(64));
+CREATE TABLE t1 (id int, name varchar(64)) Engine = myisam;
create table t2(foo1 varchar(32), foo2 varchar(32));
INSERT INTO t1 VALUES (1, 'This is a test');
insert into t2 values ('test', 'test2');
=== modified file 'mysql-test/t/mysqld_option_err.test'
--- a/mysql-test/t/mysqld_option_err.test 2009-09-03 13:05:02 +0000
+++ b/mysql-test/t/mysqld_option_err.test 2009-09-25 14:38:02 +0000
@@ -10,6 +10,9 @@
--source include/not_embedded.inc
+# mysqld refuses to run as root normally.
+-- source include/not_as_root.inc
+
# We have not run (and do not need) bootstrap of the server. We just
# give it a dummy data directory (for log files etc).
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2735: Merge MySQL-5.1.38 and XtraDB-7 into MariaDB.
by noreply@launchpad.net 25 Sep '09
by noreply@launchpad.net 25 Sep '09
25 Sep '09
Merge authors:
<Dao-Gang.Qu(a)sun.com>
Aleksandr Kuzminsky (akuzminsky)
Alexander Barkov <bar(a)mysql.com>
Alexander Nozdrin <alik(a)sun.com>
Alexey Botchkov <holyfoot(a)mysql.com>...
------------------------------------------------------------
revno: 2735 [merge]
committer: knielsen(a)knielsen-hq.org
branch nick: work-5.1-release
timestamp: Fri 2009-09-25 10:56:53 +0200
message:
Merge MySQL-5.1.38 and XtraDB-7 into MariaDB.
Merge Percona microsec_process patch.
Includes lots of after-merge fixes, Windows fixes, and other misc. small fixes.
removed:
cmd-line-utils/libedit/README
cmd-line-utils/libedit/filecomplete.c
cmd-line-utils/libedit/filecomplete.h
mysql-test/include/count_sessions.inc
mysql-test/include/diff_tables.inc
mysql-test/include/wait_for_status_var.inc
mysql-test/include/wait_show_condition.inc
mysql-test/include/wait_until_count_sessions.inc
mysql-test/r/innodb_bug42419.result
mysql-test/suite/funcs_1/datadict/charset_collation.inc
mysql-test/suite/funcs_1/r/charset_collation_1.result
mysql-test/suite/funcs_1/r/charset_collation_2.result
mysql-test/suite/funcs_1/r/charset_collation_3.result
mysql-test/suite/funcs_1/t/charset_collation_1.test
mysql-test/suite/funcs_1/t/charset_collation_2.test
mysql-test/suite/funcs_1/t/charset_collation_3.test
mysql-test/suite/funcs_1/t/ndb_storedproc_06.tes
mysql-test/suite/funcs_1/t/ndb_storedproc_08.tes
mysql-test/suite/rpl/t/rpl_000015-slave.sh
mysql-test/t/innodb_bug42419.test
sql/mysql_priv.h.pp
added:
cmd-line-utils/libedit/README
cmd-line-utils/libedit/filecomplete.c
cmd-line-utils/libedit/filecomplete.h
mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test
mysql-test/include/count_sessions.inc
mysql-test/include/diff_master_slave.inc
mysql-test/include/diff_tables.inc
mysql-test/include/kill_query.inc
mysql-test/include/kill_query_and_diff_master_slave.inc
mysql-test/include/mysqldump.inc
mysql-test/include/no_valgrind_without_big.inc
mysql-test/include/wait_for_slave_io_error.inc
mysql-test/include/wait_for_status_var.inc
mysql-test/include/wait_show_condition.inc
mysql-test/include/wait_until_count_sessions.inc
mysql-test/r/bug40113.result
mysql-test/r/bug46080.result
mysql-test/r/ctype_gbk_binlog.result
mysql-test/r/innodb_bug21704.result
mysql-test/r/innodb_bug40565.result
mysql-test/r/innodb_bug42101-nonzero.result
mysql-test/r/innodb_bug42101.result
mysql-test/r/innodb_bug42419.result
mysql-test/r/innodb_bug45357.result
mysql-test/r/log_tables_debug.result
mysql-test/r/myisam_crash_before_flush_keys.result
mysql-test/r/myisam_debug.result
mysql-test/r/mysql-bug45236.result
mysql-test/r/mysqldump_restore.result
mysql-test/r/parser_not_embedded.result
mysql-test/r/partition_not_embedded.result
mysql-test/r/partition_rename_longfilename.result
mysql-test/r/sp-fib.result
mysql-test/std_data/bug37631.MYD
mysql-test/std_data/bug37631.MYI
mysql-test/std_data/bug37631.frm
mysql-test/suite/binlog/r/binlog_incident.result
mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_db_filter.result
mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result
mysql-test/suite/binlog/r/binlog_tbl_metadata.result
mysql-test/suite/binlog/t/binlog_incident-master.opt
mysql-test/suite/binlog/t/binlog_incident.test
mysql-test/suite/binlog/t/binlog_row_mysqlbinlog_db_filter.test
mysql-test/suite/binlog/t/binlog_stm_unsafe_warning-master.opt
mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test
mysql-test/suite/binlog/t/binlog_tbl_metadata.test
mysql-test/suite/bugs/r/rpl_bug38205.result
mysql-test/suite/bugs/t/rpl_bug38205.test
mysql-test/suite/funcs_1/r/charset_collation.result
mysql-test/suite/funcs_1/t/charset_collation.test
mysql-test/suite/ibmdb2i/
mysql-test/suite/ibmdb2i/include/
mysql-test/suite/ibmdb2i/include/have_i54.inc
mysql-test/suite/ibmdb2i/include/have_i61.inc
mysql-test/suite/ibmdb2i/include/have_ibmdb2i.inc
mysql-test/suite/ibmdb2i/r/
mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_44020.result
mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_44025.result
mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_44232.result
mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_44610.result
mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_45196.result
mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_45793.result
mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_45983.result
mysql-test/suite/ibmdb2i/r/ibmdb2i_collations.result
mysql-test/suite/ibmdb2i/t/
mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_44020.test
mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_44025.test
mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_44232.test
mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_44610.test
mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_45196.test
mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_45793.test
mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_45983.test
mysql-test/suite/ibmdb2i/t/ibmdb2i_collations.test
mysql-test/suite/innodb/
mysql-test/suite/innodb/include/
mysql-test/suite/innodb/include/have_innodb_plugin.inc
mysql-test/suite/innodb/include/innodb-index.inc
mysql-test/suite/innodb/r/
mysql-test/suite/innodb/r/innodb-analyze.result
mysql-test/suite/innodb/r/innodb-index.result
mysql-test/suite/innodb/r/innodb-index_ucs2.result
mysql-test/suite/innodb/r/innodb-timeout.result
mysql-test/suite/innodb/r/innodb-use-sys-malloc.result
mysql-test/suite/innodb/r/innodb-zip.result
mysql-test/suite/innodb/r/innodb_bug36169.result
mysql-test/suite/innodb/r/innodb_bug36172.result
mysql-test/suite/innodb/r/innodb_bug40360.result
mysql-test/suite/innodb/r/innodb_bug41904.result
mysql-test/suite/innodb/r/innodb_bug44032.result
mysql-test/suite/innodb/r/innodb_file_format.result
mysql-test/suite/innodb/r/innodb_information_schema.result
mysql-test/suite/innodb/t/
mysql-test/suite/innodb/t/disabled.def
mysql-test/suite/innodb/t/innodb-analyze.test
mysql-test/suite/innodb/t/innodb-index.test
mysql-test/suite/innodb/t/innodb-index_ucs2.test
mysql-test/suite/innodb/t/innodb-timeout.test
mysql-test/suite/innodb/t/innodb-use-sys-malloc-master.opt
mysql-test/suite/innodb/t/innodb-use-sys-malloc.test
mysql-test/suite/innodb/t/innodb-zip.test
mysql-test/suite/innodb/t/innodb_bug36169.test
mysql-test/suite/innodb/t/innodb_bug36172.test
mysql-test/suite/innodb/t/innodb_bug40360.test
mysql-test/suite/innodb/t/innodb_bug41904.test
mysql-test/suite/innodb/t/innodb_bug44032.test
mysql-test/suite/innodb/t/innodb_file_format.test
mysql-test/suite/innodb/t/innodb_information_schema.test
mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result
mysql-test/suite/rpl/r/rpl_binlog_max_cache_size.result
mysql-test/suite/rpl/r/rpl_bug38694.result
mysql-test/suite/rpl/r/rpl_concurrency_error.result
mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result
mysql-test/suite/rpl/r/rpl_init_slave_errors.result
mysql-test/suite/rpl/r/rpl_killed_ddl.result
mysql-test/suite/rpl/r/rpl_name_const.result
mysql-test/suite/rpl/t/rpl_begin_commit_rollback-slave.opt
mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test
mysql-test/suite/rpl/t/rpl_binlog_max_cache_size-master.opt
mysql-test/suite/rpl/t/rpl_binlog_max_cache_size.test
mysql-test/suite/rpl/t/rpl_bug38694-slave.opt
mysql-test/suite/rpl/t/rpl_bug38694.test
mysql-test/suite/rpl/t/rpl_concurrency_error-master.opt
mysql-test/suite/rpl/t/rpl_concurrency_error.test
mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test
mysql-test/suite/rpl/t/rpl_init_slave_errors.test
mysql-test/suite/rpl/t/rpl_killed_ddl-master.opt
mysql-test/suite/rpl/t/rpl_killed_ddl.test
mysql-test/suite/rpl/t/rpl_name_const.test
mysql-test/suite/rpl/t/rpl_start_stop_slave-slave.opt
mysql-test/t/bug40113-master.opt
mysql-test/t/bug40113.test
mysql-test/t/bug46080-master.opt
mysql-test/t/bug46080.test
mysql-test/t/ctype_gbk_binlog.test
mysql-test/t/innodb_bug21704.test
mysql-test/t/innodb_bug40565.test
mysql-test/t/innodb_bug42101-nonzero-master.opt
mysql-test/t/innodb_bug42101-nonzero.test
mysql-test/t/innodb_bug42101.test
mysql-test/t/innodb_bug42419.test
mysql-test/t/innodb_bug45357.test
mysql-test/t/log_tables_debug.test
mysql-test/t/myisam_crash_before_flush_keys-master.opt
mysql-test/t/myisam_crash_before_flush_keys.test
mysql-test/t/myisam_debug.test
mysql-test/t/mysql-bug45236.test
mysql-test/t/mysqldump_restore.test
mysql-test/t/parser_not_embedded.test
mysql-test/t/partition_not_embedded.test
mysql-test/t/partition_rename_longfilename.test
mysql-test/t/sp-fib.test
storage/innobase/include/fsp0types.h
storage/innodb_plugin/
storage/innodb_plugin/CMakeLists.txt
storage/innodb_plugin/COPYING
storage/innodb_plugin/COPYING.Google
storage/innodb_plugin/COPYING.Percona
storage/innodb_plugin/COPYING.Sun_Microsystems
storage/innodb_plugin/ChangeLog
storage/innodb_plugin/Doxyfile
storage/innodb_plugin/Makefile.am
storage/innodb_plugin/README
storage/innodb_plugin/btr/
storage/innodb_plugin/btr/btr0btr.c
storage/innodb_plugin/btr/btr0cur.c
storage/innodb_plugin/btr/btr0pcur.c
storage/innodb_plugin/btr/btr0sea.c
storage/innodb_plugin/buf/
storage/innodb_plugin/buf/buf0buddy.c
storage/innodb_plugin/buf/buf0buf.c
storage/innodb_plugin/buf/buf0flu.c
storage/innodb_plugin/buf/buf0lru.c
storage/innodb_plugin/buf/buf0rea.c
storage/innodb_plugin/compile-innodb
storage/innodb_plugin/compile-innodb-debug
storage/innodb_plugin/data/
storage/innodb_plugin/data/data0data.c
storage/innodb_plugin/data/data0type.c
storage/innodb_plugin/dict/
storage/innodb_plugin/dict/dict0boot.c
storage/innodb_plugin/dict/dict0crea.c
storage/innodb_plugin/dict/dict0dict.c
storage/innodb_plugin/dict/dict0load.c
storage/innodb_plugin/dict/dict0mem.c
storage/innodb_plugin/dyn/
storage/innodb_plugin/dyn/dyn0dyn.c
storage/innodb_plugin/eval/
storage/innodb_plugin/eval/eval0eval.c
storage/innodb_plugin/eval/eval0proc.c
storage/innodb_plugin/fil/
storage/innodb_plugin/fil/fil0fil.c
storage/innodb_plugin/fsp/
storage/innodb_plugin/fsp/fsp0fsp.c
storage/innodb_plugin/fut/
storage/innodb_plugin/fut/fut0fut.c
storage/innodb_plugin/fut/fut0lst.c
storage/innodb_plugin/ha/
storage/innodb_plugin/ha/ha0ha.c
storage/innodb_plugin/ha/ha0storage.c
storage/innodb_plugin/ha/hash0hash.c
storage/innodb_plugin/ha_innodb.def
storage/innodb_plugin/handler/
storage/innodb_plugin/handler/ha_innodb.cc
storage/innodb_plugin/handler/ha_innodb.h
storage/innodb_plugin/handler/handler0alter.cc
storage/innodb_plugin/handler/handler0vars.h
storage/innodb_plugin/handler/i_s.cc
storage/innodb_plugin/handler/i_s.h
storage/innodb_plugin/handler/mysql_addons.cc
storage/innodb_plugin/handler/win_delay_loader.cc
storage/innodb_plugin/ibuf/
storage/innodb_plugin/ibuf/ibuf0ibuf.c
storage/innodb_plugin/include/
storage/innodb_plugin/include/btr0btr.h
storage/innodb_plugin/include/btr0btr.ic
storage/innodb_plugin/include/btr0cur.h
storage/innodb_plugin/include/btr0cur.ic
storage/innodb_plugin/include/btr0pcur.h
storage/innodb_plugin/include/btr0pcur.ic
storage/innodb_plugin/include/btr0sea.h
storage/innodb_plugin/include/btr0sea.ic
storage/innodb_plugin/include/btr0types.h
storage/innodb_plugin/include/buf0buddy.h
storage/innodb_plugin/include/buf0buddy.ic
storage/innodb_plugin/include/buf0buf.h
storage/innodb_plugin/include/buf0buf.ic
storage/innodb_plugin/include/buf0flu.h
storage/innodb_plugin/include/buf0flu.ic
storage/innodb_plugin/include/buf0lru.h
storage/innodb_plugin/include/buf0lru.ic
storage/innodb_plugin/include/buf0rea.h
storage/innodb_plugin/include/buf0types.h
storage/innodb_plugin/include/data0data.h
storage/innodb_plugin/include/data0data.ic
storage/innodb_plugin/include/data0type.h
storage/innodb_plugin/include/data0type.ic
storage/innodb_plugin/include/data0types.h
storage/innodb_plugin/include/db0err.h
storage/innodb_plugin/include/dict0boot.h
storage/innodb_plugin/include/dict0boot.ic
storage/innodb_plugin/include/dict0crea.h
storage/innodb_plugin/include/dict0crea.ic
storage/innodb_plugin/include/dict0dict.h
storage/innodb_plugin/include/dict0dict.ic
storage/innodb_plugin/include/dict0load.h
storage/innodb_plugin/include/dict0load.ic
storage/innodb_plugin/include/dict0mem.h
storage/innodb_plugin/include/dict0mem.ic
storage/innodb_plugin/include/dict0types.h
storage/innodb_plugin/include/dyn0dyn.h
storage/innodb_plugin/include/dyn0dyn.ic
storage/innodb_plugin/include/eval0eval.h
storage/innodb_plugin/include/eval0eval.ic
storage/innodb_plugin/include/eval0proc.h
storage/innodb_plugin/include/eval0proc.ic
storage/innodb_plugin/include/fil0fil.h
storage/innodb_plugin/include/fsp0fsp.h
storage/innodb_plugin/include/fsp0fsp.ic
storage/innodb_plugin/include/fsp0types.h
storage/innodb_plugin/include/fut0fut.h
storage/innodb_plugin/include/fut0fut.ic
storage/innodb_plugin/include/fut0lst.h
storage/innodb_plugin/include/fut0lst.ic
storage/innodb_plugin/include/ha0ha.h
storage/innodb_plugin/include/ha0ha.ic
storage/innodb_plugin/include/ha0storage.h
storage/innodb_plugin/include/ha0storage.ic
storage/innodb_plugin/include/ha_prototypes.h
storage/innodb_plugin/include/handler0alter.h
storage/innodb_plugin/include/hash0hash.h
storage/innodb_plugin/include/hash0hash.ic
storage/innodb_plugin/include/ibuf0ibuf.h
storage/innodb_plugin/include/ibuf0ibuf.ic
storage/innodb_plugin/include/ibuf0types.h
storage/innodb_plugin/include/lock0iter.h
storage/innodb_plugin/include/lock0lock.h
storage/innodb_plugin/include/lock0lock.ic
storage/innodb_plugin/include/lock0priv.h
storage/innodb_plugin/include/lock0priv.ic
storage/innodb_plugin/include/lock0types.h
storage/innodb_plugin/include/log0log.h
storage/innodb_plugin/include/log0log.ic
storage/innodb_plugin/include/log0recv.h
storage/innodb_plugin/include/log0recv.ic
storage/innodb_plugin/include/mach0data.h
storage/innodb_plugin/include/mach0data.ic
storage/innodb_plugin/include/mem0dbg.h
storage/innodb_plugin/include/mem0dbg.ic
storage/innodb_plugin/include/mem0mem.h
storage/innodb_plugin/include/mem0mem.ic
storage/innodb_plugin/include/mem0pool.h
storage/innodb_plugin/include/mem0pool.ic
storage/innodb_plugin/include/mtr0log.h
storage/innodb_plugin/include/mtr0log.ic
storage/innodb_plugin/include/mtr0mtr.h
storage/innodb_plugin/include/mtr0mtr.ic
storage/innodb_plugin/include/mtr0types.h
storage/innodb_plugin/include/mysql_addons.h
storage/innodb_plugin/include/os0file.h
storage/innodb_plugin/include/os0proc.h
storage/innodb_plugin/include/os0proc.ic
storage/innodb_plugin/include/os0sync.h
storage/innodb_plugin/include/os0sync.ic
storage/innodb_plugin/include/os0thread.h
storage/innodb_plugin/include/os0thread.ic
storage/innodb_plugin/include/page0cur.h
storage/innodb_plugin/include/page0cur.ic
storage/innodb_plugin/include/page0page.h
storage/innodb_plugin/include/page0page.ic
storage/innodb_plugin/include/page0types.h
storage/innodb_plugin/include/page0zip.h
storage/innodb_plugin/include/page0zip.ic
storage/innodb_plugin/include/pars0grm.h
storage/innodb_plugin/include/pars0opt.h
storage/innodb_plugin/include/pars0opt.ic
storage/innodb_plugin/include/pars0pars.h
storage/innodb_plugin/include/pars0pars.ic
storage/innodb_plugin/include/pars0sym.h
storage/innodb_plugin/include/pars0sym.ic
storage/innodb_plugin/include/pars0types.h
storage/innodb_plugin/include/que0que.h
storage/innodb_plugin/include/que0que.ic
storage/innodb_plugin/include/que0types.h
storage/innodb_plugin/include/read0read.h
storage/innodb_plugin/include/read0read.ic
storage/innodb_plugin/include/read0types.h
storage/innodb_plugin/include/rem0cmp.h
storage/innodb_plugin/include/rem0cmp.ic
storage/innodb_plugin/include/rem0rec.h
storage/innodb_plugin/include/rem0rec.ic
storage/innodb_plugin/include/rem0types.h
storage/innodb_plugin/include/row0ext.h
storage/innodb_plugin/include/row0ext.ic
storage/innodb_plugin/include/row0ins.h
storage/innodb_plugin/include/row0ins.ic
storage/innodb_plugin/include/row0merge.h
storage/innodb_plugin/include/row0mysql.h
storage/innodb_plugin/include/row0mysql.ic
storage/innodb_plugin/include/row0purge.h
storage/innodb_plugin/include/row0purge.ic
storage/innodb_plugin/include/row0row.h
storage/innodb_plugin/include/row0row.ic
storage/innodb_plugin/include/row0sel.h
storage/innodb_plugin/include/row0sel.ic
storage/innodb_plugin/include/row0types.h
storage/innodb_plugin/include/row0uins.h
storage/innodb_plugin/include/row0uins.ic
storage/innodb_plugin/include/row0umod.h
storage/innodb_plugin/include/row0umod.ic
storage/innodb_plugin/include/row0undo.h
storage/innodb_plugin/include/row0undo.ic
storage/innodb_plugin/include/row0upd.h
storage/innodb_plugin/include/row0upd.ic
storage/innodb_plugin/include/row0vers.h
storage/innodb_plugin/include/row0vers.ic
storage/innodb_plugin/include/srv0que.h
storage/innodb_plugin/include/srv0srv.h
storage/innodb_plugin/include/srv0srv.ic
storage/innodb_plugin/include/srv0start.h
storage/innodb_plugin/include/sync0arr.h
storage/innodb_plugin/include/sync0arr.ic
storage/innodb_plugin/include/sync0rw.h
storage/innodb_plugin/include/sync0rw.ic
storage/innodb_plugin/include/sync0sync.h
storage/innodb_plugin/include/sync0sync.ic
storage/innodb_plugin/include/sync0types.h
storage/innodb_plugin/include/thr0loc.h
storage/innodb_plugin/include/thr0loc.ic
storage/innodb_plugin/include/trx0i_s.h
storage/innodb_plugin/include/trx0purge.h
storage/innodb_plugin/include/trx0purge.ic
storage/innodb_plugin/include/trx0rec.h
storage/innodb_plugin/include/trx0rec.ic
storage/innodb_plugin/include/trx0roll.h
storage/innodb_plugin/include/trx0roll.ic
storage/innodb_plugin/include/trx0rseg.h
storage/innodb_plugin/include/trx0rseg.ic
storage/innodb_plugin/include/trx0sys.h
storage/innodb_plugin/include/trx0sys.ic
storage/innodb_plugin/include/trx0trx.h
storage/innodb_plugin/include/trx0trx.ic
storage/innodb_plugin/include/trx0types.h
storage/innodb_plugin/include/trx0undo.h
storage/innodb_plugin/include/trx0undo.ic
storage/innodb_plugin/include/trx0xa.h
storage/innodb_plugin/include/univ.i
storage/innodb_plugin/include/usr0sess.h
storage/innodb_plugin/include/usr0sess.ic
storage/innodb_plugin/include/usr0types.h
storage/innodb_plugin/include/ut0auxconf.h
storage/innodb_plugin/include/ut0byte.h
storage/innodb_plugin/include/ut0byte.ic
storage/innodb_plugin/include/ut0dbg.h
storage/innodb_plugin/include/ut0list.h
storage/innodb_plugin/include/ut0list.ic
storage/innodb_plugin/include/ut0lst.h
storage/innodb_plugin/include/ut0mem.h
storage/innodb_plugin/include/ut0mem.ic
storage/innodb_plugin/include/ut0rnd.h
storage/innodb_plugin/include/ut0rnd.ic
storage/innodb_plugin/include/ut0sort.h
storage/innodb_plugin/include/ut0ut.h
storage/innodb_plugin/include/ut0ut.ic
storage/innodb_plugin/include/ut0vec.h
storage/innodb_plugin/include/ut0vec.ic
storage/innodb_plugin/include/ut0wqueue.h
storage/innodb_plugin/lock/
storage/innodb_plugin/lock/lock0iter.c
storage/innodb_plugin/lock/lock0lock.c
storage/innodb_plugin/log/
storage/innodb_plugin/log/log0log.c
storage/innodb_plugin/log/log0recv.c
storage/innodb_plugin/mach/
storage/innodb_plugin/mach/mach0data.c
storage/innodb_plugin/mem/
storage/innodb_plugin/mem/mem0dbg.c
storage/innodb_plugin/mem/mem0mem.c
storage/innodb_plugin/mem/mem0pool.c
storage/innodb_plugin/mtr/
storage/innodb_plugin/mtr/mtr0log.c
storage/innodb_plugin/mtr/mtr0mtr.c
storage/innodb_plugin/mysql-test/
storage/innodb_plugin/mysql-test/ctype_innodb_like.inc
storage/innodb_plugin/mysql-test/have_innodb.inc
storage/innodb_plugin/mysql-test/innodb-analyze.result
storage/innodb_plugin/mysql-test/innodb-analyze.test
storage/innodb_plugin/mysql-test/innodb-autoinc.result
storage/innodb_plugin/mysql-test/innodb-autoinc.test
storage/innodb_plugin/mysql-test/innodb-index.inc
storage/innodb_plugin/mysql-test/innodb-index.result
storage/innodb_plugin/mysql-test/innodb-index.test
storage/innodb_plugin/mysql-test/innodb-index_ucs2.result
storage/innodb_plugin/mysql-test/innodb-index_ucs2.test
storage/innodb_plugin/mysql-test/innodb-lock.result
storage/innodb_plugin/mysql-test/innodb-lock.test
storage/innodb_plugin/mysql-test/innodb-master.opt
storage/innodb_plugin/mysql-test/innodb-replace.result
storage/innodb_plugin/mysql-test/innodb-replace.test
storage/innodb_plugin/mysql-test/innodb-semi-consistent-master.opt
storage/innodb_plugin/mysql-test/innodb-semi-consistent.result
storage/innodb_plugin/mysql-test/innodb-semi-consistent.test
storage/innodb_plugin/mysql-test/innodb-timeout.result
storage/innodb_plugin/mysql-test/innodb-timeout.test
storage/innodb_plugin/mysql-test/innodb-use-sys-malloc-master.opt
storage/innodb_plugin/mysql-test/innodb-use-sys-malloc.result
storage/innodb_plugin/mysql-test/innodb-use-sys-malloc.test
storage/innodb_plugin/mysql-test/innodb-zip.result
storage/innodb_plugin/mysql-test/innodb-zip.test
storage/innodb_plugin/mysql-test/innodb.result
storage/innodb_plugin/mysql-test/innodb.test
storage/innodb_plugin/mysql-test/innodb_bug21704.result
storage/innodb_plugin/mysql-test/innodb_bug21704.test
storage/innodb_plugin/mysql-test/innodb_bug34053.result
storage/innodb_plugin/mysql-test/innodb_bug34053.test
storage/innodb_plugin/mysql-test/innodb_bug34300.result
storage/innodb_plugin/mysql-test/innodb_bug34300.test
storage/innodb_plugin/mysql-test/innodb_bug35220.result
storage/innodb_plugin/mysql-test/innodb_bug35220.test
storage/innodb_plugin/mysql-test/innodb_bug36169.result
storage/innodb_plugin/mysql-test/innodb_bug36169.test
storage/innodb_plugin/mysql-test/innodb_bug36172.result
storage/innodb_plugin/mysql-test/innodb_bug36172.test
storage/innodb_plugin/mysql-test/innodb_bug40360.result
storage/innodb_plugin/mysql-test/innodb_bug40360.test
storage/innodb_plugin/mysql-test/innodb_bug40565.result
storage/innodb_plugin/mysql-test/innodb_bug40565.test
storage/innodb_plugin/mysql-test/innodb_bug41904.result
storage/innodb_plugin/mysql-test/innodb_bug41904.test
storage/innodb_plugin/mysql-test/innodb_bug42101-nonzero-master.opt
storage/innodb_plugin/mysql-test/innodb_bug42101-nonzero.result
storage/innodb_plugin/mysql-test/innodb_bug42101-nonzero.test
storage/innodb_plugin/mysql-test/innodb_bug42101.result
storage/innodb_plugin/mysql-test/innodb_bug42101.test
storage/innodb_plugin/mysql-test/innodb_bug44032.result
storage/innodb_plugin/mysql-test/innodb_bug44032.test
storage/innodb_plugin/mysql-test/innodb_bug45357.result
storage/innodb_plugin/mysql-test/innodb_bug45357.test
storage/innodb_plugin/mysql-test/innodb_file_format.result
storage/innodb_plugin/mysql-test/innodb_file_format.test
storage/innodb_plugin/mysql-test/innodb_information_schema.result
storage/innodb_plugin/mysql-test/innodb_information_schema.test
storage/innodb_plugin/mysql-test/innodb_trx_weight.inc
storage/innodb_plugin/mysql-test/innodb_trx_weight.result
storage/innodb_plugin/mysql-test/innodb_trx_weight.test
storage/innodb_plugin/mysql-test/patches/
storage/innodb_plugin/mysql-test/patches/README
storage/innodb_plugin/mysql-test/patches/index_merge_innodb-explain.diff
storage/innodb_plugin/mysql-test/patches/information_schema.diff
storage/innodb_plugin/mysql-test/patches/innodb-index.diff
storage/innodb_plugin/mysql-test/patches/innodb_file_per_table.diff
storage/innodb_plugin/mysql-test/patches/innodb_lock_wait_timeout.diff
storage/innodb_plugin/mysql-test/patches/innodb_thread_concurrency_basic.diff
storage/innodb_plugin/mysql-test/patches/partition_innodb.diff
storage/innodb_plugin/os/
storage/innodb_plugin/os/os0file.c
storage/innodb_plugin/os/os0proc.c
storage/innodb_plugin/os/os0sync.c
storage/innodb_plugin/os/os0thread.c
storage/innodb_plugin/page/
storage/innodb_plugin/page/page0cur.c
storage/innodb_plugin/page/page0page.c
storage/innodb_plugin/page/page0zip.c
storage/innodb_plugin/pars/
storage/innodb_plugin/pars/lexyy.c
storage/innodb_plugin/pars/make_bison.sh
storage/innodb_plugin/pars/make_flex.sh
storage/innodb_plugin/pars/pars0grm.c
storage/innodb_plugin/pars/pars0grm.y
storage/innodb_plugin/pars/pars0lex.l
storage/innodb_plugin/pars/pars0opt.c
storage/innodb_plugin/pars/pars0pars.c
storage/innodb_plugin/pars/pars0sym.c
storage/innodb_plugin/plug.in
storage/innodb_plugin/que/
storage/innodb_plugin/que/que0que.c
storage/innodb_plugin/read/
storage/innodb_plugin/read/read0read.c
storage/innodb_plugin/rem/
storage/innodb_plugin/rem/rem0cmp.c
storage/innodb_plugin/rem/rem0rec.c
storage/innodb_plugin/row/
storage/innodb_plugin/row/row0ext.c
storage/innodb_plugin/row/row0ins.c
storage/innodb_plugin/row/row0merge.c
storage/innodb_plugin/row/row0mysql.c
storage/innodb_plugin/row/row0purge.c
storage/innodb_plugin/row/row0row.c
storage/innodb_plugin/row/row0sel.c
storage/innodb_plugin/row/row0uins.c
storage/innodb_plugin/row/row0umod.c
storage/innodb_plugin/row/row0undo.c
storage/innodb_plugin/row/row0upd.c
storage/innodb_plugin/row/row0vers.c
storage/innodb_plugin/scripts/
storage/innodb_plugin/scripts/install_innodb_plugins.sql
storage/innodb_plugin/scripts/install_innodb_plugins_win.sql
storage/innodb_plugin/setup.sh
storage/innodb_plugin/srv/
storage/innodb_plugin/srv/srv0que.c
storage/innodb_plugin/srv/srv0srv.c
storage/innodb_plugin/srv/srv0start.c
storage/innodb_plugin/sync/
storage/innodb_plugin/sync/sync0arr.c
storage/innodb_plugin/sync/sync0rw.c
storage/innodb_plugin/sync/sync0sync.c
storage/innodb_plugin/thr/
storage/innodb_plugin/thr/thr0loc.c
storage/innodb_plugin/trx/
storage/innodb_plugin/trx/trx0i_s.c
storage/innodb_plugin/trx/trx0purge.c
storage/innodb_plugin/trx/trx0rec.c
storage/innodb_plugin/trx/trx0roll.c
storage/innodb_plugin/trx/trx0rseg.c
storage/innodb_plugin/trx/trx0sys.c
storage/innodb_plugin/trx/trx0trx.c
storage/innodb_plugin/trx/trx0undo.c
storage/innodb_plugin/usr/
storage/innodb_plugin/usr/usr0sess.c
storage/innodb_plugin/ut/
storage/innodb_plugin/ut/ut0auxconf_atomic_pthread_t_gcc.c
storage/innodb_plugin/ut/ut0auxconf_atomic_pthread_t_solaris.c
storage/innodb_plugin/ut/ut0auxconf_have_solaris_atomics.c
storage/innodb_plugin/ut/ut0auxconf_pause.c
storage/innodb_plugin/ut/ut0auxconf_sizeof_pthread_t.c
storage/innodb_plugin/ut/ut0byte.c
storage/innodb_plugin/ut/ut0dbg.c
storage/innodb_plugin/ut/ut0list.c
storage/innodb_plugin/ut/ut0mem.c
storage/innodb_plugin/ut/ut0rnd.c
storage/innodb_plugin/ut/ut0ut.c
storage/innodb_plugin/ut/ut0vec.c
storage/innodb_plugin/ut/ut0wqueue.c
storage/innodb_plugin/win-plugin/
storage/innodb_plugin/win-plugin/README
storage/innodb_plugin/win-plugin/win-plugin.diff
storage/mysql_storage_engine.cmake
win/create_def_file.js
modified:
BUILD/SETUP.sh
BUILD/check-cpu
CMakeLists.txt
Docs/INSTALL-BINARY
INSTALL-SOURCE
INSTALL-WIN-SOURCE
README
client/Makefile.am
client/mysql.cc
client/mysql_upgrade.c
client/mysqladmin.cc
client/mysqlbinlog.cc
client/mysqlcheck.c
client/mysqldump.c
client/mysqlimport.c
client/mysqlshow.c
client/mysqlslap.c
client/mysqltest.cc
cmd-line-utils/libedit/readline/readline.h
cmd-line-utils/libedit/term.c
cmd-line-utils/readline/Makefile.am
cmd-line-utils/readline/bind.c
cmd-line-utils/readline/complete.c
cmd-line-utils/readline/display.c
cmd-line-utils/readline/histexpand.c
cmd-line-utils/readline/histfile.c
cmd-line-utils/readline/history.h
cmd-line-utils/readline/input.c
cmd-line-utils/readline/isearch.c
cmd-line-utils/readline/kill.c
cmd-line-utils/readline/macro.c
cmd-line-utils/readline/mbutil.c
cmd-line-utils/readline/misc.c
cmd-line-utils/readline/nls.c
cmd-line-utils/readline/readline.h
cmd-line-utils/readline/rlprivate.h
cmd-line-utils/readline/rltty.c
cmd-line-utils/readline/search.c
cmd-line-utils/readline/terminal.c
cmd-line-utils/readline/text.c
cmd-line-utils/readline/tilde.c
cmd-line-utils/readline/undo.c
cmd-line-utils/readline/util.c
cmd-line-utils/readline/vi_mode.c
config/ac-macros/misc.m4
config/ac-macros/readline.m4
configure.in
dbug/user.r
extra/innochecksum.c
extra/perror.c
extra/yassl/src/handshake.cpp
extra/yassl/taocrypt/include/modes.hpp
extra/yassl/taocrypt/src/asn.cpp
include/config-netware.h
include/config-win.h
include/hash.h
include/m_ctype.h
include/my_base.h
include/my_global.h
include/my_sys.h
include/myisamchk.h
include/myisammrg.h
include/mysql/plugin.h
include/thr_lock.h
include/violite.h
libmysql/CMakeLists.txt
libmysql/Makefile.am
libmysql/Makefile.shared
libmysqld/CMakeLists.txt
libmysqld/Makefile.am
libmysqld/emb_qcache.h
libmysqld/lib_sql.cc
man/Makefile.am
man/comp_err.1
man/innochecksum.1
man/make_win_bin_dist.1
man/msql2mysql.1
man/my_print_defaults.1
man/myisam_ftdump.1
man/myisamchk.1
man/myisamlog.1
man/myisampack.1
man/mysql-stress-test.pl.1
man/mysql-test-run.pl.1
man/mysql.1
man/mysql.server.1
man/mysql_client_test.1
man/mysql_config.1
man/mysql_convert_table_format.1
man/mysql_find_rows.1
man/mysql_fix_extensions.1
man/mysql_fix_privilege_tables.1
man/mysql_install_db.1
man/mysql_secure_installation.1
man/mysql_setpermission.1
man/mysql_tzinfo_to_sql.1
man/mysql_upgrade.1
man/mysql_waitpid.1
man/mysql_zap.1
man/mysqlaccess.1
man/mysqladmin.1
man/mysqlbinlog.1
man/mysqlbug.1
man/mysqlcheck.1
man/mysqld.8
man/mysqld_multi.1
man/mysqld_safe.1
man/mysqldump.1
man/mysqldumpslow.1
man/mysqlhotcopy.1
man/mysqlimport.1
man/mysqlmanager.8
man/mysqlshow.1
man/mysqlslap.1
man/mysqltest.1
man/ndbd.8
man/ndbd_redo_log_reader.1
man/ndbmtd.8
man/perror.1
man/replace.1
man/resolve_stack_dump.1
man/resolveip.1
mysql-test/Makefile.am
mysql-test/collections/default.daily
mysql-test/collections/default.experimental
mysql-test/collections/default.push
mysql-test/extra/binlog_tests/binlog.test
mysql-test/extra/rpl_tests/rpl_deadlock.test
mysql-test/extra/rpl_tests/rpl_reset_slave.test
mysql-test/include/commit.inc
mysql-test/include/concurrent.inc
mysql-test/include/grant_cache.inc
mysql-test/include/handler.inc
mysql-test/include/index_merge1.inc
mysql-test/include/mix1.inc
mysql-test/include/mtr_check.sql
mysql-test/include/mtr_warnings.sql
mysql-test/include/query_cache.inc
mysql-test/lib/My/CoreDump.pm
mysql-test/lib/My/File/Path.pm
mysql-test/lib/My/SafeProcess.pm
mysql-test/lib/My/SafeProcess/Base.pm
mysql-test/lib/My/SafeProcess/Makefile.am
mysql-test/lib/My/SafeProcess/safe_process.cc
mysql-test/lib/My/SafeProcess/safe_process_win.cc
mysql-test/lib/mtr_cases.pm
mysql-test/lib/mtr_process.pl
mysql-test/lib/mtr_report.pm
mysql-test/lib/mtr_unique.pm
mysql-test/mysql-test-run.pl
mysql-test/r/cast.result
mysql-test/r/commit_1innodb.result
mysql-test/r/concurrent_innodb_safelog.result
mysql-test/r/concurrent_innodb_unsafelog.result
mysql-test/r/consistent_snapshot.result
mysql-test/r/count_distinct3.result
mysql-test/r/create.result
mysql-test/r/ctype_cp932_binlog_row.result
mysql-test/r/ctype_cp932_binlog_stm.result
mysql-test/r/ctype_euckr.result
mysql-test/r/ctype_ldml.result
mysql-test/r/ctype_recoding.result
mysql-test/r/ctype_sjis.result
mysql-test/r/ddl_i18n_koi8r.result
mysql-test/r/ddl_i18n_utf8.result
mysql-test/r/derived.result
mysql-test/r/distinct.result
mysql-test/r/fulltext.result
mysql-test/r/func_compress.result
mysql-test/r/func_concat.result
mysql-test/r/func_crypt.result
mysql-test/r/func_des_encrypt.result
mysql-test/r/func_encrypt.result
mysql-test/r/func_in.result
mysql-test/r/func_math.result
mysql-test/r/func_misc.result
mysql-test/r/func_set.result
mysql-test/r/func_str.result
mysql-test/r/gis-rtree.result
mysql-test/r/gis.result
mysql-test/r/grant.result
mysql-test/r/grant_cache_no_prot.result
mysql-test/r/grant_cache_ps_prot.result
mysql-test/r/group_min_max.result
mysql-test/r/handler_innodb.result
mysql-test/r/handler_myisam.result
mysql-test/r/heap_btree.result
mysql-test/r/index_merge_myisam.result
mysql-test/r/information_schema.result
mysql-test/r/information_schema_db.result
mysql-test/r/init_file.result
mysql-test/r/innodb-semi-consistent.result
mysql-test/r/innodb.result
mysql-test/r/innodb_mysql.result
mysql-test/r/insert.result
mysql-test/r/insert_select.result
mysql-test/r/lock_multi.result
mysql-test/r/merge.result
mysql-test/r/myisam.result
mysql-test/r/myisampack.result
mysql-test/r/mysql.result
mysql-test/r/mysqlbinlog.result
mysql-test/r/mysqlbinlog_row_big.result
mysql-test/r/mysqlcheck.result
mysql-test/r/mysqldump.result
mysql-test/r/mysqltest.result
mysql-test/r/not_embedded_server.result
mysql-test/r/openssl_1.result
mysql-test/r/order_by.result
mysql-test/r/outfile_loaddata.result
mysql-test/r/parser.result
mysql-test/r/partition.result
mysql-test/r/partition_csv.result
mysql-test/r/partition_mgm.result
mysql-test/r/ps_1general.result
mysql-test/r/query_cache_debug.result
mysql-test/r/repair.result
mysql-test/r/select.result
mysql-test/r/shm.result
mysql-test/r/sp-error.result
mysql-test/r/sp.result
mysql-test/r/sp_notembedded.result
mysql-test/r/sql_mode.result
mysql-test/r/status.result
mysql-test/r/subselect.result
mysql-test/r/subselect3.result
mysql-test/r/table_elim.result
mysql-test/r/trigger.result
mysql-test/r/trigger_notembedded.result
mysql-test/r/type_newdecimal.result
mysql-test/r/type_time.result
mysql-test/r/union.result
mysql-test/r/upgrade.result
mysql-test/r/user_var.result
mysql-test/r/varbinary.result
mysql-test/r/variables-notembedded.result
mysql-test/r/variables.result
mysql-test/r/view.result
mysql-test/r/xa.result
mysql-test/r/xml.result
mysql-test/std_data/init_file.dat
mysql-test/suite/binlog/r/binlog_database.result
mysql-test/suite/binlog/r/binlog_innodb.result
mysql-test/suite/binlog/r/binlog_innodb_row.result
mysql-test/suite/binlog/r/binlog_multi_engine.result
mysql-test/suite/binlog/r/binlog_row_binlog.result
mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result
mysql-test/suite/binlog/r/binlog_row_insert_select.result
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
mysql-test/suite/binlog/r/binlog_stm_binlog.result
mysql-test/suite/binlog/r/binlog_stm_blackhole.result
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result
mysql-test/suite/binlog/r/binlog_stm_ps.result
mysql-test/suite/binlog/r/binlog_stm_row.result
mysql-test/suite/binlog/r/binlog_unsafe.result
mysql-test/suite/binlog/t/binlog_unsafe.test
mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc
mysql-test/suite/funcs_1/datadict/is_routines.inc
mysql-test/suite/funcs_1/datadict/is_schemata.inc
mysql-test/suite/funcs_1/datadict/is_tables.inc
mysql-test/suite/funcs_1/datadict/is_triggers.inc
mysql-test/suite/funcs_1/datadict/is_views.inc
mysql-test/suite/funcs_1/datadict/processlist_priv.inc
mysql-test/suite/funcs_1/datadict/statistics.inc
mysql-test/suite/funcs_1/datadict/table_constraints.inc
mysql-test/suite/funcs_1/datadict/tables.inc
mysql-test/suite/funcs_1/datadict/tables1.inc
mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result
mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
mysql-test/suite/funcs_1/r/is_routines.result
mysql-test/suite/funcs_1/r/storedproc.result
mysql-test/suite/funcs_1/storedproc/storedproc_06.inc
mysql-test/suite/funcs_1/storedproc/storedproc_10.inc
mysql-test/suite/funcs_1/t/disabled.def
mysql-test/suite/funcs_1/t/is_basics_mixed.test
mysql-test/suite/funcs_1/t/is_column_privileges.test
mysql-test/suite/funcs_1/t/is_column_privileges_is_mysql_test.test
mysql-test/suite/funcs_1/t/is_columns.test
mysql-test/suite/funcs_1/t/is_schema_privileges.test
mysql-test/suite/funcs_1/t/is_schema_privileges_is_mysql_test.test
mysql-test/suite/funcs_1/t/is_schemata_is_mysql_test.test
mysql-test/suite/funcs_1/t/is_statistics.test
mysql-test/suite/funcs_1/t/is_table_constraints.test
mysql-test/suite/funcs_1/t/is_table_privileges.test
mysql-test/suite/funcs_1/t/is_user_privileges.test
mysql-test/suite/funcs_1/t/myisam_views.test
mysql-test/suite/funcs_1/t/storedproc.test
mysql-test/suite/funcs_1/triggers/triggers_03.inc
mysql-test/suite/funcs_1/triggers/triggers_03e_columns.inc
mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc
mysql-test/suite/funcs_1/triggers/triggers_03e_db_table_mix.inc
mysql-test/suite/funcs_1/triggers/triggers_03e_definer.inc
mysql-test/suite/funcs_1/triggers/triggers_03e_global_db_mix.inc
mysql-test/suite/funcs_1/triggers/triggers_03e_prepare.inc
mysql-test/suite/funcs_1/triggers/triggers_03e_table_level.inc
mysql-test/suite/funcs_1/triggers/triggers_03e_transaction.inc
mysql-test/suite/funcs_1/triggers/triggers_0407.inc
mysql-test/suite/funcs_1/triggers/triggers_08.inc
mysql-test/suite/funcs_2/charset/charset_master.test
mysql-test/suite/maria/r/maria3.result
mysql-test/suite/ndb/my.cnf
mysql-test/suite/ndb/r/ndb_binlog_format.result
mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result
mysql-test/suite/parts/r/partition_auto_increment_memory.result
mysql-test/suite/parts/r/partition_auto_increment_myisam.result
mysql-test/suite/parts/r/partition_syntax_innodb.result
mysql-test/suite/parts/r/partition_syntax_myisam.result
mysql-test/suite/rpl/include/rpl_mixed_ddl.inc
mysql-test/suite/rpl/r/rpl_binlog_grant.result
mysql-test/suite/rpl/r/rpl_bug33931.result
mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
mysql-test/suite/rpl/r/rpl_idempotency.result
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result
mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result
mysql-test/suite/rpl/r/rpl_row_create_table.result
mysql-test/suite/rpl/r/rpl_row_log.result
mysql-test/suite/rpl/r/rpl_row_log_innodb.result
mysql-test/suite/rpl/r/rpl_row_reset_slave.result
mysql-test/suite/rpl/r/rpl_sf.result
mysql-test/suite/rpl/r/rpl_skip_error.result
mysql-test/suite/rpl/r/rpl_slave_load_tmpdir_not_exist.result
mysql-test/suite/rpl/r/rpl_slave_skip.result
mysql-test/suite/rpl/r/rpl_start_stop_slave.result
mysql-test/suite/rpl/r/rpl_stm_loadfile.result
mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result
mysql-test/suite/rpl/r/rpl_temporary.result
mysql-test/suite/rpl/r/rpl_udf.result
mysql-test/suite/rpl/t/disabled.def
mysql-test/suite/rpl/t/rpl_binlog_corruption.test
mysql-test/suite/rpl/t/rpl_bug33931.test
mysql-test/suite/rpl/t/rpl_do_grant.test
mysql-test/suite/rpl/t/rpl_idempotency.test
mysql-test/suite/rpl/t/rpl_incident.test
mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test
mysql-test/suite/rpl/t/rpl_sf.test
mysql-test/suite/rpl/t/rpl_skip_error.test
mysql-test/suite/rpl/t/rpl_slave_load_tmpdir_not_exist.test
mysql-test/suite/rpl/t/rpl_sp.test
mysql-test/suite/rpl/t/rpl_start_stop_slave.test
mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test
mysql-test/suite/rpl/t/rpl_temporary.test
mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result
mysql-test/suite/rpl_ndb/t/disabled.def
mysql-test/suite/rpl_ndb/t/rpl_ndb_2other-slave.opt
mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result
mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result
mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result
mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result
mysql-test/suite/sys_vars/r/innodb_data_home_dir_basic.result
mysql-test/suite/sys_vars/r/innodb_flush_method_basic.result
mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result
mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result
mysql-test/suite/sys_vars/r/log_warnings_basic_64.result
mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result
mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result
mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result
mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result
mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result
mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result
mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result
mysql-test/suite/sys_vars/r/multi_range_count_basic_64.result
mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result
mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result
mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result
mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result
mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result
mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result
mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result
mysql-test/suite/sys_vars/r/query_cache_size_basic_64.result
mysql-test/suite/sys_vars/r/query_prealloc_size_basic_64.result
mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result
mysql-test/suite/sys_vars/r/rpl_init_slave_func.result
mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result
mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result
mysql-test/suite/sys_vars/r/ssl_capath_basic.result
mysql-test/suite/sys_vars/r/ssl_cipher_basic.result
mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result
mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result
mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_64.result
mysql-test/suite/sys_vars/r/wait_timeout_basic_64.result
mysql-test/suite/sys_vars/t/innodb_data_home_dir_basic.test
mysql-test/suite/sys_vars/t/innodb_flush_method_basic.test
mysql-test/suite/sys_vars/t/ssl_capath_basic.test
mysql-test/suite/sys_vars/t/ssl_cipher_basic.test
mysql-test/t/archive_bitfield.test
mysql-test/t/cast.test
mysql-test/t/client_xml.test
mysql-test/t/connect.test
mysql-test/t/consistent_snapshot.test
mysql-test/t/count_distinct3.test
mysql-test/t/create.test
mysql-test/t/csv.test
mysql-test/t/ctype_cp932_binlog_stm.test
mysql-test/t/ctype_euckr.test
mysql-test/t/ctype_ldml.test
mysql-test/t/ctype_sjis.test
mysql-test/t/ddl_i18n_koi8r.test
mysql-test/t/ddl_i18n_utf8.test
mysql-test/t/derived.test
mysql-test/t/disabled.def
mysql-test/t/drop.test
mysql-test/t/events_grant.test
mysql-test/t/events_stress.test
mysql-test/t/events_trans_notembedded.test
mysql-test/t/fix_priv_tables.test
mysql-test/t/flush.test
mysql-test/t/fulltext.test
mysql-test/t/func_compress.test
mysql-test/t/func_concat.test
mysql-test/t/func_crypt.test
mysql-test/t/func_des_encrypt.test
mysql-test/t/func_encrypt.test
mysql-test/t/func_in.test
mysql-test/t/func_math.test
mysql-test/t/func_misc.test
mysql-test/t/func_set.test
mysql-test/t/func_str.test
mysql-test/t/gis-rtree.test
mysql-test/t/gis.test
mysql-test/t/grant.test
mysql-test/t/group_min_max.test
mysql-test/t/heap_btree.test
mysql-test/t/information_schema.test
mysql-test/t/information_schema_db.test
mysql-test/t/init_file.test
mysql-test/t/innodb-semi-consistent.test
mysql-test/t/innodb-use-sys-malloc.test
mysql-test/t/innodb.test
mysql-test/t/innodb_mysql.test
mysql-test/t/innodb_notembedded.test
mysql-test/t/innodb_xtradb_bug317074.test
mysql-test/t/insert.test
mysql-test/t/insert_select.test
mysql-test/t/lock_multi.test
mysql-test/t/lowercase_fs_off.test
mysql-test/t/merge.test
mysql-test/t/multi_update2.test
mysql-test/t/myisam.test
mysql-test/t/myisampack.test
mysql-test/t/mysql.test
mysql-test/t/mysql_upgrade.test
mysql-test/t/mysqlbinlog.test
mysql-test/t/mysqlbinlog_row_big.test
mysql-test/t/mysqlcheck.test
mysql-test/t/mysqldump.test
mysql-test/t/mysqltest.test
mysql-test/t/not_embedded_server.test
mysql-test/t/openssl_1.test
mysql-test/t/order_by.test
mysql-test/t/outfile_loaddata.test
mysql-test/t/parser.test
mysql-test/t/partition.test
mysql-test/t/partition_csv.test
mysql-test/t/partition_mgm.test
mysql-test/t/plugin.test
mysql-test/t/plugin_load-master.opt
mysql-test/t/ps_1general.test
mysql-test/t/query_cache_debug.test
mysql-test/t/select.test
mysql-test/t/shm.test
mysql-test/t/sp-error.test
mysql-test/t/sp.test
mysql-test/t/sp_notembedded.test
mysql-test/t/sp_trans_log.test
mysql-test/t/sql_mode.test
mysql-test/t/status.test
mysql-test/t/subselect.test
mysql-test/t/subselect3.test
mysql-test/t/table_elim.test
mysql-test/t/trigger.test
mysql-test/t/trigger_notembedded.test
mysql-test/t/type_newdecimal.test
mysql-test/t/type_time.test
mysql-test/t/union.test
mysql-test/t/upgrade.test
mysql-test/t/user_var.test
mysql-test/t/variables-big.test
mysql-test/t/variables-notembedded-master.opt
mysql-test/t/variables.test
mysql-test/t/view.test
mysql-test/t/xa.test
mysql-test/t/xml.test
mysql-test/valgrind.supp
mysys/Makefile.am
mysys/array.c
mysys/charset.c
mysys/hash.c
mysys/mf_format.c
mysys/mf_getdate.c
mysys/mf_iocache2.c
mysys/mf_keycache.c
mysys/my_getopt.c
mysys/my_handler_errors.h
mysys/my_init.c
scripts/fill_help_tables.sql
scripts/make_binary_distribution.sh
scripts/make_win_bin_dist
scripts/mysql_convert_table_format.sh
scripts/mysql_find_rows.sh
scripts/mysql_fix_extensions.sh
scripts/mysql_setpermission.sh
scripts/mysql_zap.sh
scripts/mysqlaccess.sh
scripts/mysqld_multi.sh
scripts/mysqld_safe.sh
scripts/mysqldumpslow.sh
scripts/mysqlhotcopy.sh
sql-bench/README*
sql-bench/as3ap.sh
sql-bench/bench-count-distinct.sh
sql-bench/bench-init.pl.sh
sql-bench/compare-results.sh
sql-bench/copy-db.sh
sql-bench/crash-me.sh
sql-bench/innotest1.sh
sql-bench/innotest1a.sh
sql-bench/innotest1b.sh
sql-bench/innotest2.sh
sql-bench/innotest2a.sh
sql-bench/innotest2b.sh
sql-bench/run-all-tests.sh
sql-bench/server-cfg.sh
sql-bench/test-ATIS.sh
sql-bench/test-alter-table.sh
sql-bench/test-big-tables.sh
sql-bench/test-connect.sh
sql-bench/test-create.sh
sql-bench/test-insert.sh
sql-bench/test-select.sh
sql-bench/test-transactions.sh
sql-bench/test-wisconsin.sh
sql-common/client.c
sql/CMakeLists.txt
sql/Makefile.am
sql/event_data_objects.cc
sql/event_scheduler.cc
sql/events.cc
sql/field.cc
sql/ha_ndbcluster.cc
sql/ha_ndbcluster_binlog.cc
sql/ha_partition.cc
sql/handler.cc
sql/handler.h
sql/item.cc
sql/item.h
sql/item_func.cc
sql/item_func.h
sql/item_geofunc.cc
sql/item_strfunc.cc
sql/item_strfunc.h
sql/item_subselect.cc
sql/item_sum.cc
sql/item_xmlfunc.cc
sql/lex.h
sql/log.cc
sql/log.h
sql/log_event.cc
sql/log_event.h
sql/my_decimal.h
sql/mysql_priv.h
sql/mysqld.cc
sql/net_serv.cc
sql/opt_range.cc
sql/opt_table_elimination.cc
sql/parse_file.cc
sql/parse_file.h
sql/password.c
sql/protocol.cc
sql/protocol.h
sql/rpl_filter.cc
sql/rpl_reporting.cc
sql/rpl_reporting.h
sql/rpl_rli.cc
sql/scheduler.cc
sql/set_var.cc
sql/share/errmsg.txt
sql/slave.cc
sql/slave.h
sql/sp.cc
sql/sp.h
sql/sp_head.cc
sql/sp_head.h
sql/sp_pcontext.cc
sql/sp_pcontext.h
sql/spatial.h
sql/sql_acl.cc
sql/sql_acl.h
sql/sql_base.cc
sql/sql_cache.cc
sql/sql_cache.h
sql/sql_class.cc
sql/sql_class.h
sql/sql_connect.cc
sql/sql_crypt.cc
sql/sql_crypt.h
sql/sql_db.cc
sql/sql_delete.cc
sql/sql_derived.cc
sql/sql_handler.cc
sql/sql_insert.cc
sql/sql_lex.cc
sql/sql_lex.h
sql/sql_list.h
sql/sql_load.cc
sql/sql_parse.cc
sql/sql_partition.cc
sql/sql_plugin.cc
sql/sql_plugin.h
sql/sql_prepare.cc
sql/sql_rename.cc
sql/sql_repl.cc
sql/sql_select.cc
sql/sql_show.cc
sql/sql_string.cc
sql/sql_string.h
sql/sql_table.cc
sql/sql_test.cc
sql/sql_union.cc
sql/sql_update.cc
sql/sql_view.cc
sql/sql_view.h
sql/sql_yacc.yy
sql/structs.h
sql/table.cc
sql/table.h
sql/thr_malloc.cc
sql/unireg.cc
sql/unireg.h
storage/Makefile.am
storage/archive/CMakeLists.txt
storage/archive/ha_archive.cc
storage/blackhole/CMakeLists.txt
storage/csv/CMakeLists.txt
storage/example/CMakeLists.txt
storage/federated/CMakeLists.txt
storage/federated/ha_federated.cc
storage/heap/CMakeLists.txt
storage/heap/ha_heap.cc
storage/heap/ha_heap.h
storage/ibmdb2i/db2i_charsetSupport.cc
storage/ibmdb2i/db2i_collationSupport.cc
storage/ibmdb2i/db2i_conversion.cc
storage/ibmdb2i/db2i_errors.cc
storage/ibmdb2i/db2i_errors.h
storage/ibmdb2i/db2i_misc.h
storage/ibmdb2i/db2i_myconv.h
storage/ibmdb2i/db2i_rir.cc
storage/ibmdb2i/ha_ibmdb2i.cc
storage/ibmdb2i/ha_ibmdb2i.h
storage/innobase/CMakeLists.txt
storage/innobase/Makefile.am
storage/innobase/btr/btr0cur.c
storage/innobase/dict/dict0dict.c
storage/innobase/fil/fil0fil.c
storage/innobase/handler/ha_innodb.cc
storage/innobase/ibuf/ibuf0ibuf.c
storage/innobase/include/fsp0fsp.h
storage/innobase/include/mtr0log.ic
storage/innobase/include/row0mysql.h
storage/innobase/include/srv0srv.h
storage/innobase/include/trx0rseg.ic
storage/innobase/include/trx0sys.h
storage/innobase/include/trx0sys.ic
storage/innobase/include/trx0trx.h
storage/innobase/include/trx0trx.ic
storage/innobase/lock/lock0lock.c
storage/innobase/page/page0cur.c
storage/innobase/row/row0mysql.c
storage/innobase/row/row0sel.c
storage/innobase/srv/srv0srv.c
storage/innobase/trx/trx0purge.c
storage/innobase/trx/trx0rec.c
storage/innobase/trx/trx0sys.c
storage/innobase/trx/trx0trx.c
storage/innobase/trx/trx0undo.c
storage/maria/CMakeLists.txt
storage/maria/ha_maria.cc
storage/myisam/CMakeLists.txt*
storage/myisam/ft_boolean_search.c
storage/myisam/ha_myisam.cc
storage/myisam/ha_myisam.h
storage/myisam/mi_close.c
storage/myisam/mi_delete.c
storage/myisam/mi_dynrec.c
storage/myisam/mi_open.c
storage/myisam/mi_packrec.c
storage/myisam/mi_write.c
storage/myisam/myisamchk.c
storage/myisammrg/CMakeLists.txt
storage/myisammrg/ha_myisammrg.cc
storage/myisammrg/ha_myisammrg.h
storage/myisammrg/myrg_info.c
storage/myisammrg/myrg_open.c
storage/ndb/src/kernel/blocks/backup/read.cpp
storage/ndb/src/mgmsrv/Makefile.am
storage/ndb/test/run-test/Makefile.am
storage/ndb/tools/restore/consumer_restore.cpp
storage/ndb/tools/restore/consumer_restorem.cpp
storage/xtradb/CMakeLists.txt
storage/xtradb/btr/btr0cur.c
storage/xtradb/buf/buf0flu.c
storage/xtradb/handler/ha_innodb.cc
storage/xtradb/handler/handler0vars.h
storage/xtradb/handler/i_s.cc
storage/xtradb/include/row0mysql.h
storage/xtradb/include/srv0srv.h
storage/xtradb/include/trx0trx.h
storage/xtradb/include/trx0trx.ic
storage/xtradb/lock/lock0lock.c
storage/xtradb/plug.in
storage/xtradb/row/row0mysql.c
storage/xtradb/row/row0sel.c
storage/xtradb/srv/srv0srv.c
storage/xtradb/srv/srv0start.c
storage/xtradb/trx/trx0trx.c
strings/ctype-cp932.c
strings/ctype-euc_kr.c
strings/ctype-sjis.c
strings/ctype-uca.c
strings/decimal.c
support-files/build-tags
support-files/my-huge.cnf.sh
support-files/my-innodb-heavy-4G.cnf.sh
support-files/my-large.cnf.sh
support-files/my-medium.cnf.sh
support-files/my-small.cnf.sh
support-files/mysql.server.sh
support-files/mysql.spec.sh
tests/Makefile.am
tests/grant.pl*
tests/mysql_client_test.c
vio/viosocket.c
vio/viosslfactories.c
win/Makefile.am
win/configure.js
The size of the diff (353877 lines) is larger than your specified limit of 5000 lines
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2755)
by Igor Babaev 25 Sep '09
by Igor Babaev 25 Sep '09
25 Sep '09
#At lp:maria based on revid:igor@askmonty.org-20090925064243-2kf7ah4m6u25ex58
2755 Igor Babaev 2009-09-24 [merge]
Merge
modified:
mysql-test/r/create.result
mysql-test/r/information_schema.result
mysql-test/t/information_schema.test
mysql-test/t/not_embedded_server.test
sql/sql_show.cc
=== modified file 'mysql-test/r/create.result'
--- a/mysql-test/r/create.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/create.result 2009-09-23 11:03:47 +0000
@@ -1749,7 +1749,8 @@ t1 CREATE TABLE `t1` (
`COMMAND` varchar(16) NOT NULL DEFAULT '',
`TIME` int(7) NOT NULL DEFAULT '0',
`STATE` varchar(64) DEFAULT NULL,
- `INFO` longtext
+ `INFO` longtext,
+ `TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000'
) DEFAULT CHARSET=utf8
drop table t1;
create temporary table t1 like information_schema.processlist;
@@ -1763,7 +1764,8 @@ t1 CREATE TEMPORARY TABLE `t1` (
`COMMAND` varchar(16) NOT NULL DEFAULT '',
`TIME` int(7) NOT NULL DEFAULT '0',
`STATE` varchar(64) DEFAULT NULL,
- `INFO` longtext
+ `INFO` longtext,
+ `TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000'
) DEFAULT CHARSET=utf8
drop table t1;
create table t1 like information_schema.character_sets;
=== modified file 'mysql-test/r/information_schema.result'
--- a/mysql-test/r/information_schema.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/information_schema.result 2009-09-23 11:03:47 +0000
@@ -1380,6 +1380,17 @@ select user,db from information_schema.p
user db
user3148 test
drop user user3148@localhost;
+SELECT 'other connection here' AS who;
+who
+other connection here
+SELECT IF(`time` > 0, 'OK', `time`) AS time_low,
+IF(`time` < 1000, 'OK', `time`) AS time_high,
+IF(time_ms > 900, 'OK', time_ms) AS time_ms_low,
+IF(time_ms < 1000000, 'OK', time_ms) AS time_ms_high
+FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE ID=@tid;
+time_low time_high time_ms_low time_ms_high
+OK OK OK OK
DROP TABLE IF EXISTS server_status;
DROP EVENT IF EXISTS event_status;
SET GLOBAL event_scheduler=1;
@@ -1602,8 +1613,7 @@ CREATE_OPTIONS
key_block_size=1
DROP TABLE t1;
SET TIMESTAMP=@@TIMESTAMP + 10000000;
-SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
+SELECT 'NOT_OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
TEST_RESULT
-OK
SET TIMESTAMP=DEFAULT;
End of 5.1 tests.
=== modified file 'mysql-test/t/information_schema.test'
--- a/mysql-test/t/information_schema.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/information_schema.test 2009-09-23 11:03:47 +0000
@@ -1099,6 +1099,25 @@ disconnect con3148;
drop user user3148@localhost;
#
+# `time` and `time_ms` columns of INFORMATION_SCHEMA.PROCESSLIST.
+#
+connect (pslistcon,localhost,root,,test);
+let $ID= `select connection_id()`;
+SELECT 'other connection here' AS who;
+connection default;
+sleep 1;
+--disable_query_log
+eval SET @tid=$ID;
+--enable_query_log
+SELECT IF(`time` > 0, 'OK', `time`) AS time_low,
+ IF(`time` < 1000, 'OK', `time`) AS time_high,
+ IF(time_ms > 900, 'OK', time_ms) AS time_ms_low,
+ IF(time_ms < 1000000, 'OK', time_ms) AS time_ms_high
+ FROM INFORMATION_SCHEMA.PROCESSLIST
+ WHERE ID=@tid;
+disconnect pslistcon;
+
+#
# Bug#26174 Server Crash: INSERT ... SELECT ... FROM I_S.GLOBAL_STATUS
# in Event (see also openssl_1.test)
#
@@ -1352,9 +1371,16 @@ DROP TABLE t1;
# Bug #22047: Time in SHOW PROCESSLIST for SQL thread in replication seems
# to become negative
#
+# Note that at the time of writing, MariaDB differs in behaviour from MySQL on
+# the `time` column. In MySQL this changes depending on the setting of
+# @TIMESTAMP, which is contrary to the documented (and sensible) behaviour.
+# In MariaDB, the `time` column is independent of @TIMESTAMP.
+# (The rationale for this is to keep `time` and `time_ms` consistent;
+# @TIMESTAMP has no microsecond precision).
+#
SET TIMESTAMP=@@TIMESTAMP + 10000000;
-SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
+SELECT 'NOT_OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
SET TIMESTAMP=DEFAULT;
--echo End of 5.1 tests.
=== modified file 'mysql-test/t/not_embedded_server.test'
--- a/mysql-test/t/not_embedded_server.test 2009-04-30 10:29:19 +0000
+++ b/mysql-test/t/not_embedded_server.test 2009-09-23 11:03:47 +0000
@@ -32,7 +32,7 @@ select 1;
## End of 4.1 tests
#
#prepare stmt1 from ' SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND!=\'Daemon\' ';
-#--replace_column 1 number 6 time 3 localhost
+#--replace_column 1 number 6 time 3 localhost 9 time_ms
#execute stmt1;
#deallocate prepare stmt1;
=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc 2009-09-15 10:46:35 +0000
+++ b/sql/sql_show.cc 2009-09-23 11:03:47 +0000
@@ -1819,7 +1819,7 @@ int fill_schema_processlist(THD* thd, TA
TABLE *table= tables->table;
CHARSET_INFO *cs= system_charset_info;
char *user;
- time_t now= my_time(0);
+ ulonglong unow= my_micro_time();
DBUG_ENTER("fill_process_list");
user= thd->security_ctx->master_access & PROCESS_ACL ?
@@ -1877,8 +1877,8 @@ int fill_schema_processlist(THD* thd, TA
table->field[4]->store(command_name[tmp->command].str,
command_name[tmp->command].length, cs);
/* MYSQL_TIME */
- table->field[5]->store((longlong)(tmp->start_time ?
- now - tmp->start_time : 0), FALSE);
+ const ulonglong utime= tmp->start_utime ? unow - tmp->start_utime : 0;
+ table->field[5]->store(utime / 1000000, TRUE);
/* STATE */
#ifndef EMBEDDED_LIBRARY
val= (char*) (tmp->locked ? "Locked" :
@@ -1912,6 +1912,9 @@ int fill_schema_processlist(THD* thd, TA
table->field[7]->set_notnull();
}
+ /* TIME_MS */
+ table->field[8]->store((double)(utime / 1000.0));
+
if (schema_table_store_record(thd, table))
{
VOID(pthread_mutex_unlock(&LOCK_thread_count));
@@ -5542,7 +5545,7 @@ ST_SCHEMA_TABLE *get_schema_table(enum e
into it two numbers, based on modulus of base-10 numbers. In the ones
position is the number of decimals. Tens position is unused. In the
hundreds and thousands position is a two-digit decimal number representing
- length. Encode this value with (decimals*100)+length , where
+ length. Encode this value with (length*100)+decimals , where
0<decimals<10 and 0<=length<100 .
@param
@@ -6557,6 +6560,8 @@ ST_FIELD_INFO processlist_fields_info[]=
{"STATE", 64, MYSQL_TYPE_STRING, 0, 1, "State", SKIP_OPEN_TABLE},
{"INFO", PROCESS_LIST_INFO_WIDTH, MYSQL_TYPE_STRING, 0, 1, "Info",
SKIP_OPEN_TABLE},
+ {"TIME_MS", 100 * (MY_INT64_NUM_DECIMAL_DIGITS + 1) + 3, MYSQL_TYPE_DECIMAL,
+ 0, 0, "Time_ms", SKIP_OPEN_TABLE},
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
};
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2754)
by Igor Babaev 25 Sep '09
by Igor Babaev 25 Sep '09
25 Sep '09
#At lp:maria based on revid:igor@askmonty.org-20090920030226-xxh7a4i3gre9rqhe
2754 Igor Babaev 2009-09-24
Took care of mysql test suite failures on Windows.
modified:
mysql-test/suite/rpl/t/rpl_binlog_corruption.test
mysql-test/suite/rpl/t/rpl_killed_ddl.test
vio/viosocket.c
per-file messages:
mysql-test/suite/rpl/t/rpl_binlog_corruption.test
Disabled the test for Windows (see bug #47639)
mysql-test/suite/rpl/t/rpl_killed_ddl.test
Disabled the test for Windows (see bug #47638)
vio/viosocket.c
Added an implementation of vio_poll_read for Windows.
Winsock does not support the poll function.
So the existing generic implementation of vio_poll_read
could not be used for Windows.
=== modified file 'mysql-test/suite/rpl/t/rpl_binlog_corruption.test'
--- a/mysql-test/suite/rpl/t/rpl_binlog_corruption.test 2009-04-15 11:43:17 +0000
+++ b/mysql-test/suite/rpl/t/rpl_binlog_corruption.test 2009-09-25 06:42:43 +0000
@@ -15,6 +15,9 @@
# BUG#31793: log event corruption causes crash
# BUG#40482: server/mysqlbinlog crashes when reading invalid Incident_log_event
+# Temporarily disabled on Windows due to bug #47639
+--source include/not_windows.inc
+
source include/have_log_bin.inc;
# BUG#40482 only manifested itself in debug-compiled binaries.
source include/have_debug.inc;
=== modified file 'mysql-test/suite/rpl/t/rpl_killed_ddl.test'
--- a/mysql-test/suite/rpl/t/rpl_killed_ddl.test 2009-04-08 23:42:51 +0000
+++ b/mysql-test/suite/rpl/t/rpl_killed_ddl.test 2009-09-25 06:42:43 +0000
@@ -31,6 +31,9 @@
# - BUG#25705
# - BUG#44171
+# Temporarily disabled on Windows due to bug #47638
+--source include/not_windows.inc
+
source include/have_debug.inc;
source include/master-slave.inc;
=== modified file 'vio/viosocket.c'
--- a/vio/viosocket.c 2009-09-07 20:50:10 +0000
+++ b/vio/viosocket.c 2009-09-25 06:42:43 +0000
@@ -361,7 +361,20 @@ void vio_in_addr(Vio *vio, struct in_add
my_bool vio_poll_read(Vio *vio,uint timeout)
{
#ifndef HAVE_POLL
+#if __WIN__
+ int res;
+ struct fd_set fds;
+ struct timeval tv;
+ DBUG_ENTER("vio_poll");
+ fds.fd_count= 1;
+ fds.fd_array[0]= vio->sd;
+ tv.tv_sec= timeout;
+ tv.tv_usec= 0;
+ res= select(1, &fds, NULL, NULL, &tv) ? 0 : 1;
+ DBUG_RETURN(res);
+#else
return 0;
+#endif
#else
struct pollfd fds;
int res;
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2734: merge
by noreply@launchpad.net 24 Sep '09
by noreply@launchpad.net 24 Sep '09
24 Sep '09
Merge authors:
Oleksandr "Sanja" Byelkin (sanja-byelkin)
------------------------------------------------------------
revno: 2734 [merge]
committer: sanja(a)askmonty.org
branch nick: work-maria-5.1-mysql-test-run-merge
timestamp: Thu 2009-09-24 15:49:39 +0300
message:
merge
modified:
mysql-test/lib/mtr_misc.pl
mysql-test/mysql-test-run.pl
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] Rev 2734: merge in file:///Users/bell/maria/bzr/work-maria-5.1-mysql-test-run-merge/
by sanja@askmonty.org 24 Sep '09
by sanja@askmonty.org 24 Sep '09
24 Sep '09
At file:///Users/bell/maria/bzr/work-maria-5.1-mysql-test-run-merge/
------------------------------------------------------------
revno: 2734 [merge]
revision-id: sanja(a)askmonty.org-20090924124939-nwi2kr48x0as70n8
parent: hakan(a)askmonty.org-20090918193250-imuhuvjq1n21b01n
parent: sanja(a)askmonty.org-20090924121915-k4ooompd72l2hkn5
committer: sanja(a)askmonty.org
branch nick: work-maria-5.1-mysql-test-run-merge
timestamp: Thu 2009-09-24 15:49:39 +0300
message:
merge
modified:
mysql-test/lib/mtr_misc.pl sp1f-mtr_misc.pl-20041230152647-z3fkxvkkqfydzuwdmzjgkfo3tyetnp3a
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
=== modified file 'mysql-test/lib/mtr_misc.pl'
--- a/mysql-test/lib/mtr_misc.pl 2009-02-19 09:01:25 +0000
+++ b/mysql-test/lib/mtr_misc.pl 2009-09-24 12:19:15 +0000
@@ -174,4 +174,24 @@
select(undef, undef, undef, ($millis/1000));
}
+sub mtr_wait_lock_file {
+ die "usage: mtr_wait_lock_file(path_to_file, keep_alive)" unless @_ == 2;
+ my ($file, $keep_alive)= @_;
+ my $waited= 0;
+ my $msg_counter= $keep_alive;
+
+ while ( -e $file)
+ {
+ if ($keep_alive && !$msg_counter)
+ {
+ print "\n-STOPPED- [pass] ".$keep_alive."\n";
+ $msg_counter= $keep_alive;
+ }
+ mtr_milli_sleep(1000);
+ $waited= 1;
+ $msg_counter--;
+ }
+ return ($waited);
+}
+
1;
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-04 07:45:34 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-09-24 12:49:39 +0000
@@ -253,6 +253,11 @@
my $opt_parallel= $ENV{MTR_PARALLEL} || 1;
+# lock file to stop tests
+my $opt_stop_file= $ENV{MTR_STOP_FILE};
+# print messages when test suite is stopped (for buildbot)
+my $opt_stop_keep_alive= $ENV{MTR_STOP_KEEP_ALIVE};
+
select(STDOUT);
$| = 1; # Automatically flush STDOUT
@@ -451,6 +456,15 @@
my $s= IO::Select->new();
$s->add($server);
while (1) {
+ if ($opt_stop_file)
+ {
+ if (mtr_wait_lock_file($opt_stop_file, $opt_stop_keep_alive))
+ {
+ # We were waiting so restart timer process
+ $suite_timeout_proc->kill();
+ $suite_timeout_proc= My::SafeProcess->timer(suite_timeout());
+ }
+ }
my @ready = $s->can_read(1); # Wake up once every second
foreach my $sock (@ready) {
if ($sock == $server) {
@@ -933,6 +947,8 @@
'warnings!' => \$opt_warnings,
'timestamp' => \&report_option,
'timediff' => \&report_option,
+ 'stop-file=s' => \$opt_stop_file,
+ 'stop-keep-alive=i' => \$opt_stop_keep_alive,
'help|h' => \$opt_usage,
'list-options' => \$opt_list_options,
@@ -5409,6 +5425,14 @@
warnings Scan the log files for warnings. Use --nowarnings
to turn off.
+ stop-file=file (also MTR_STOP_FILE environment variable) if this
+ file detected mysql test will not start new tests
+ until the file will be removed.
+ stop-keep-alive=sec (also MTR_STOP_KEEP_ALIVE environment variable)
+ works with stop-file, print messages every sec
+ seconds when mysql test is waiting to removing
+ the file (for buildbot)
+
sleep=SECONDS Passed to mysqltest, will be used as fixed sleep time
debug-sync-timeout=NUM Set default timeout for WAIT_FOR debug sync
actions. Disable facility with NUM=0.
1
0
[Maria-developers] Rev 2724: Ability to stop mysql-test-run.pl temporary (useful for them who run buildbot slave on thier work computers) in file:///Users/bell/maria/bzr/work-maria-5.1/
by sanja@askmonty.org 24 Sep '09
by sanja@askmonty.org 24 Sep '09
24 Sep '09
At file:///Users/bell/maria/bzr/work-maria-5.1/
------------------------------------------------------------
revno: 2724
revision-id: sanja(a)askmonty.org-20090924121915-k4ooompd72l2hkn5
parent: psergey(a)askmonty.org-20090901115954-nge2brzh3akkmtlz
committer: sanja(a)askmonty.org
branch nick: work-maria-5.1
timestamp: Thu 2009-09-24 15:19:15 +0300
message:
Ability to stop mysql-test-run.pl temporary (useful for them who run buildbot slave on thier work computers)
=== modified file 'mysql-test/lib/mtr_misc.pl'
--- a/mysql-test/lib/mtr_misc.pl 2009-02-19 09:01:25 +0000
+++ b/mysql-test/lib/mtr_misc.pl 2009-09-24 12:19:15 +0000
@@ -174,4 +174,24 @@
select(undef, undef, undef, ($millis/1000));
}
+sub mtr_wait_lock_file {
+ die "usage: mtr_wait_lock_file(path_to_file, keep_alive)" unless @_ == 2;
+ my ($file, $keep_alive)= @_;
+ my $waited= 0;
+ my $msg_counter= $keep_alive;
+
+ while ( -e $file)
+ {
+ if ($keep_alive && !$msg_counter)
+ {
+ print "\n-STOPPED- [pass] ".$keep_alive."\n";
+ $msg_counter= $keep_alive;
+ }
+ mtr_milli_sleep(1000);
+ $waited= 1;
+ $msg_counter--;
+ }
+ return ($waited);
+}
+
1;
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-06-22 08:06:35 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-09-24 12:19:15 +0000
@@ -252,6 +252,11 @@
my $opt_parallel= $ENV{MTR_PARALLEL} || 1;
+# lock file to stop tests
+my $opt_stop_file= $ENV{MTR_STOP_FILE};
+# print messages when test suite is stopped (for buildbot)
+my $opt_stop_keep_alive= $ENV{MTR_STOP_KEEP_ALIVE};
+
select(STDOUT);
$| = 1; # Automatically flush STDOUT
@@ -450,6 +455,15 @@
my $s= IO::Select->new();
$s->add($server);
while (1) {
+ if ($opt_stop_file)
+ {
+ if (mtr_wait_lock_file($opt_stop_file, $opt_stop_keep_alive))
+ {
+ # We were waiting so restart timer process
+ $suite_timeout_proc->kill();
+ $suite_timeout_proc= My::SafeProcess->timer(suite_timeout());
+ }
+ }
my @ready = $s->can_read(1); # Wake up once every second
foreach my $sock (@ready) {
if ($sock == $server) {
@@ -931,6 +945,8 @@
'warnings!' => \$opt_warnings,
'timestamp' => \&report_option,
'timediff' => \&report_option,
+ 'stop-file=s' => \$opt_stop_file,
+ 'stop-keep-alive=i' => \$opt_stop_keep_alive,
'help|h' => \$opt_usage,
'list-options' => \$opt_list_options,
@@ -5392,6 +5408,14 @@
warnings Scan the log files for warnings. Use --nowarnings
to turn off.
+ stop-file=file (also MTR_STOP_FILE environment variable) if this
+ file detected mysql test will not start new tests
+ until the file will be removed.
+ stop-keep-alive=sec (also MTR_STOP_KEEP_ALIVE environment variable)
+ works with stop-file, print messages every sec
+ seconds when mysql test is waiting to removing
+ the file (for buildbot)
+
sleep=SECONDS Passed to mysqltest, will be used as fixed sleep time
debug-sync-timeout=NUM Set default timeout for WAIT_FOR debug sync
actions. Disable facility with NUM=0.
1
0
Re: [Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by Kristian Nielsen 24 Sep '09
by Kristian Nielsen 24 Sep '09
24 Sep '09
Alexi1952 <Alexi1952(a)yandex.ru> writes:
> PS. I don't know company rules, so being currently a "pre-member" of Maria (ha! I even don't know how the company is called)
> I didn't send this reply to "maria-developers(a)lists.launchpad.net". If that's not right, I will do it.
You are welcome to use maria-developers(a)lists.launchpad.net for anything
related to development of MariaDB. We often have people also outside of Monty
Program that provide insightful comments on patches or discussions that catch
their interest. I've Cc:ed the list for now.
(Are you a member of maria-developers@ ? If not, you should be, apply on
https://launchpad.net/~maria-developers (or just let me know your Launchpad
login) and I will approve you.)
>
> 18.09.09, 17:29, "Kristian Nielsen" <knielsen(a)knielsen-hq.org>:
>
>> Hi Alexi,
>> Thanks for writing up the low-level design. I read it through, and have a
>> couple of comments:
>> > 1.3. In mysqlbinlog.cc:
>> >
>> > - Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
>> > - Add Rpl_filter object to mysqlbinlog.cc
>> >
>> > Rpl_filter* binlog_filter;
>> Sharing code with similar replication options inside mysqld is a noble
>> goal. However, in this case I think it is a case of "the cure is worse than
>> the disease".
>> The Rpl_filter class has _so_ much mysqld server internals that we do not want
>> to mix into a client application. That is also why you need to do all these
>> modifications in sql_list, rpl_filter, etc.
>> So I think it is wrong to use the Rpl_filter class in mysqlbinlog.
>> To share code between the two, I think the better method is to move out the
>> needed functionality (add_db_rewrite() and get_rewrite_db()) in a separate
>> class, and have both the Rpl_filter class and mysqlbinlog use that.
>> Alternatively, if the shared functionality is really small (as it appears it
>> might be), just duplicating the functionality may be better.
>
> *******************************************************************************
> Funny: in my first version I wrote my own simple list-class with add() and get()
> functions (what is really needed here) and was "scarified" by SPetrunia for why
> didn't I use Rpl_filter. :) His idea was that mysqlbinlog options should be
Right, sharing the code is best, hence the idea to extract common
functionality in a separate class.
In particular, I do not like this method of Rpl_filter:
bool tables_ok(const char* db, TABLE_LIST* tables);
TABLE_LIST is deep deep into server internals, that is why I didn't like
pulling Rpl_filter as it is now into mysqlbinlog.
But actually Rpl_filter::tables_ok() seems to be the only problem of this kind
in Rpl_filter. So probably we just need to move this single method out into a
separate class (or existing class or static function, didn't check which would
be most appropriate). That method feels misplaced in that class to me.
So an Rpl_filter class without tables_ok() I see no problem with including in
mysqlbinlog. That would seem to me much cleaner, and should be simple, what
do you think?
> processed in the same manner as for replication.
>
> I had two reasons for using the very Rpl_filter:
>
> 1. It already contains add_db_rewrite() and get_rewrite_db() functions which
> are exactly what is needed.
>
> 2. I had in my mind WL40 ("Add a mysqlbinlog option to filter updates to
> certain tables") for which also I saw needed function in Rpl_filter.
Yes, I agree that these are good reasons.
> But frankly speaking, I looked through Rpl_filter code not-deeply - just to
> be sure that two mentioned function do what exactly I need and to get an
> impression that other functions looks like appropriate for options mentioned
> in WL40. I need to examine this more closely to take a final decision and/or
> to continue discussing with you on this point. Nevertheless, just few notes:
>
> Note 1. In any case, I like the idea of a "separate class".
> (But see the "objection" in Note 2 which may be applied to rpl_filter
> as well).
>
> Note 2. Please note that, essentially, modifications touches only sql_list -
> not Rpl_filter. As I noticed there several "generally used" classes
> (lists is just one example) which are bound to the server context only
> because of using the sql_alloc() function in new-operator(s). This
> function returns MEM_ROOT pointer attached to the current thread and
> because of that is "server-dependent". But why not - with the help of
> just two-three #ifdef's - to make this classes server-independent?
> Why not to allow sql_list to be used outside server context especially
> in view of that sql_list essentially (i.e. functionally) is not server
> dependent?
>
> Surely, I can foresee at least one reasonable objection: because these
> classes strictly belong to the server "internals" and are not supposed
> to be used outside. That's OK. But they can be used outside INDIRECTLY.
> Thus starting to work on "embedded parser" (currently, my work is only
> in embryo :) I came acrross several places where sql_alloc() is used in
> the same "not-essentially-server-dependent" manner. So in my opinion,
> making lists and similar classes applicable for both MYSQL_SERVER and
> MYSQL_CLIENT contexts is quite reasonble in general.
Yes. This is the other problem to be solved with getting Rpl_filter into
mysqlbinlog (apart from the tables_ok() problem discussed above).
And I agree that it _does_ make sense to have String, IList, HASH,
DYNAMIC_ARRAY, etc. available in client code (and these seem to use sql_alloc,
right?).
So it's 'just' a matter of doing this in a good way. Maybe that is better seen
in a full patch, and maybe we should ask someone (like Monty or maybe Sergei
Golubchik) who has a better overview of how memory management works in the
client and server code. But for now, a couple of comments:
1. Maybe some of this is already done? I would imagine at least some of the
primitive data structures would be used in client code.
2. One of the crucial points is to control the lifetime of allocations. In the
server there is extensive use of memroots with different lifetimes. Probably
a good way would be to support memroots in client applications (don't know
if/how much is already available).
3. I would like to avoid sprinkling #ifdef around the code, it should be
possible to do in a cleaner way. #ifdef introduce complex dependencies when
working on code, and there are already too much of that for
mysqlbinlog. Though if the existing client code already depends on some
#ifdef-magic we need to use it I guess.
In particular related to the changes you propose:
> - In rpl_filter.cc:
>
> Rpl_filter::Rpl_filter() :
> ...
> {
> #ifdef MYSQL_CLIENT
> init_alloc_root(&sql_list_client_mem_root, ...);
> #endif
> ...
> }
>
> Rpl_filter::~Rpl_filter()
> { ...
> #ifdef MYSQL_CLIENT
> free_root(&sql_list_client_mem_root, ...);
> #endif
> }
This is particular feels wrong, Rpl_filter should not need to maintain a
global mem_root like sql_list_client_mem_root. What if I want to use two
instances of Rpl_filter?
> - In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
> uses sql_alloc() which is THD dependent. These are to be modified
> as follows:
>
> #ifdef MYSQL_CLIENT
> extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
> #endif
>
> class Sql_alloc
> { ...
> static void *operator new(size_t size) throw ()
> {
> #ifndef MYSQL_CLIENT
> return sql_alloc(size);
> #else
> return alloc_root(&sql_list_client_mem_root, size);
> #endif
> }
> static void *operator new[](size_t size) throw ()
> {
> #ifndef MYSQL_CLIENT
> return sql_alloc(size);
> #else
> return alloc_root(&sql_list_client_mem_root, size);
> #endif
> }
> ...
> }
>
Can't we instead of this just define an alternate implementation of
sql_alloc() in mysqlbinlog?
Then mysqlbinlog could initialize a memroot which is used in its version of
sql_alloc(). And it seems we would not need any of the above #ifdef's?
In fact if you look at the end of client/mysql.cc it seems to do exactly this.
(Except it does not use memroot, just malloc(). Not sure what is best in our
case).
What do you think?
> ************************************************************************************
> This is OK: I wrote my code closely going along the code of the corresponding
> Table_map_log_event constructor (just in case, I copied full text of the rewrite_db
> at the end of this letter).
> ************************************************************************************
Ok, great!
- Kristian.
2
3
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2754)
by knielsen@knielsen-hq.org 23 Sep '09
by knielsen@knielsen-hq.org 23 Sep '09
23 Sep '09
#At lp:maria
2754 knielsen(a)knielsen-hq.org 2009-09-23
Merge Percona microsec_process patch into MariaDB.
This adds a TIME_MS column to SHOW FULL PROCESSLIST and
INFORMATION_SCHEMA.PROCESSLIST that works like the TIME column, but
in units of milliseconds with microsecond precision.
Note that this also changes behaviour of the existing TIME column. In
the MySQL server, the TIME column changes when a thread sets @TIMESTAMP.
This is contrary to documentation and also potentially confusing, so
could in any case be considered a bug. With this patch, to ensure
consistency between TIME and TIME_MS, setting @TIMESTAMP has no effect
on either value.
Add a test case for the TIME and TIME_MS columns.
Update existing test cases for changed behaviour.
Author: Percona
Signed-off-by: Kristian Nielsen <knielsen(a)knielsen-hq.org>
modified:
mysql-test/r/create.result
mysql-test/r/information_schema.result
mysql-test/t/information_schema.test
mysql-test/t/not_embedded_server.test
sql/sql_show.cc
per-file messages:
mysql-test/r/create.result
Result file update.
mysql-test/r/information_schema.result
Add test case.
Result file update (changed behaviour).
mysql-test/t/information_schema.test
Add test case.
Adjust test case for changed behaviour.
mysql-test/t/not_embedded_server.test
Update (commented-out) test case for newly added column.
sql/sql_show.cc
Merge Percona microsec_process patch into MariaDB.
=== modified file 'mysql-test/r/create.result'
--- a/mysql-test/r/create.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/create.result 2009-09-23 11:03:47 +0000
@@ -1749,7 +1749,8 @@ t1 CREATE TABLE `t1` (
`COMMAND` varchar(16) NOT NULL DEFAULT '',
`TIME` int(7) NOT NULL DEFAULT '0',
`STATE` varchar(64) DEFAULT NULL,
- `INFO` longtext
+ `INFO` longtext,
+ `TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000'
) DEFAULT CHARSET=utf8
drop table t1;
create temporary table t1 like information_schema.processlist;
@@ -1763,7 +1764,8 @@ t1 CREATE TEMPORARY TABLE `t1` (
`COMMAND` varchar(16) NOT NULL DEFAULT '',
`TIME` int(7) NOT NULL DEFAULT '0',
`STATE` varchar(64) DEFAULT NULL,
- `INFO` longtext
+ `INFO` longtext,
+ `TIME_MS` decimal(22,3) NOT NULL DEFAULT '0.000'
) DEFAULT CHARSET=utf8
drop table t1;
create table t1 like information_schema.character_sets;
=== modified file 'mysql-test/r/information_schema.result'
--- a/mysql-test/r/information_schema.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/information_schema.result 2009-09-23 11:03:47 +0000
@@ -1380,6 +1380,17 @@ select user,db from information_schema.p
user db
user3148 test
drop user user3148@localhost;
+SELECT 'other connection here' AS who;
+who
+other connection here
+SELECT IF(`time` > 0, 'OK', `time`) AS time_low,
+IF(`time` < 1000, 'OK', `time`) AS time_high,
+IF(time_ms > 900, 'OK', time_ms) AS time_ms_low,
+IF(time_ms < 1000000, 'OK', time_ms) AS time_ms_high
+FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE ID=@tid;
+time_low time_high time_ms_low time_ms_high
+OK OK OK OK
DROP TABLE IF EXISTS server_status;
DROP EVENT IF EXISTS event_status;
SET GLOBAL event_scheduler=1;
@@ -1602,8 +1613,7 @@ CREATE_OPTIONS
key_block_size=1
DROP TABLE t1;
SET TIMESTAMP=@@TIMESTAMP + 10000000;
-SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
+SELECT 'NOT_OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
TEST_RESULT
-OK
SET TIMESTAMP=DEFAULT;
End of 5.1 tests.
=== modified file 'mysql-test/t/information_schema.test'
--- a/mysql-test/t/information_schema.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/information_schema.test 2009-09-23 11:03:47 +0000
@@ -1099,6 +1099,25 @@ disconnect con3148;
drop user user3148@localhost;
#
+# `time` and `time_ms` columns of INFORMATION_SCHEMA.PROCESSLIST.
+#
+connect (pslistcon,localhost,root,,test);
+let $ID= `select connection_id()`;
+SELECT 'other connection here' AS who;
+connection default;
+sleep 1;
+--disable_query_log
+eval SET @tid=$ID;
+--enable_query_log
+SELECT IF(`time` > 0, 'OK', `time`) AS time_low,
+ IF(`time` < 1000, 'OK', `time`) AS time_high,
+ IF(time_ms > 900, 'OK', time_ms) AS time_ms_low,
+ IF(time_ms < 1000000, 'OK', time_ms) AS time_ms_high
+ FROM INFORMATION_SCHEMA.PROCESSLIST
+ WHERE ID=@tid;
+disconnect pslistcon;
+
+#
# Bug#26174 Server Crash: INSERT ... SELECT ... FROM I_S.GLOBAL_STATUS
# in Event (see also openssl_1.test)
#
@@ -1352,9 +1371,16 @@ DROP TABLE t1;
# Bug #22047: Time in SHOW PROCESSLIST for SQL thread in replication seems
# to become negative
#
+# Note that at the time of writing, MariaDB differs in behaviour from MySQL on
+# the `time` column. In MySQL this changes depending on the setting of
+# @TIMESTAMP, which is contrary to the documented (and sensible) behaviour.
+# In MariaDB, the `time` column is independent of @TIMESTAMP.
+# (The rationale for this is to keep `time` and `time_ms` consistent;
+# @TIMESTAMP has no microsecond precision).
+#
SET TIMESTAMP=@@TIMESTAMP + 10000000;
-SELECT 'OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
+SELECT 'NOT_OK' AS TEST_RESULT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time < 0;
SET TIMESTAMP=DEFAULT;
--echo End of 5.1 tests.
=== modified file 'mysql-test/t/not_embedded_server.test'
--- a/mysql-test/t/not_embedded_server.test 2009-04-30 10:29:19 +0000
+++ b/mysql-test/t/not_embedded_server.test 2009-09-23 11:03:47 +0000
@@ -32,7 +32,7 @@ select 1;
## End of 4.1 tests
#
#prepare stmt1 from ' SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND!=\'Daemon\' ';
-#--replace_column 1 number 6 time 3 localhost
+#--replace_column 1 number 6 time 3 localhost 9 time_ms
#execute stmt1;
#deallocate prepare stmt1;
=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc 2009-09-15 10:46:35 +0000
+++ b/sql/sql_show.cc 2009-09-23 11:03:47 +0000
@@ -1819,7 +1819,7 @@ int fill_schema_processlist(THD* thd, TA
TABLE *table= tables->table;
CHARSET_INFO *cs= system_charset_info;
char *user;
- time_t now= my_time(0);
+ ulonglong unow= my_micro_time();
DBUG_ENTER("fill_process_list");
user= thd->security_ctx->master_access & PROCESS_ACL ?
@@ -1877,8 +1877,8 @@ int fill_schema_processlist(THD* thd, TA
table->field[4]->store(command_name[tmp->command].str,
command_name[tmp->command].length, cs);
/* MYSQL_TIME */
- table->field[5]->store((longlong)(tmp->start_time ?
- now - tmp->start_time : 0), FALSE);
+ const ulonglong utime= tmp->start_utime ? unow - tmp->start_utime : 0;
+ table->field[5]->store(utime / 1000000, TRUE);
/* STATE */
#ifndef EMBEDDED_LIBRARY
val= (char*) (tmp->locked ? "Locked" :
@@ -1912,6 +1912,9 @@ int fill_schema_processlist(THD* thd, TA
table->field[7]->set_notnull();
}
+ /* TIME_MS */
+ table->field[8]->store((double)(utime / 1000.0));
+
if (schema_table_store_record(thd, table))
{
VOID(pthread_mutex_unlock(&LOCK_thread_count));
@@ -5542,7 +5545,7 @@ ST_SCHEMA_TABLE *get_schema_table(enum e
into it two numbers, based on modulus of base-10 numbers. In the ones
position is the number of decimals. Tens position is unused. In the
hundreds and thousands position is a two-digit decimal number representing
- length. Encode this value with (decimals*100)+length , where
+ length. Encode this value with (length*100)+decimals , where
0<decimals<10 and 0<=length<100 .
@param
@@ -6557,6 +6560,8 @@ ST_FIELD_INFO processlist_fields_info[]=
{"STATE", 64, MYSQL_TYPE_STRING, 0, 1, "State", SKIP_OPEN_TABLE},
{"INFO", PROCESS_LIST_INFO_WIDTH, MYSQL_TYPE_STRING, 0, 1, "Info",
SKIP_OPEN_TABLE},
+ {"TIME_MS", 100 * (MY_INT64_NUM_DECIMAL_DIGITS + 1) + 3, MYSQL_TYPE_DECIMAL,
+ 0, 0, "Time_ms", SKIP_OPEN_TABLE},
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
};
1
0
[Maria-developers] negative TIME in SHOW FULL PROCESSLIST and information_schema.processlist
by Kristian Nielsen 22 Sep '09
by Kristian Nielsen 22 Sep '09
22 Sep '09
Hi,
While merging the Percona microsec_process patch (the 5.1 port of the patch is
called acc-pslist), I encountered a problem related to Bug#22047:
http://bugs.mysql.com/bug.php?id=22047
The issue is with the exact behaviour of the TIME column of SHOW FULL
PROCESSLIST and information_schema.processlist.
The documentation says
(http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html)
Time
The time in seconds that the thread has been in its current state.
However, the TIME column is actually computed as
<current local time> - @@TIMESTAMP
This means that the value will differ from the documented value for threads
that modify @@TIMESTAMP. In particular, it will differ for the replication
thread.
There is a replication FAQ, which says this:
http://dev.mysql.com/doc/refman/5.1/en/replication-faq.html
16.3.4.3: How do I know how late a slave is compared to the master?
You can read the Seconds_Behind_Master column in SHOW SLAVE STATUS. See
Section 16.4.1,“Replication Implementation Details”.
In the Time column in the output of SHOW PROCESSLIST, the number of
seconds displayed for the slave SQL thread is the number of seconds
between the timestamp of the last replicated event and the real time of
the slave machine. You can use this to determine the date of the last
replicated event.
However, this does not take into account the possibility of time skew between
master and slave. The actual value displayed in SHOW PROCESSLIST is
<current time> - <time of original event> + <time skew>
To me, this is just too complex to be really useful.
On the other hand, Seconds_Behind_Master _does_ take into account the time
skew, so it seems a much more useful metric to use to me. Frankly, to me this
last part of the documentation sounds to me like trying to spin a bug as a
feature.
Now, the microsec_process patch adds a TIME_MS column, which works like TIME
is documented, except with microsecond precision. This leaves three options to
choose between:
1. Let TIME_MS also depend on @@TIMESTAMP. This is particularly ugly, as
TIMESTAMP has seconds granularity, so rounding effects will be
"interesting". I really don't like this idea.
2. Let TIME_MS be independent of @@TIMESTAMP; it will just be the time since
last state change, with microseconds resolution. But keep currently
implemented semantics of TIME. This means that TIME and TIME_MS will be
unrelated for threads that change @@TIMESTAMP (like the slave thread). This
will be confusing.
3. Change implementation of TIME so that both TIME and TIME_MS are independent
of @@TIMESTAMP.
Of these, I tend to prefer option 3.
Reason is that the semantics is much cleaner and simple to understand.
The functionality to see how much slave is behind is in any case better
obtained using Seconds_Behind_Master.
However, it does involve a change in behaviour, so I want to ask opinions if
anyone thinks the change in behaviour would cause too much breakage?
If so, I prefer to implement option 2. If not, I will go ahead with option 3.
Thanks,
- Kristian.
2
5
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2753) Bug#47016
by Igor Babaev 20 Sep '09
by Igor Babaev 20 Sep '09
20 Sep '09
#At lp:maria based on revid:igor@askmonty.org-20090919221119-bpy6nqq2xmn64dh4
2753 Igor Babaev 2009-09-19
Applied the fix for bug #47016 - a failure of rpl_do_grant
watched on Windows.
modified:
mysql-test/suite/rpl/t/rpl_do_grant.test
=== modified file 'mysql-test/suite/rpl/t/rpl_do_grant.test'
--- a/mysql-test/suite/rpl/t/rpl_do_grant.test 2009-03-18 13:48:23 +0000
+++ b/mysql-test/suite/rpl/t/rpl_do_grant.test 2009-09-20 03:02:26 +0000
@@ -129,6 +129,9 @@ CREATE DATABASE bug42217_db;
GRANT CREATE ROUTINE ON bug42217_db.* TO 'create_rout_db'@'localhost'
IDENTIFIED BY 'create_rout_db' WITH GRANT OPTION;
+sync_slave_with_master;
+connection master;
+
connect (create_rout_db_master, localhost, create_rout_db, create_rout_db, bug42217_db,$MASTER_MYPORT,);
connect (create_rout_db_slave, localhost, create_rout_db, create_rout_db, bug42217_db, $SLAVE_MYPORT,);
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2752)
by Igor Babaev 20 Sep '09
by Igor Babaev 20 Sep '09
20 Sep '09
#At lp:maria based on revid:igor@askmonty.org-20090919212129-p3ydr02t0es1py7y
2752 Igor Babaev 2009-09-19 [merge]
Merge
modified:
mysql-test/mysql-test-run.pl
mysql-test/r/myisam.result
mysql-test/suite/maria/r/maria3.result
mysql-test/t/myisam.test
sql/sql_table.cc
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-17 00:13:50 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-09-18 00:55:27 +0000
@@ -4433,7 +4433,7 @@ sub mysqld_start ($$) {
if (IS_WINDOWS)
{
# Trick the server to send output to stderr, with --console
- if (!(join(' ', @$args) =~ /--log-error/)) {
+ if (!(grep(/^--log-error/, @$args))) {
mtr_add_arg($args, "--console");
}
}
@@ -5058,7 +5058,7 @@ sub start_mysqltest ($) {
if (IS_WINDOWS)
{
# Trick the server to send output to stderr, with --console
- if (!(join(' ', @$args) =~ /--log-error/)) {
+ if (!(grep(/^--server-arg=--log-error/, @$args))) {
mtr_add_arg($args, "--server-arg=--console");
}
}
=== modified file 'mysql-test/r/myisam.result'
--- a/mysql-test/r/myisam.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/myisam.result 2009-09-18 01:04:43 +0000
@@ -2234,7 +2234,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 TRANSACTIONAL=1
drop table t1;
CREATE TABLE t1 (line LINESTRING NOT NULL) engine=myisam;
INSERT INTO t1 VALUES (GeomFromText("POINT(0 0)"));
=== modified file 'mysql-test/suite/maria/r/maria3.result'
--- a/mysql-test/suite/maria/r/maria3.result 2009-09-16 18:25:18 +0000
+++ b/mysql-test/suite/maria/r/maria3.result 2009-09-18 01:04:43 +0000
@@ -518,7 +518,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
drop table t1;
create table t1 (n int not null, c char(1)) engine=myisam transactional=1;
Warnings:
@@ -529,7 +529,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
drop table t1;
create table t1 (a int, key(a)) transactional=0;
insert into t1 values (0),(1),(2),(3),(4);
=== modified file 'mysql-test/t/myisam.test'
--- a/mysql-test/t/myisam.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/myisam.test 2009-09-18 01:04:43 +0000
@@ -1478,7 +1478,10 @@ let $MYSQLD_DATADIR= `select @@datadir`;
--exec $MYISAMCHK -d $MYSQLD_DATADIR/test/t1
DROP TABLE t1;
+#
# Test warnings with transactional=1 with MyISAM
+# MariaDB: Note that the table will still have 'TRANSACTIONAL=1' attribute.
+# That's the intended behavior atm.
#
create table t1 (n int not null, c char(1)) transactional=1;
show create table t1;
=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc 2009-09-16 11:31:20 +0000
+++ b/sql/sql_table.cc 2009-09-18 01:04:43 +0000
@@ -3747,19 +3747,11 @@ bool mysql_create_table_no_lock(THD *thd
/* Give warnings for not supported table options */
if (create_info->transactional && !file->ht->commit)
- {
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
ER_ILLEGAL_HA_CREATE_OPTION,
ER(ER_ILLEGAL_HA_CREATE_OPTION),
file->engine_name()->str,
"TRANSACTIONAL=1");
- /*
- MariaDB: need to do the same for row_format and page_checksum
- options. See MBUG#425916
- */
- create_info->transactional= HA_CHOICE_UNDEF;
- create_info->used_fields &= ~HA_CREATE_USED_TRANSACTIONAL;
- }
VOID(pthread_mutex_lock(&LOCK_open));
if (!internal_tmp_table && !(create_info->options & HA_LEX_CREATE_TMP_TABLE))
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2751) Bug#47455
by Igor Babaev 19 Sep '09
by Igor Babaev 19 Sep '09
19 Sep '09
#At lp:maria based on revid:igor@askmonty.org-20090918192704-0vlgzsth6r0e86zk
2751 Igor Babaev 2009-09-19
Fixed bug #47455 - a failure with main.myisam_crash_before_flush_keys.test
on Windows.
modified:
storage/myisam/myisamchk.c
=== modified file 'storage/myisam/myisamchk.c'
--- a/storage/myisam/myisamchk.c 2009-09-07 20:50:10 +0000
+++ b/storage/myisam/myisamchk.c 2009-09-19 21:21:29 +0000
@@ -83,7 +83,9 @@ HA_CHECK check_param;
int main(int argc, char **argv)
{
int error;
+ uchar rc;
MY_INIT(argv[0]);
+ my_progname_short= "myisamchk";
myisamchk_init(&check_param);
check_param.opt_lock_memory=1; /* Lock memory if possible */
@@ -132,7 +134,8 @@ int main(int argc, char **argv)
free_tmpdir(&myisamchk_tmpdir);
ft_free_stopwords();
my_end(check_param.testflag & T_INFO ? MY_CHECK_ERROR | MY_GIVE_INFO : MY_CHECK_ERROR);
- exit(error);
+ rc= (uchar) error;
+ exit(rc);
#ifndef _lint
return 0; /* No compiler warning */
#endif
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2733: Merge.
by noreply@launchpad.net 18 Sep '09
by noreply@launchpad.net 18 Sep '09
18 Sep '09
Merge authors:
Hakan Küçükyılmaz (hakan-askmonty)
------------------------------------------------------------
revno: 2733 [merge]
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria-local-master
timestamp: Fri 2009-09-18 21:32:50 +0200
message:
Merge.
modified:
client/mysqlslap.c
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] Rev 2733: Merge. in file:///Users/hakan/work/monty_program/maria-local-master/
by Hakan Kuecuekyilmaz 18 Sep '09
by Hakan Kuecuekyilmaz 18 Sep '09
18 Sep '09
At file:///Users/hakan/work/monty_program/maria-local-master/
------------------------------------------------------------
revno: 2733 [merge]
revision-id: hakan(a)askmonty.org-20090918193250-imuhuvjq1n21b01n
parent: psergey(a)askmonty.org-20090918011529-3d7glu6ot7n0xqc9
parent: hakan(a)askmonty.org-20090918033703-3ztdey1rpydiaeds
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria-local-master
timestamp: Fri 2009-09-18 21:32:50 +0200
message:
Merge.
modified:
client/mysqlslap.c sp1f-mysqlslap.c-20051130000206-7t375hf5mtlqof5xd4nj76yckxvxykhv
=== modified file 'client/mysqlslap.c'
--- a/client/mysqlslap.c 2009-04-25 10:05:32 +0000
+++ b/client/mysqlslap.c 2009-09-18 03:30:54 +0000
@@ -448,7 +448,16 @@
/* First we create */
if (create_statements)
+ {
+ /*
+ If we have an --engine option, then we indicate
+ create_schema() to add the engine type to the DDL.
+ */
+ if (eptr)
+ create_statements->type= CREATE_TABLE_TYPE;
+
create_schema(mysql, create_schema_string, create_statements, eptr);
+ }
/*
If we generated GUID we need to build a list of them from creation that
@@ -588,7 +597,9 @@
"Detach (close and reopen) connections after X number of requests.",
(uchar**) &detach_rate, (uchar**) &detach_rate, 0, GET_UINT, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
- {"engine", 'e', "Storage engine to use for creating the table.",
+ {"engine", 'e', "Comma separated list of storage engines to use for creating the table."
+ "The test is run for each engine. You can also specify an option for an engine"
+ "after a `:', like memory:max_row=2300",
(uchar**) &default_engine, (uchar**) &default_engine, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
@@ -958,6 +969,7 @@
ptr->type= UPDATE_TYPE_REQUIRES_PREFIX ;
else
ptr->type= UPDATE_TYPE;
+
strmov(ptr->string, update_string.str);
dynstr_free(&update_string);
DBUG_RETURN(ptr);
@@ -973,8 +985,8 @@
static statement *
build_insert_string(void)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
DYNAMIC_STRING insert_string;
DBUG_ENTER("build_insert_string");
@@ -1064,8 +1076,8 @@
static statement *
build_select_string(my_bool key)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
static DYNAMIC_STRING query_string;
DBUG_ENTER("build_select_string");
@@ -1117,6 +1129,7 @@
ptr->type= SELECT_TYPE_REQUIRES_PREFIX;
else
ptr->type= SELECT_TYPE;
+
strmov(ptr->string, query_string.str);
dynstr_free(&query_string);
DBUG_RETURN(ptr);
@@ -1175,8 +1188,6 @@
exit(1);
}
-
-
if (auto_generate_sql && num_of_query && auto_actual_queries)
{
fprintf(stderr,
@@ -1217,6 +1228,7 @@
num_int_cols= atoi(str->string);
if (str->option)
num_int_cols_index= atoi(str->option);
+
option_cleanup(str);
}
@@ -1229,6 +1241,7 @@
num_char_cols_index= atoi(str->option);
else
num_char_cols_index= 0;
+
option_cleanup(str);
}
@@ -1463,6 +1476,7 @@
if (tty_password)
opt_password= get_tty_password(NullS);
+
DBUG_RETURN(0);
}
@@ -1477,6 +1491,7 @@
if (verbose >= 3)
printf("%.*s;\n", len, query);
+
return mysql_real_query(mysql, query, len);
}
@@ -1592,18 +1607,6 @@
}
}
- if (engine_stmt)
- {
- len= snprintf(query, HUGE_STRING_LENGTH, "set storage_engine=`%s`",
- engine_stmt->string);
- if (run_query(mysql, query, len))
- {
- fprintf(stderr,"%s: Cannot set default engine: %s\n", my_progname,
- mysql_error(mysql));
- exit(1);
- }
- }
-
count= 0;
after_create= stmt;
@@ -1617,8 +1620,21 @@
{
char buffer[HUGE_STRING_LENGTH];
- snprintf(buffer, HUGE_STRING_LENGTH, "%s %s", ptr->string,
- engine_stmt->option);
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s %s",
+ ptr->string, engine_stmt->string, engine_stmt->option);
+ if (run_query(mysql, buffer, strlen(buffer)))
+ {
+ fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
+ my_progname, (uint)ptr->length, ptr->string, mysql_error(mysql));
+ exit(1);
+ }
+ }
+ else if (engine_stmt && engine_stmt->string && ptr->type == CREATE_TABLE_TYPE)
+ {
+ char buffer[HUGE_STRING_LENGTH];
+
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s",
+ ptr->string, engine_stmt->string);
if (run_query(mysql, buffer, strlen(buffer)))
{
fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
@@ -1652,6 +1668,7 @@
{
char query[HUGE_STRING_LENGTH];
int len;
+
DBUG_ENTER("drop_schema");
len= snprintf(query, HUGE_STRING_LENGTH, "DROP SCHEMA IF EXISTS `%s`", db);
@@ -1940,17 +1957,27 @@
uint count= 0; /* We know that there is always one */
for (tmp= *sptr= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
(retstr= strchr(ptr, delm));
tmp->next= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
tmp= tmp->next)
{
- char buffer[HUGE_STRING_LENGTH];
+ /*
+ Initialize buffer, because otherwise an
+ --engine=<storage_engine>:<option>,<eng1>,<eng2>
+ will crash.
+ */
+ char buffer[HUGE_STRING_LENGTH]= "";
char *buffer_ptr;
count++;
strncpy(buffer, ptr, (size_t)(retstr - ptr));
+ /*
+ Handle --engine=memory:max_row=200 cases, or more general speaking
+ --engine=<storage_engine>:<options>, which will be translated to
+ Engine = storage_engine option.
+ */
if ((buffer_ptr= strchr(buffer, ':')))
{
char *option_ptr;
@@ -1971,13 +1998,15 @@
tmp->length= (size_t)(retstr - ptr);
}
+ /* Skip delimiter delm */
ptr+= retstr - ptr + 1;
if (isspace(*ptr))
ptr++;
+
count++;
}
- if (ptr != origin+length)
+ if (ptr != origin + length)
{
char *origin_ptr;
@@ -1986,7 +2015,7 @@
char *option_ptr;
tmp->length= (size_t)(origin_ptr - ptr);
- tmp->string= my_strndup(origin, tmp->length, MYF(MY_FAE));
+ tmp->string= my_strndup(ptr, tmp->length, MYF(MY_FAE));
option_ptr= (char *)ptr + 1 + tmp->length;
@@ -2036,7 +2065,7 @@
if (ptr != script+length)
{
tmp->string= my_strndup(ptr, (uint)((script + length) - ptr),
- MYF(MY_FAE));
+ MYF(MY_FAE));
tmp->length= (size_t)((script + length) - ptr);
count++;
}
@@ -2094,6 +2123,7 @@
{
char buffer[HUGE_STRING_LENGTH];
const char *ptr= auto_generate_sql_type ? auto_generate_sql_type : "query";
+
snprintf(buffer, HUGE_STRING_LENGTH,
"%s,%s,%ld.%03ld,%ld.%03ld,%ld.%03ld,%d,%llu\n",
con->engine ? con->engine : "", /* Storage engine we ran against */
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2750)
by Igor Babaev 18 Sep '09
by Igor Babaev 18 Sep '09
18 Sep '09
#At lp:maria based on revid:igor@askmonty.org-20090918190257-descsgkvdgbqtfgq
2750 Igor Babaev 2009-09-18
Made innodb_xtradb_bug317074.test to be a 'big' test
to avoid a timeout failure of it on Windows.
modified:
mysql-test/t/innodb_xtradb_bug317074.test
=== modified file 'mysql-test/t/innodb_xtradb_bug317074.test'
--- a/mysql-test/t/innodb_xtradb_bug317074.test 2009-09-08 16:04:58 +0000
+++ b/mysql-test/t/innodb_xtradb_bug317074.test 2009-09-18 19:27:04 +0000
@@ -1,4 +1,5 @@
--- source include/have_innodb.inc
+--source include/big_test.inc
+--source include/have_innodb.inc
SET @old_innodb_file_format=@@innodb_file_format;
SET @old_innodb_file_per_table=@@innodb_file_per_table;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2749) Bug#46931
by Igor Babaev 18 Sep '09
by Igor Babaev 18 Sep '09
18 Sep '09
#At lp:maria based on revid:psergey@askmonty.org-20090917230109-mni2vfp5mtgxpbhw
2749 Igor Babaev 2009-09-18
Applied the fix for bug #46931 from mysql-5.1 main trunk
to fix a failure in rpl_get_master_version_and_clock.test
modified:
mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test
mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result
=== modified file 'mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test'
--- a/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test 2009-07-16 06:56:43 +0000
+++ b/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test 2009-09-18 19:02:57 +0000
@@ -41,7 +41,17 @@ eval SELECT RELEASE_LOCK($debug_lock);
connection slave;
source include/wait_for_slave_io_error.inc;
let $last_io_errno= query_get_value("show slave status", Last_IO_Errno, 1);
-echo Slave_IO_Errno= $last_io_errno;
+--echo Check network error happened here
+if (`SELECT '$last_io_errno' = '2013' || # CR_SERVER_LOST
+ '$last_io_errno' = '2003' || # CR_CONN_HOST_ERROR
+ '$last_io_errno' = '2002' || # CR_CONNECTION_ERROR
+ '$last_io_errno' = '2006' || # CR_SERVER_GONE_ERROR
+ '$last_io_errno' = '1040' || # ER_CON_COUNT_ERROR
+ '$last_io_errno' = '1053' # ER_SERVER_SHUTDOWN
+ `)
+{
+ --echo NETWORK ERROR
+}
# Write file to make mysql-test-run.pl start up the server again
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
=== modified file 'mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result'
--- a/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result 2009-07-16 06:56:43 +0000
+++ b/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result 2009-09-18 19:02:57 +0000
@@ -16,7 +16,8 @@ start slave;
SELECT RELEASE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP");
RELEASE_LOCK("debug_lock.before_get_UNIX_TIMESTAMP")
1
-Slave_IO_Errno= 2013
+Check network error happened here
+NETWORK ERROR
SELECT IS_FREE_LOCK("debug_lock.before_get_SERVER_ID");
IS_FREE_LOCK("debug_lock.before_get_SERVER_ID")
1
@@ -29,7 +30,8 @@ start slave;
SELECT RELEASE_LOCK("debug_lock.before_get_SERVER_ID");
RELEASE_LOCK("debug_lock.before_get_SERVER_ID")
1
-Slave_IO_Errno= 2013
+Check network error happened here
+NETWORK ERROR
set global debug= '';
reset master;
include/stop_slave.inc
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
-=-=(Guest - Mon, 10 Aug 2009, 11:12)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6580 2009-08-10 11:12:36.000000000 +0300
+++ /tmp/wklog.36.new.6580 2009-08-10 11:12:36.000000000 +0300
@@ -1,4 +1,3 @@
-
Context
-------
At the moment, the server has a replication slave option
@@ -67,6 +66,6 @@
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require use to parse the
-statement).
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
-=-=(Psergey - Sun, 09 Aug 2009, 23:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13425 2009-08-09 23:53:54.000000000 +0300
+++ /tmp/wklog.36.new.13425 2009-08-09 23:53:54.000000000 +0300
@@ -1 +1,72 @@
+Context
+-------
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require use to parse the
+statement).
+
------------------------------------------------------------
-=-=(View All Progress Notes, 12 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
2
1
[Maria-developers] Updated (by Guest): options for CREATE TABLE (43)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: options for CREATE TABLE
CREATION DATE..: Tue, 11 Aug 2009, 17:02
SUPERVISOR.....: Bothorsen
IMPLEMENTOR....: Sanja
COPIES TO......: Monty
CATEGORY.......: Server-BackLog
TASK ID........: 43 (http://askmonty.org/worklog/?tid=43)
VERSION........: Server-5.1
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 32
PROGRESS NOTES:
-=-=(Guest - Fri, 18 Sep 2009, 14:24)=-=-
Low Level Design modified.
--- /tmp/wklog.43.old.31654 2009-09-18 14:24:41.000000000 +0300
+++ /tmp/wklog.43.new.31654 2009-09-18 14:24:41.000000000 +0300
@@ -2,4 +2,6 @@
Handler have access to the options during creation and after opening frm.
+It should has C interface.
+
-=-=(Sanja - Fri, 18 Sep 2009, 13:32)=-=-
Low Level Design modified.
--- /tmp/wklog.43.old.29567 2009-09-18 13:32:41.000000000 +0300
+++ /tmp/wklog.43.new.29567 2009-09-18 13:32:41.000000000 +0300
@@ -1 +1,5 @@
+Options stored in a list as pairs key, value which are LEX_STRING.
+
+Handler have access to the options during creation and after opening frm.
+
-=-=(Sanja - Fri, 18 Sep 2009, 13:21)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.29107 2009-09-18 13:21:19.000000000 +0300
+++ /tmp/wklog.43.new.29107 2009-09-18 13:21:19.000000000 +0300
@@ -6,7 +6,8 @@
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
-'=' was not obligatory.
+'=' was not obligatory. Behaviour and way of storage for existing options will
+be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
@@ -42,6 +43,6 @@
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
-
-
+Incorrect option during creation/altering table lead only to worning. During
+opening unrecognised options should be ignored.
-=-=(Guest - Tue, 11 Aug 2009, 19:57)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.31856 2009-08-11 19:57:38.000000000 +0300
+++ /tmp/wklog.43.new.31856 2009-08-11 19:57:38.000000000 +0300
@@ -5,8 +5,43 @@
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
-Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+Exclusion should be made for old table and key options where
'=' was not obligatory.
+Old key options:
+KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
+WITH PARSER <name> -> PARSER=name
+
+Old table options:
+ENGINE name -> ENGINE=name
+TYPE name -> TYPE=name
+MAX_ROWS num -> MAX_ROWS=num
+MIX_ROWS num -> MIX_ROWS=num
+AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
+PASSWORD string -> PASSWORD=string
+COMMENT string -> COMMENT=string
+AUTO_INCREMENT num -> AUTO_INCREMENT=num
+PACK_KEYS num/default -> PACK_KEYS=num/default
+CHECKSUM num -> CHECKSUM=num
+TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
+PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
+DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
+ROW_FORMAT name -> ROW_FORMAT=name
+INSERT_METHOD name -> INSERT_METHOD=name
+KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
+TRANSACTIONAL num -> TRANSACTIONAL=num
+
+Table options which will be left hardcoded
+UNION
+default charset
+default collation
+DATA DIRECTORY
+TABLESPACE
+STORAGE
+
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
+
+
+
+
-=-=(Guest - Tue, 11 Aug 2009, 19:36)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.30883 2009-08-11 19:36:45.000000000 +0300
+++ /tmp/wklog.43.new.30883 2009-08-11 19:36:45.000000000 +0300
@@ -1 +1,12 @@
+Table definition ca looks like following
+CREATE TABLE table
+ (field int ... field_opt1=fval1 field_opt2=fval2,
+ key key1(field) key_opt1=kval1 key_opt2=kval2)
+ table_option1=tval1, table_option2=tval2;
+
+Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+'=' was not obligatory.
+
+For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
+be separated from them by '=' sign.
DESCRIPTION:
Add ability to create table with additional option which can be passed to engine.
Also make current options such as TRANSACTIONAL working via this mechanism.
HIGH-LEVEL SPECIFICATION:
Table definition ca looks like following
CREATE TABLE table
(field int ... field_opt1=fval1 field_opt2=fval2,
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
'=' was not obligatory. Behaviour and way of storage for existing options will
be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
WITH PARSER <name> -> PARSER=name
Old table options:
ENGINE name -> ENGINE=name
TYPE name -> TYPE=name
MAX_ROWS num -> MAX_ROWS=num
MIX_ROWS num -> MIX_ROWS=num
AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
PASSWORD string -> PASSWORD=string
COMMENT string -> COMMENT=string
AUTO_INCREMENT num -> AUTO_INCREMENT=num
PACK_KEYS num/default -> PACK_KEYS=num/default
CHECKSUM num -> CHECKSUM=num
TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
ROW_FORMAT name -> ROW_FORMAT=name
INSERT_METHOD name -> INSERT_METHOD=name
KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
TRANSACTIONAL num -> TRANSACTIONAL=num
Table options which will be left hardcoded
UNION
default charset
default collation
DATA DIRECTORY
TABLESPACE
STORAGE
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
Incorrect option during creation/altering table lead only to worning. During
opening unrecognised options should be ignored.
LOW-LEVEL DESIGN:
Options stored in a list as pairs key, value which are LEX_STRING.
Handler have access to the options during creation and after opening frm.
It should has C interface.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): options for CREATE TABLE (43)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: options for CREATE TABLE
CREATION DATE..: Tue, 11 Aug 2009, 17:02
SUPERVISOR.....: Bothorsen
IMPLEMENTOR....: Sanja
COPIES TO......: Monty
CATEGORY.......: Server-BackLog
TASK ID........: 43 (http://askmonty.org/worklog/?tid=43)
VERSION........: Server-5.1
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 32
PROGRESS NOTES:
-=-=(Guest - Fri, 18 Sep 2009, 14:24)=-=-
Low Level Design modified.
--- /tmp/wklog.43.old.31654 2009-09-18 14:24:41.000000000 +0300
+++ /tmp/wklog.43.new.31654 2009-09-18 14:24:41.000000000 +0300
@@ -2,4 +2,6 @@
Handler have access to the options during creation and after opening frm.
+It should has C interface.
+
-=-=(Sanja - Fri, 18 Sep 2009, 13:32)=-=-
Low Level Design modified.
--- /tmp/wklog.43.old.29567 2009-09-18 13:32:41.000000000 +0300
+++ /tmp/wklog.43.new.29567 2009-09-18 13:32:41.000000000 +0300
@@ -1 +1,5 @@
+Options stored in a list as pairs key, value which are LEX_STRING.
+
+Handler have access to the options during creation and after opening frm.
+
-=-=(Sanja - Fri, 18 Sep 2009, 13:21)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.29107 2009-09-18 13:21:19.000000000 +0300
+++ /tmp/wklog.43.new.29107 2009-09-18 13:21:19.000000000 +0300
@@ -6,7 +6,8 @@
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
-'=' was not obligatory.
+'=' was not obligatory. Behaviour and way of storage for existing options will
+be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
@@ -42,6 +43,6 @@
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
-
-
+Incorrect option during creation/altering table lead only to worning. During
+opening unrecognised options should be ignored.
-=-=(Guest - Tue, 11 Aug 2009, 19:57)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.31856 2009-08-11 19:57:38.000000000 +0300
+++ /tmp/wklog.43.new.31856 2009-08-11 19:57:38.000000000 +0300
@@ -5,8 +5,43 @@
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
-Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+Exclusion should be made for old table and key options where
'=' was not obligatory.
+Old key options:
+KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
+WITH PARSER <name> -> PARSER=name
+
+Old table options:
+ENGINE name -> ENGINE=name
+TYPE name -> TYPE=name
+MAX_ROWS num -> MAX_ROWS=num
+MIX_ROWS num -> MIX_ROWS=num
+AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
+PASSWORD string -> PASSWORD=string
+COMMENT string -> COMMENT=string
+AUTO_INCREMENT num -> AUTO_INCREMENT=num
+PACK_KEYS num/default -> PACK_KEYS=num/default
+CHECKSUM num -> CHECKSUM=num
+TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
+PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
+DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
+ROW_FORMAT name -> ROW_FORMAT=name
+INSERT_METHOD name -> INSERT_METHOD=name
+KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
+TRANSACTIONAL num -> TRANSACTIONAL=num
+
+Table options which will be left hardcoded
+UNION
+default charset
+default collation
+DATA DIRECTORY
+TABLESPACE
+STORAGE
+
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
+
+
+
+
-=-=(Guest - Tue, 11 Aug 2009, 19:36)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.30883 2009-08-11 19:36:45.000000000 +0300
+++ /tmp/wklog.43.new.30883 2009-08-11 19:36:45.000000000 +0300
@@ -1 +1,12 @@
+Table definition ca looks like following
+CREATE TABLE table
+ (field int ... field_opt1=fval1 field_opt2=fval2,
+ key key1(field) key_opt1=kval1 key_opt2=kval2)
+ table_option1=tval1, table_option2=tval2;
+
+Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+'=' was not obligatory.
+
+For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
+be separated from them by '=' sign.
DESCRIPTION:
Add ability to create table with additional option which can be passed to engine.
Also make current options such as TRANSACTIONAL working via this mechanism.
HIGH-LEVEL SPECIFICATION:
Table definition ca looks like following
CREATE TABLE table
(field int ... field_opt1=fval1 field_opt2=fval2,
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
'=' was not obligatory. Behaviour and way of storage for existing options will
be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
WITH PARSER <name> -> PARSER=name
Old table options:
ENGINE name -> ENGINE=name
TYPE name -> TYPE=name
MAX_ROWS num -> MAX_ROWS=num
MIX_ROWS num -> MIX_ROWS=num
AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
PASSWORD string -> PASSWORD=string
COMMENT string -> COMMENT=string
AUTO_INCREMENT num -> AUTO_INCREMENT=num
PACK_KEYS num/default -> PACK_KEYS=num/default
CHECKSUM num -> CHECKSUM=num
TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
ROW_FORMAT name -> ROW_FORMAT=name
INSERT_METHOD name -> INSERT_METHOD=name
KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
TRANSACTIONAL num -> TRANSACTIONAL=num
Table options which will be left hardcoded
UNION
default charset
default collation
DATA DIRECTORY
TABLESPACE
STORAGE
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
Incorrect option during creation/altering table lead only to worning. During
opening unrecognised options should be ignored.
LOW-LEVEL DESIGN:
Options stored in a list as pairs key, value which are LEX_STRING.
Handler have access to the options during creation and after opening frm.
It should has C interface.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): options for CREATE TABLE (43)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: options for CREATE TABLE
CREATION DATE..: Tue, 11 Aug 2009, 17:02
SUPERVISOR.....: Bothorsen
IMPLEMENTOR....: Sanja
COPIES TO......: Monty
CATEGORY.......: Server-BackLog
TASK ID........: 43 (http://askmonty.org/worklog/?tid=43)
VERSION........: Server-5.1
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 32
PROGRESS NOTES:
-=-=(Guest - Fri, 18 Sep 2009, 14:24)=-=-
Low Level Design modified.
--- /tmp/wklog.43.old.31654 2009-09-18 14:24:41.000000000 +0300
+++ /tmp/wklog.43.new.31654 2009-09-18 14:24:41.000000000 +0300
@@ -2,4 +2,6 @@
Handler have access to the options during creation and after opening frm.
+It should has C interface.
+
-=-=(Sanja - Fri, 18 Sep 2009, 13:32)=-=-
Low Level Design modified.
--- /tmp/wklog.43.old.29567 2009-09-18 13:32:41.000000000 +0300
+++ /tmp/wklog.43.new.29567 2009-09-18 13:32:41.000000000 +0300
@@ -1 +1,5 @@
+Options stored in a list as pairs key, value which are LEX_STRING.
+
+Handler have access to the options during creation and after opening frm.
+
-=-=(Sanja - Fri, 18 Sep 2009, 13:21)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.29107 2009-09-18 13:21:19.000000000 +0300
+++ /tmp/wklog.43.new.29107 2009-09-18 13:21:19.000000000 +0300
@@ -6,7 +6,8 @@
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
-'=' was not obligatory.
+'=' was not obligatory. Behaviour and way of storage for existing options will
+be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
@@ -42,6 +43,6 @@
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
-
-
+Incorrect option during creation/altering table lead only to worning. During
+opening unrecognised options should be ignored.
-=-=(Guest - Tue, 11 Aug 2009, 19:57)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.31856 2009-08-11 19:57:38.000000000 +0300
+++ /tmp/wklog.43.new.31856 2009-08-11 19:57:38.000000000 +0300
@@ -5,8 +5,43 @@
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
-Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+Exclusion should be made for old table and key options where
'=' was not obligatory.
+Old key options:
+KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
+WITH PARSER <name> -> PARSER=name
+
+Old table options:
+ENGINE name -> ENGINE=name
+TYPE name -> TYPE=name
+MAX_ROWS num -> MAX_ROWS=num
+MIX_ROWS num -> MIX_ROWS=num
+AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
+PASSWORD string -> PASSWORD=string
+COMMENT string -> COMMENT=string
+AUTO_INCREMENT num -> AUTO_INCREMENT=num
+PACK_KEYS num/default -> PACK_KEYS=num/default
+CHECKSUM num -> CHECKSUM=num
+TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
+PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
+DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
+ROW_FORMAT name -> ROW_FORMAT=name
+INSERT_METHOD name -> INSERT_METHOD=name
+KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
+TRANSACTIONAL num -> TRANSACTIONAL=num
+
+Table options which will be left hardcoded
+UNION
+default charset
+default collation
+DATA DIRECTORY
+TABLESPACE
+STORAGE
+
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
+
+
+
+
-=-=(Guest - Tue, 11 Aug 2009, 19:36)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.30883 2009-08-11 19:36:45.000000000 +0300
+++ /tmp/wklog.43.new.30883 2009-08-11 19:36:45.000000000 +0300
@@ -1 +1,12 @@
+Table definition ca looks like following
+CREATE TABLE table
+ (field int ... field_opt1=fval1 field_opt2=fval2,
+ key key1(field) key_opt1=kval1 key_opt2=kval2)
+ table_option1=tval1, table_option2=tval2;
+
+Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+'=' was not obligatory.
+
+For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
+be separated from them by '=' sign.
DESCRIPTION:
Add ability to create table with additional option which can be passed to engine.
Also make current options such as TRANSACTIONAL working via this mechanism.
HIGH-LEVEL SPECIFICATION:
Table definition ca looks like following
CREATE TABLE table
(field int ... field_opt1=fval1 field_opt2=fval2,
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
'=' was not obligatory. Behaviour and way of storage for existing options will
be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
WITH PARSER <name> -> PARSER=name
Old table options:
ENGINE name -> ENGINE=name
TYPE name -> TYPE=name
MAX_ROWS num -> MAX_ROWS=num
MIX_ROWS num -> MIX_ROWS=num
AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
PASSWORD string -> PASSWORD=string
COMMENT string -> COMMENT=string
AUTO_INCREMENT num -> AUTO_INCREMENT=num
PACK_KEYS num/default -> PACK_KEYS=num/default
CHECKSUM num -> CHECKSUM=num
TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
ROW_FORMAT name -> ROW_FORMAT=name
INSERT_METHOD name -> INSERT_METHOD=name
KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
TRANSACTIONAL num -> TRANSACTIONAL=num
Table options which will be left hardcoded
UNION
default charset
default collation
DATA DIRECTORY
TABLESPACE
STORAGE
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
Incorrect option during creation/altering table lead only to worning. During
opening unrecognised options should be ignored.
LOW-LEVEL DESIGN:
Options stored in a list as pairs key, value which are LEX_STRING.
Handler have access to the options during creation and after opening frm.
It should has C interface.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Sanja): options for CREATE TABLE (43)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: options for CREATE TABLE
CREATION DATE..: Tue, 11 Aug 2009, 17:02
SUPERVISOR.....: Bothorsen
IMPLEMENTOR....: Sanja
COPIES TO......: Monty
CATEGORY.......: Server-BackLog
TASK ID........: 43 (http://askmonty.org/worklog/?tid=43)
VERSION........: Server-5.1
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 32
PROGRESS NOTES:
-=-=(Sanja - Fri, 18 Sep 2009, 13:32)=-=-
Low Level Design modified.
--- /tmp/wklog.43.old.29567 2009-09-18 13:32:41.000000000 +0300
+++ /tmp/wklog.43.new.29567 2009-09-18 13:32:41.000000000 +0300
@@ -1 +1,5 @@
+Options stored in a list as pairs key, value which are LEX_STRING.
+
+Handler have access to the options during creation and after opening frm.
+
-=-=(Sanja - Fri, 18 Sep 2009, 13:21)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.29107 2009-09-18 13:21:19.000000000 +0300
+++ /tmp/wklog.43.new.29107 2009-09-18 13:21:19.000000000 +0300
@@ -6,7 +6,8 @@
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
-'=' was not obligatory.
+'=' was not obligatory. Behaviour and way of storage for existing options will
+be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
@@ -42,6 +43,6 @@
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
-
-
+Incorrect option during creation/altering table lead only to worning. During
+opening unrecognised options should be ignored.
-=-=(Guest - Tue, 11 Aug 2009, 19:57)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.31856 2009-08-11 19:57:38.000000000 +0300
+++ /tmp/wklog.43.new.31856 2009-08-11 19:57:38.000000000 +0300
@@ -5,8 +5,43 @@
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
-Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+Exclusion should be made for old table and key options where
'=' was not obligatory.
+Old key options:
+KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
+WITH PARSER <name> -> PARSER=name
+
+Old table options:
+ENGINE name -> ENGINE=name
+TYPE name -> TYPE=name
+MAX_ROWS num -> MAX_ROWS=num
+MIX_ROWS num -> MIX_ROWS=num
+AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
+PASSWORD string -> PASSWORD=string
+COMMENT string -> COMMENT=string
+AUTO_INCREMENT num -> AUTO_INCREMENT=num
+PACK_KEYS num/default -> PACK_KEYS=num/default
+CHECKSUM num -> CHECKSUM=num
+TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
+PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
+DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
+ROW_FORMAT name -> ROW_FORMAT=name
+INSERT_METHOD name -> INSERT_METHOD=name
+KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
+TRANSACTIONAL num -> TRANSACTIONAL=num
+
+Table options which will be left hardcoded
+UNION
+default charset
+default collation
+DATA DIRECTORY
+TABLESPACE
+STORAGE
+
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
+
+
+
+
-=-=(Guest - Tue, 11 Aug 2009, 19:36)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.30883 2009-08-11 19:36:45.000000000 +0300
+++ /tmp/wklog.43.new.30883 2009-08-11 19:36:45.000000000 +0300
@@ -1 +1,12 @@
+Table definition ca looks like following
+CREATE TABLE table
+ (field int ... field_opt1=fval1 field_opt2=fval2,
+ key key1(field) key_opt1=kval1 key_opt2=kval2)
+ table_option1=tval1, table_option2=tval2;
+
+Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+'=' was not obligatory.
+
+For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
+be separated from them by '=' sign.
DESCRIPTION:
Add ability to create table with additional option which can be passed to engine.
Also make current options such as TRANSACTIONAL working via this mechanism.
HIGH-LEVEL SPECIFICATION:
Table definition ca looks like following
CREATE TABLE table
(field int ... field_opt1=fval1 field_opt2=fval2,
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
'=' was not obligatory. Behaviour and way of storage for existing options will
be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
WITH PARSER <name> -> PARSER=name
Old table options:
ENGINE name -> ENGINE=name
TYPE name -> TYPE=name
MAX_ROWS num -> MAX_ROWS=num
MIX_ROWS num -> MIX_ROWS=num
AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
PASSWORD string -> PASSWORD=string
COMMENT string -> COMMENT=string
AUTO_INCREMENT num -> AUTO_INCREMENT=num
PACK_KEYS num/default -> PACK_KEYS=num/default
CHECKSUM num -> CHECKSUM=num
TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
ROW_FORMAT name -> ROW_FORMAT=name
INSERT_METHOD name -> INSERT_METHOD=name
KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
TRANSACTIONAL num -> TRANSACTIONAL=num
Table options which will be left hardcoded
UNION
default charset
default collation
DATA DIRECTORY
TABLESPACE
STORAGE
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
Incorrect option during creation/altering table lead only to worning. During
opening unrecognised options should be ignored.
LOW-LEVEL DESIGN:
Options stored in a list as pairs key, value which are LEX_STRING.
Handler have access to the options during creation and after opening frm.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Sanja): options for CREATE TABLE (43)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: options for CREATE TABLE
CREATION DATE..: Tue, 11 Aug 2009, 17:02
SUPERVISOR.....: Bothorsen
IMPLEMENTOR....: Sanja
COPIES TO......: Monty
CATEGORY.......: Server-BackLog
TASK ID........: 43 (http://askmonty.org/worklog/?tid=43)
VERSION........: Server-5.1
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 32
PROGRESS NOTES:
-=-=(Sanja - Fri, 18 Sep 2009, 13:32)=-=-
Low Level Design modified.
--- /tmp/wklog.43.old.29567 2009-09-18 13:32:41.000000000 +0300
+++ /tmp/wklog.43.new.29567 2009-09-18 13:32:41.000000000 +0300
@@ -1 +1,5 @@
+Options stored in a list as pairs key, value which are LEX_STRING.
+
+Handler have access to the options during creation and after opening frm.
+
-=-=(Sanja - Fri, 18 Sep 2009, 13:21)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.29107 2009-09-18 13:21:19.000000000 +0300
+++ /tmp/wklog.43.new.29107 2009-09-18 13:21:19.000000000 +0300
@@ -6,7 +6,8 @@
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
-'=' was not obligatory.
+'=' was not obligatory. Behaviour and way of storage for existing options will
+be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
@@ -42,6 +43,6 @@
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
-
-
+Incorrect option during creation/altering table lead only to worning. During
+opening unrecognised options should be ignored.
-=-=(Guest - Tue, 11 Aug 2009, 19:57)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.31856 2009-08-11 19:57:38.000000000 +0300
+++ /tmp/wklog.43.new.31856 2009-08-11 19:57:38.000000000 +0300
@@ -5,8 +5,43 @@
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
-Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+Exclusion should be made for old table and key options where
'=' was not obligatory.
+Old key options:
+KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
+WITH PARSER <name> -> PARSER=name
+
+Old table options:
+ENGINE name -> ENGINE=name
+TYPE name -> TYPE=name
+MAX_ROWS num -> MAX_ROWS=num
+MIX_ROWS num -> MIX_ROWS=num
+AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
+PASSWORD string -> PASSWORD=string
+COMMENT string -> COMMENT=string
+AUTO_INCREMENT num -> AUTO_INCREMENT=num
+PACK_KEYS num/default -> PACK_KEYS=num/default
+CHECKSUM num -> CHECKSUM=num
+TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
+PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
+DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
+ROW_FORMAT name -> ROW_FORMAT=name
+INSERT_METHOD name -> INSERT_METHOD=name
+KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
+TRANSACTIONAL num -> TRANSACTIONAL=num
+
+Table options which will be left hardcoded
+UNION
+default charset
+default collation
+DATA DIRECTORY
+TABLESPACE
+STORAGE
+
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
+
+
+
+
-=-=(Guest - Tue, 11 Aug 2009, 19:36)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.30883 2009-08-11 19:36:45.000000000 +0300
+++ /tmp/wklog.43.new.30883 2009-08-11 19:36:45.000000000 +0300
@@ -1 +1,12 @@
+Table definition ca looks like following
+CREATE TABLE table
+ (field int ... field_opt1=fval1 field_opt2=fval2,
+ key key1(field) key_opt1=kval1 key_opt2=kval2)
+ table_option1=tval1, table_option2=tval2;
+
+Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+'=' was not obligatory.
+
+For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
+be separated from them by '=' sign.
DESCRIPTION:
Add ability to create table with additional option which can be passed to engine.
Also make current options such as TRANSACTIONAL working via this mechanism.
HIGH-LEVEL SPECIFICATION:
Table definition ca looks like following
CREATE TABLE table
(field int ... field_opt1=fval1 field_opt2=fval2,
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
'=' was not obligatory. Behaviour and way of storage for existing options will
be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
WITH PARSER <name> -> PARSER=name
Old table options:
ENGINE name -> ENGINE=name
TYPE name -> TYPE=name
MAX_ROWS num -> MAX_ROWS=num
MIX_ROWS num -> MIX_ROWS=num
AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
PASSWORD string -> PASSWORD=string
COMMENT string -> COMMENT=string
AUTO_INCREMENT num -> AUTO_INCREMENT=num
PACK_KEYS num/default -> PACK_KEYS=num/default
CHECKSUM num -> CHECKSUM=num
TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
ROW_FORMAT name -> ROW_FORMAT=name
INSERT_METHOD name -> INSERT_METHOD=name
KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
TRANSACTIONAL num -> TRANSACTIONAL=num
Table options which will be left hardcoded
UNION
default charset
default collation
DATA DIRECTORY
TABLESPACE
STORAGE
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
Incorrect option during creation/altering table lead only to worning. During
opening unrecognised options should be ignored.
LOW-LEVEL DESIGN:
Options stored in a list as pairs key, value which are LEX_STRING.
Handler have access to the options during creation and after opening frm.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Sanja): options for CREATE TABLE (43)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: options for CREATE TABLE
CREATION DATE..: Tue, 11 Aug 2009, 17:02
SUPERVISOR.....: Bothorsen
IMPLEMENTOR....: Sanja
COPIES TO......: Monty
CATEGORY.......: Server-BackLog
TASK ID........: 43 (http://askmonty.org/worklog/?tid=43)
VERSION........: Server-5.1
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 32
PROGRESS NOTES:
-=-=(Sanja - Fri, 18 Sep 2009, 13:32)=-=-
Low Level Design modified.
--- /tmp/wklog.43.old.29567 2009-09-18 13:32:41.000000000 +0300
+++ /tmp/wklog.43.new.29567 2009-09-18 13:32:41.000000000 +0300
@@ -1 +1,5 @@
+Options stored in a list as pairs key, value which are LEX_STRING.
+
+Handler have access to the options during creation and after opening frm.
+
-=-=(Sanja - Fri, 18 Sep 2009, 13:21)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.29107 2009-09-18 13:21:19.000000000 +0300
+++ /tmp/wklog.43.new.29107 2009-09-18 13:21:19.000000000 +0300
@@ -6,7 +6,8 @@
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
-'=' was not obligatory.
+'=' was not obligatory. Behaviour and way of storage for existing options will
+be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
@@ -42,6 +43,6 @@
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
-
-
+Incorrect option during creation/altering table lead only to worning. During
+opening unrecognised options should be ignored.
-=-=(Guest - Tue, 11 Aug 2009, 19:57)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.31856 2009-08-11 19:57:38.000000000 +0300
+++ /tmp/wklog.43.new.31856 2009-08-11 19:57:38.000000000 +0300
@@ -5,8 +5,43 @@
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
-Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+Exclusion should be made for old table and key options where
'=' was not obligatory.
+Old key options:
+KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
+WITH PARSER <name> -> PARSER=name
+
+Old table options:
+ENGINE name -> ENGINE=name
+TYPE name -> TYPE=name
+MAX_ROWS num -> MAX_ROWS=num
+MIX_ROWS num -> MIX_ROWS=num
+AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
+PASSWORD string -> PASSWORD=string
+COMMENT string -> COMMENT=string
+AUTO_INCREMENT num -> AUTO_INCREMENT=num
+PACK_KEYS num/default -> PACK_KEYS=num/default
+CHECKSUM num -> CHECKSUM=num
+TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
+PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
+DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
+ROW_FORMAT name -> ROW_FORMAT=name
+INSERT_METHOD name -> INSERT_METHOD=name
+KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
+TRANSACTIONAL num -> TRANSACTIONAL=num
+
+Table options which will be left hardcoded
+UNION
+default charset
+default collation
+DATA DIRECTORY
+TABLESPACE
+STORAGE
+
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
+
+
+
+
-=-=(Guest - Tue, 11 Aug 2009, 19:36)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.30883 2009-08-11 19:36:45.000000000 +0300
+++ /tmp/wklog.43.new.30883 2009-08-11 19:36:45.000000000 +0300
@@ -1 +1,12 @@
+Table definition ca looks like following
+CREATE TABLE table
+ (field int ... field_opt1=fval1 field_opt2=fval2,
+ key key1(field) key_opt1=kval1 key_opt2=kval2)
+ table_option1=tval1, table_option2=tval2;
+
+Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+'=' was not obligatory.
+
+For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
+be separated from them by '=' sign.
DESCRIPTION:
Add ability to create table with additional option which can be passed to engine.
Also make current options such as TRANSACTIONAL working via this mechanism.
HIGH-LEVEL SPECIFICATION:
Table definition ca looks like following
CREATE TABLE table
(field int ... field_opt1=fval1 field_opt2=fval2,
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
'=' was not obligatory. Behaviour and way of storage for existing options will
be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
WITH PARSER <name> -> PARSER=name
Old table options:
ENGINE name -> ENGINE=name
TYPE name -> TYPE=name
MAX_ROWS num -> MAX_ROWS=num
MIX_ROWS num -> MIX_ROWS=num
AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
PASSWORD string -> PASSWORD=string
COMMENT string -> COMMENT=string
AUTO_INCREMENT num -> AUTO_INCREMENT=num
PACK_KEYS num/default -> PACK_KEYS=num/default
CHECKSUM num -> CHECKSUM=num
TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
ROW_FORMAT name -> ROW_FORMAT=name
INSERT_METHOD name -> INSERT_METHOD=name
KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
TRANSACTIONAL num -> TRANSACTIONAL=num
Table options which will be left hardcoded
UNION
default charset
default collation
DATA DIRECTORY
TABLESPACE
STORAGE
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
Incorrect option during creation/altering table lead only to worning. During
opening unrecognised options should be ignored.
LOW-LEVEL DESIGN:
Options stored in a list as pairs key, value which are LEX_STRING.
Handler have access to the options during creation and after opening frm.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Sanja): options for CREATE TABLE (43)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: options for CREATE TABLE
CREATION DATE..: Tue, 11 Aug 2009, 17:02
SUPERVISOR.....: Bothorsen
IMPLEMENTOR....: Sanja
COPIES TO......: Monty
CATEGORY.......: Server-BackLog
TASK ID........: 43 (http://askmonty.org/worklog/?tid=43)
VERSION........: Server-5.1
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 32
PROGRESS NOTES:
-=-=(Sanja - Fri, 18 Sep 2009, 13:21)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.29107 2009-09-18 13:21:19.000000000 +0300
+++ /tmp/wklog.43.new.29107 2009-09-18 13:21:19.000000000 +0300
@@ -6,7 +6,8 @@
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
-'=' was not obligatory.
+'=' was not obligatory. Behaviour and way of storage for existing options will
+be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
@@ -42,6 +43,6 @@
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
-
-
+Incorrect option during creation/altering table lead only to worning. During
+opening unrecognised options should be ignored.
-=-=(Guest - Tue, 11 Aug 2009, 19:57)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.31856 2009-08-11 19:57:38.000000000 +0300
+++ /tmp/wklog.43.new.31856 2009-08-11 19:57:38.000000000 +0300
@@ -5,8 +5,43 @@
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
-Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+Exclusion should be made for old table and key options where
'=' was not obligatory.
+Old key options:
+KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
+WITH PARSER <name> -> PARSER=name
+
+Old table options:
+ENGINE name -> ENGINE=name
+TYPE name -> TYPE=name
+MAX_ROWS num -> MAX_ROWS=num
+MIX_ROWS num -> MIX_ROWS=num
+AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
+PASSWORD string -> PASSWORD=string
+COMMENT string -> COMMENT=string
+AUTO_INCREMENT num -> AUTO_INCREMENT=num
+PACK_KEYS num/default -> PACK_KEYS=num/default
+CHECKSUM num -> CHECKSUM=num
+TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
+PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
+DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
+ROW_FORMAT name -> ROW_FORMAT=name
+INSERT_METHOD name -> INSERT_METHOD=name
+KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
+TRANSACTIONAL num -> TRANSACTIONAL=num
+
+Table options which will be left hardcoded
+UNION
+default charset
+default collation
+DATA DIRECTORY
+TABLESPACE
+STORAGE
+
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
+
+
+
+
-=-=(Guest - Tue, 11 Aug 2009, 19:36)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.30883 2009-08-11 19:36:45.000000000 +0300
+++ /tmp/wklog.43.new.30883 2009-08-11 19:36:45.000000000 +0300
@@ -1 +1,12 @@
+Table definition ca looks like following
+CREATE TABLE table
+ (field int ... field_opt1=fval1 field_opt2=fval2,
+ key key1(field) key_opt1=kval1 key_opt2=kval2)
+ table_option1=tval1, table_option2=tval2;
+
+Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+'=' was not obligatory.
+
+For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
+be separated from them by '=' sign.
DESCRIPTION:
Add ability to create table with additional option which can be passed to engine.
Also make current options such as TRANSACTIONAL working via this mechanism.
HIGH-LEVEL SPECIFICATION:
Table definition ca looks like following
CREATE TABLE table
(field int ... field_opt1=fval1 field_opt2=fval2,
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
'=' was not obligatory. Behaviour and way of storage for existing options will
be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
WITH PARSER <name> -> PARSER=name
Old table options:
ENGINE name -> ENGINE=name
TYPE name -> TYPE=name
MAX_ROWS num -> MAX_ROWS=num
MIX_ROWS num -> MIX_ROWS=num
AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
PASSWORD string -> PASSWORD=string
COMMENT string -> COMMENT=string
AUTO_INCREMENT num -> AUTO_INCREMENT=num
PACK_KEYS num/default -> PACK_KEYS=num/default
CHECKSUM num -> CHECKSUM=num
TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
ROW_FORMAT name -> ROW_FORMAT=name
INSERT_METHOD name -> INSERT_METHOD=name
KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
TRANSACTIONAL num -> TRANSACTIONAL=num
Table options which will be left hardcoded
UNION
default charset
default collation
DATA DIRECTORY
TABLESPACE
STORAGE
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
Incorrect option during creation/altering table lead only to worning. During
opening unrecognised options should be ignored.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Sanja): options for CREATE TABLE (43)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: options for CREATE TABLE
CREATION DATE..: Tue, 11 Aug 2009, 17:02
SUPERVISOR.....: Bothorsen
IMPLEMENTOR....: Sanja
COPIES TO......: Monty
CATEGORY.......: Server-BackLog
TASK ID........: 43 (http://askmonty.org/worklog/?tid=43)
VERSION........: Server-5.1
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 32
PROGRESS NOTES:
-=-=(Sanja - Fri, 18 Sep 2009, 13:21)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.29107 2009-09-18 13:21:19.000000000 +0300
+++ /tmp/wklog.43.new.29107 2009-09-18 13:21:19.000000000 +0300
@@ -6,7 +6,8 @@
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
-'=' was not obligatory.
+'=' was not obligatory. Behaviour and way of storage for existing options will
+be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
@@ -42,6 +43,6 @@
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
-
-
+Incorrect option during creation/altering table lead only to worning. During
+opening unrecognised options should be ignored.
-=-=(Guest - Tue, 11 Aug 2009, 19:57)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.31856 2009-08-11 19:57:38.000000000 +0300
+++ /tmp/wklog.43.new.31856 2009-08-11 19:57:38.000000000 +0300
@@ -5,8 +5,43 @@
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
-Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+Exclusion should be made for old table and key options where
'=' was not obligatory.
+Old key options:
+KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
+WITH PARSER <name> -> PARSER=name
+
+Old table options:
+ENGINE name -> ENGINE=name
+TYPE name -> TYPE=name
+MAX_ROWS num -> MAX_ROWS=num
+MIX_ROWS num -> MIX_ROWS=num
+AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
+PASSWORD string -> PASSWORD=string
+COMMENT string -> COMMENT=string
+AUTO_INCREMENT num -> AUTO_INCREMENT=num
+PACK_KEYS num/default -> PACK_KEYS=num/default
+CHECKSUM num -> CHECKSUM=num
+TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
+PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
+DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
+ROW_FORMAT name -> ROW_FORMAT=name
+INSERT_METHOD name -> INSERT_METHOD=name
+KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
+TRANSACTIONAL num -> TRANSACTIONAL=num
+
+Table options which will be left hardcoded
+UNION
+default charset
+default collation
+DATA DIRECTORY
+TABLESPACE
+STORAGE
+
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
+
+
+
+
-=-=(Guest - Tue, 11 Aug 2009, 19:36)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.30883 2009-08-11 19:36:45.000000000 +0300
+++ /tmp/wklog.43.new.30883 2009-08-11 19:36:45.000000000 +0300
@@ -1 +1,12 @@
+Table definition ca looks like following
+CREATE TABLE table
+ (field int ... field_opt1=fval1 field_opt2=fval2,
+ key key1(field) key_opt1=kval1 key_opt2=kval2)
+ table_option1=tval1, table_option2=tval2;
+
+Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+'=' was not obligatory.
+
+For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
+be separated from them by '=' sign.
DESCRIPTION:
Add ability to create table with additional option which can be passed to engine.
Also make current options such as TRANSACTIONAL working via this mechanism.
HIGH-LEVEL SPECIFICATION:
Table definition ca looks like following
CREATE TABLE table
(field int ... field_opt1=fval1 field_opt2=fval2,
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
'=' was not obligatory. Behaviour and way of storage for existing options will
be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
WITH PARSER <name> -> PARSER=name
Old table options:
ENGINE name -> ENGINE=name
TYPE name -> TYPE=name
MAX_ROWS num -> MAX_ROWS=num
MIX_ROWS num -> MIX_ROWS=num
AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
PASSWORD string -> PASSWORD=string
COMMENT string -> COMMENT=string
AUTO_INCREMENT num -> AUTO_INCREMENT=num
PACK_KEYS num/default -> PACK_KEYS=num/default
CHECKSUM num -> CHECKSUM=num
TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
ROW_FORMAT name -> ROW_FORMAT=name
INSERT_METHOD name -> INSERT_METHOD=name
KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
TRANSACTIONAL num -> TRANSACTIONAL=num
Table options which will be left hardcoded
UNION
default charset
default collation
DATA DIRECTORY
TABLESPACE
STORAGE
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
Incorrect option during creation/altering table lead only to worning. During
opening unrecognised options should be ignored.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Sanja): options for CREATE TABLE (43)
by worklog-noreply@askmonty.org 18 Sep '09
by worklog-noreply@askmonty.org 18 Sep '09
18 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: options for CREATE TABLE
CREATION DATE..: Tue, 11 Aug 2009, 17:02
SUPERVISOR.....: Bothorsen
IMPLEMENTOR....: Sanja
COPIES TO......: Monty
CATEGORY.......: Server-BackLog
TASK ID........: 43 (http://askmonty.org/worklog/?tid=43)
VERSION........: Server-5.1
STATUS.........: Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 32 (hours remain)
ORIG. ESTIMATE.: 32
PROGRESS NOTES:
-=-=(Sanja - Fri, 18 Sep 2009, 13:21)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.29107 2009-09-18 13:21:19.000000000 +0300
+++ /tmp/wklog.43.new.29107 2009-09-18 13:21:19.000000000 +0300
@@ -6,7 +6,8 @@
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
-'=' was not obligatory.
+'=' was not obligatory. Behaviour and way of storage for existing options will
+be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
@@ -42,6 +43,6 @@
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
-
-
+Incorrect option during creation/altering table lead only to worning. During
+opening unrecognised options should be ignored.
-=-=(Guest - Tue, 11 Aug 2009, 19:57)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.31856 2009-08-11 19:57:38.000000000 +0300
+++ /tmp/wklog.43.new.31856 2009-08-11 19:57:38.000000000 +0300
@@ -5,8 +5,43 @@
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
-Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+Exclusion should be made for old table and key options where
'=' was not obligatory.
+Old key options:
+KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
+WITH PARSER <name> -> PARSER=name
+
+Old table options:
+ENGINE name -> ENGINE=name
+TYPE name -> TYPE=name
+MAX_ROWS num -> MAX_ROWS=num
+MIX_ROWS num -> MIX_ROWS=num
+AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
+PASSWORD string -> PASSWORD=string
+COMMENT string -> COMMENT=string
+AUTO_INCREMENT num -> AUTO_INCREMENT=num
+PACK_KEYS num/default -> PACK_KEYS=num/default
+CHECKSUM num -> CHECKSUM=num
+TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
+PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
+DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
+ROW_FORMAT name -> ROW_FORMAT=name
+INSERT_METHOD name -> INSERT_METHOD=name
+KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
+TRANSACTIONAL num -> TRANSACTIONAL=num
+
+Table options which will be left hardcoded
+UNION
+default charset
+default collation
+DATA DIRECTORY
+TABLESPACE
+STORAGE
+
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
+
+
+
+
-=-=(Guest - Tue, 11 Aug 2009, 19:36)=-=-
High-Level Specification modified.
--- /tmp/wklog.43.old.30883 2009-08-11 19:36:45.000000000 +0300
+++ /tmp/wklog.43.new.30883 2009-08-11 19:36:45.000000000 +0300
@@ -1 +1,12 @@
+Table definition ca looks like following
+CREATE TABLE table
+ (field int ... field_opt1=fval1 field_opt2=fval2,
+ key key1(field) key_opt1=kval1 key_opt2=kval2)
+ table_option1=tval1, table_option2=tval2;
+
+Exclusion should be made for old table and key (KEY_BLOCK_SIZE) options where
+'=' was not obligatory.
+
+For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
+be separated from them by '=' sign.
DESCRIPTION:
Add ability to create table with additional option which can be passed to engine.
Also make current options such as TRANSACTIONAL working via this mechanism.
HIGH-LEVEL SPECIFICATION:
Table definition ca looks like following
CREATE TABLE table
(field int ... field_opt1=fval1 field_opt2=fval2,
key key1(field) key_opt1=kval1 key_opt2=kval2)
table_option1=tval1, table_option2=tval2;
Exclusion should be made for old table and key options where
'=' was not obligatory. Behaviour and way of storage for existing options will
be left as is.
Old key options:
KEY_BLOCK_SIZE <num> -> KEY_BLOCK_SIZE=num
WITH PARSER <name> -> PARSER=name
Old table options:
ENGINE name -> ENGINE=name
TYPE name -> TYPE=name
MAX_ROWS num -> MAX_ROWS=num
MIX_ROWS num -> MIX_ROWS=num
AVG_ROW_LENGTH num -> AVG_ROW_LENGTH=num
PASSWORD string -> PASSWORD=string
COMMENT string -> COMMENT=string
AUTO_INCREMENT num -> AUTO_INCREMENT=num
PACK_KEYS num/default -> PACK_KEYS=num/default
CHECKSUM num -> CHECKSUM=num
TABLE_CHECKSUM num -> TABLE_CHECKSUM=num
PAGE_CHECKSUM num -> PAGE_CHECKSUM=num
DELAY_KEY_WRITE num -> DELAY_KEY_WRITE=num
ROW_FORMAT name -> ROW_FORMAT=name
INSERT_METHOD name -> INSERT_METHOD=name
KEY_BLOCK_SIZE num -> KEY_BLOCK_SIZE=num
TRANSACTIONAL num -> TRANSACTIONAL=num
Table options which will be left hardcoded
UNION
default charset
default collation
DATA DIRECTORY
TABLESPACE
STORAGE
For fields options can go with field attributes (NOT NULL, UNIQUE and so on) can
be separated from them by '=' sign.
Incorrect option during creation/altering table lead only to worning. During
opening unrecognised options should be ignored.
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
Hakan Kuecuekyilmaz <hakan(a)askmonty.org> writes:
> Kristian,
>
> I have now a rough idea on how to run our make distcheck test.
>
> What I need is a howto about adding tests to buildbot.
>
> In Pushbuild times, BUILD/compile-dist && make dist was run prior
> to all other tests. The machines connected to Pushbuild would pull
> the .tar.gz archive to start their tests. I think, we don't really
> need that, but we need to test make distcheck is working.
Yes, Pushbuild had one job than ran and produced a source .tar.gz from `make
dist`. And this was uploaded to most other build slaves as the basis for their
builds. The good point about this approach is that it tests the actual sources
that we are releasing, and forgettting to add some file to the list of what
goes into the source tarball is a very common mistake. It also allows to test
that the source can be built without having autotools, bison, etc. installed.
The problem with out buildbot setup is that our slaves are too poorly
connected network wise. I fear constantly up- and downloading source tarballs
would overload internet connections. It could work well for machines on the
same LAN as the Buildbot master though.
However, we could do something simpler, something like this:
BUILD/autorun.sh && make -j4 dist
find . -maxdepth 1 \( -name 'mysql-*.tar.gz -prune -o -print0) | xargs -0 rm -Rf
gzip -dc mysql-*.tar.gz | tar xf -
(cd mysql-* && ./configure <options> && make -j4)
(cd mysql-*/mysql-test && perl mysql-test-run.pl <options>)
This does not catch if the build process starts depending on autotools or
bison, but otherwise should work ok I think.
A seperate test would be to just run `make distcheck` and check that it does
not fail. This is a somewhat different test, it does not test that the
resulting binary works, but it does do some extra checks (like that
`make clean` works correctly).
So either or both of these would be good to have.
I believe Buildbot also has support for one build producing the source tarball
with `make dist`, and once this is done triggering other builds to run from
this. So if you want to do this it should be possible, but as you say we
probably don't really need that at this point.
As to a howto:
- Find build slaves to run this on.
- All of this can be configured just by setting up builders in the Buildbot
master config file and adding appropriate buildsteps.
- https://internal.askmonty.org/internal/index.php/BuildbotSetup has
documentation on the setup and configuration of our Buildbot master.
- /etc/buildbot/maria-master.cfg on hasky is the master config file, you can
study it to see how the existing setup works.
- http://djmitche.github.com/buildbot/docs/0.7.11/ is the Buildbot manual
with detailed description of how the config file works.
Hopefully that should get you started; feel free to ask any specific questions
that may pop up.
- Kristian.
1
0
[Maria-developers] Rev 2732: Merge. in file:///Users/hakan/work/monty_program/maria-debug/
by Hakan Kuecuekyilmaz 18 Sep '09
by Hakan Kuecuekyilmaz 18 Sep '09
18 Sep '09
At file:///Users/hakan/work/monty_program/maria-debug/
------------------------------------------------------------
revno: 2732 [merge]
revision-id: hakan(a)askmonty.org-20090918033703-3ztdey1rpydiaeds
parent: hakan(a)askmonty.org-20090918033054-zi01ib0tg2qt1l7m
parent: psergey(a)askmonty.org-20090918011529-3d7glu6ot7n0xqc9
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria-debug
timestamp: Fri 2009-09-18 05:37:03 +0200
message:
Merge.
modified:
mysql-test/lib/mtr_gcov.pl sp1f-mtr_gcov.pl-20041230152646-g7ukx2aojk6vlfbrurijutdkqshwljue
mysql-test/lib/process-purecov-annotations.pl processpurecovannota-20090825145959-3tgucpo20ms8b5yb-1
storage/maria/CMakeLists.txt sp1f-cmakelists.txt-20060904145307-qtvi5bxnxyt7nzs4gtpsyte5vv3fwm2i
=== modified file 'mysql-test/lib/mtr_gcov.pl'
--- a/mysql-test/lib/mtr_gcov.pl 2009-08-25 15:02:55 +0000
+++ b/mysql-test/lib/mtr_gcov.pl 2009-09-18 01:15:29 +0000
@@ -64,7 +64,8 @@
$dir_reported= 1;
}
system("$gcov $f 2>>$start_dir/$gcov_err >>$start_dir/$gcov_msg");
- system("perl $basedir/mysql-test/lib/process-purecov-annotations.pl $f.gcov");
+ system("perl", "$basedir/mysql-test/lib/process-purecov-annotations.pl", "$f.gcov");
+
}
chdir($start_dir);
}
=== modified file 'mysql-test/lib/process-purecov-annotations.pl'
--- a/mysql-test/lib/process-purecov-annotations.pl 2009-08-25 15:02:55 +0000
+++ b/mysql-test/lib/process-purecov-annotations.pl 2009-09-18 01:15:29 +0000
@@ -47,7 +47,7 @@
#
my @arr= split(/:/, $line);
if ($skipping || $line =~ /purecov: *(inspected|deadcode)/ ||
- $arr[2] =~ m/^{ */)
+ $arr[2] =~ m/^{ *$/)
{
# Change '####' to '-'.
$arr[0] =~ s/#####/ -/g;
@@ -57,8 +57,7 @@
}
close(IN);
close(OUT);
- system("cat $out_file_name > $in_file_name");
- system("rm $out_file_name");
+ system("mv", "-f", $out_file_name, $in_file_name);
}
=== modified file 'storage/maria/CMakeLists.txt'
--- a/storage/maria/CMakeLists.txt 2008-06-09 09:06:06 +0000
+++ b/storage/maria/CMakeLists.txt 2009-09-09 18:11:31 +0000
@@ -50,6 +50,8 @@
ADD_LIBRARY(maria ${MARIA_SOURCES})
+ ADD_DEPENDENCIES(maria GenError)
+
ADD_EXECUTABLE(maria_ftdump maria_ftdump.c)
TARGET_LINK_LIBRARIES(maria_ftdump maria myisam mysys dbug strings zlib wsock32)
1
0
[Maria-developers] Rev 2731: Fix for in file:///Users/hakan/work/monty_program/maria-debug/
by Hakan Kuecuekyilmaz 18 Sep '09
by Hakan Kuecuekyilmaz 18 Sep '09
18 Sep '09
At file:///Users/hakan/work/monty_program/maria-debug/
------------------------------------------------------------
revno: 2731
revision-id: hakan(a)askmonty.org-20090918033054-zi01ib0tg2qt1l7m
parent: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria-debug
timestamp: Fri 2009-09-18 05:30:54 +0200
message:
Fix for
mysqlslap: setting --engine does not get replicated
http://bugs.mysql.com/bug.php?id=46967
and
mysqlslap: specifying --engine and --create does not
work with --engine=<storage_engine>:<option>
https://bugs.launchpad.net/maria/+bug/429773
Problems were that an --engine=<storage_engine> was translated
to a "set storage_engine = <storage_engine>", wich is _not_
replicated. A --engine=<storage_engine>:<option> was not always
properly parsed and in some cases crashed.
Fixed by eliminating "set storage_engine = ..." and adding
proper DDL generation. Initialized an unitialized buffer to
prevent crashes and fixed to use proper pointer for in
case of --engine=<storage_engine>:<option> being the last
element in list of --engines.
Also cleaned up code for better readability.
Q: Should MySQL's replication actually replicate a
"set storage_engine = ..." command or not?
A: No it should not. It is documented here:
http://dev.mysql.com/doc/refman/5.1/en/replication-features-variables.html
...
"The storage_engine system variable is not replicated, which is a
good thing for replication between different storage engines." ...
Before the patch, mysqlslap was behaving this way:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| Before patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | Not OK |
| 1.2 | eng1,eng2 | OK | Not OK |
| 1.3 | eng1,eng2,eng3 | OK | Not OK |
| 1.4 | memory:option | OK | Not OK |
| 1.5 | memory:option,eng1 | OK | Not OK |
| 1.6 | eng1,memory:option | Not OK | Not OK |
| 1.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 1.8 | eng1,memory:option,eng2 | OK | Not OK |
| 1.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | Not OK |
| 2.2 | eng1,eng2 | OK | Not OK |
| 2.3 | eng1,eng2,eng3 | OK | Not OK |
| 2.4 | memory:option | Not OK | Not OK |
| 2.5 | memory:option,eng1 | Not OK | Not OK |
| 2.6 | eng1,memory:option | Not OK | Not OK |
| 2.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 2.8 | eng1,memory:option,eng2 | Not OK | Not OK |
| 2.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
After my final patch, mysqlslap now runs like this:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| After third patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | OK |
| 1.2 | eng1,eng2 | OK | OK |
| 1.3 | eng1,eng2,eng3 | OK | OK |
| 1.4 | memory:option | OK | OK |
| 1.5 | memory:option,eng1 | OK | OK |
| 1.6 | eng1,memory:option | OK | OK |
| 1.7 | memory:option,eng1,eng2 | OK | OK |
| 1.8 | eng1,memory:option,eng2 | OK | OK |
| 1.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | OK |
| 2.2 | eng1,eng2 | OK | OK |
| 2.3 | eng1,eng2,eng3 | OK | OK |
| 2.4 | memory:option | OK | OK |
| 2.5 | memory:option,eng1 | OK | OK |
| 2.6 | eng1,memory:option | OK | OK |
| 2.7 | memory:option,eng1,eng2 | OK | OK |
| 2.8 | eng1,memory:option,eng2 | OK | OK |
| 2.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
=== modified file 'client/mysqlslap.c'
--- a/client/mysqlslap.c 2009-04-25 10:05:32 +0000
+++ b/client/mysqlslap.c 2009-09-18 03:30:54 +0000
@@ -448,7 +448,16 @@
/* First we create */
if (create_statements)
+ {
+ /*
+ If we have an --engine option, then we indicate
+ create_schema() to add the engine type to the DDL.
+ */
+ if (eptr)
+ create_statements->type= CREATE_TABLE_TYPE;
+
create_schema(mysql, create_schema_string, create_statements, eptr);
+ }
/*
If we generated GUID we need to build a list of them from creation that
@@ -588,7 +597,9 @@
"Detach (close and reopen) connections after X number of requests.",
(uchar**) &detach_rate, (uchar**) &detach_rate, 0, GET_UINT, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
- {"engine", 'e', "Storage engine to use for creating the table.",
+ {"engine", 'e', "Comma separated list of storage engines to use for creating the table."
+ "The test is run for each engine. You can also specify an option for an engine"
+ "after a `:', like memory:max_row=2300",
(uchar**) &default_engine, (uchar**) &default_engine, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
@@ -958,6 +969,7 @@
ptr->type= UPDATE_TYPE_REQUIRES_PREFIX ;
else
ptr->type= UPDATE_TYPE;
+
strmov(ptr->string, update_string.str);
dynstr_free(&update_string);
DBUG_RETURN(ptr);
@@ -973,8 +985,8 @@
static statement *
build_insert_string(void)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
DYNAMIC_STRING insert_string;
DBUG_ENTER("build_insert_string");
@@ -1064,8 +1076,8 @@
static statement *
build_select_string(my_bool key)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
static DYNAMIC_STRING query_string;
DBUG_ENTER("build_select_string");
@@ -1117,6 +1129,7 @@
ptr->type= SELECT_TYPE_REQUIRES_PREFIX;
else
ptr->type= SELECT_TYPE;
+
strmov(ptr->string, query_string.str);
dynstr_free(&query_string);
DBUG_RETURN(ptr);
@@ -1175,8 +1188,6 @@
exit(1);
}
-
-
if (auto_generate_sql && num_of_query && auto_actual_queries)
{
fprintf(stderr,
@@ -1217,6 +1228,7 @@
num_int_cols= atoi(str->string);
if (str->option)
num_int_cols_index= atoi(str->option);
+
option_cleanup(str);
}
@@ -1229,6 +1241,7 @@
num_char_cols_index= atoi(str->option);
else
num_char_cols_index= 0;
+
option_cleanup(str);
}
@@ -1463,6 +1476,7 @@
if (tty_password)
opt_password= get_tty_password(NullS);
+
DBUG_RETURN(0);
}
@@ -1477,6 +1491,7 @@
if (verbose >= 3)
printf("%.*s;\n", len, query);
+
return mysql_real_query(mysql, query, len);
}
@@ -1592,18 +1607,6 @@
}
}
- if (engine_stmt)
- {
- len= snprintf(query, HUGE_STRING_LENGTH, "set storage_engine=`%s`",
- engine_stmt->string);
- if (run_query(mysql, query, len))
- {
- fprintf(stderr,"%s: Cannot set default engine: %s\n", my_progname,
- mysql_error(mysql));
- exit(1);
- }
- }
-
count= 0;
after_create= stmt;
@@ -1617,8 +1620,21 @@
{
char buffer[HUGE_STRING_LENGTH];
- snprintf(buffer, HUGE_STRING_LENGTH, "%s %s", ptr->string,
- engine_stmt->option);
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s %s",
+ ptr->string, engine_stmt->string, engine_stmt->option);
+ if (run_query(mysql, buffer, strlen(buffer)))
+ {
+ fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
+ my_progname, (uint)ptr->length, ptr->string, mysql_error(mysql));
+ exit(1);
+ }
+ }
+ else if (engine_stmt && engine_stmt->string && ptr->type == CREATE_TABLE_TYPE)
+ {
+ char buffer[HUGE_STRING_LENGTH];
+
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s",
+ ptr->string, engine_stmt->string);
if (run_query(mysql, buffer, strlen(buffer)))
{
fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
@@ -1652,6 +1668,7 @@
{
char query[HUGE_STRING_LENGTH];
int len;
+
DBUG_ENTER("drop_schema");
len= snprintf(query, HUGE_STRING_LENGTH, "DROP SCHEMA IF EXISTS `%s`", db);
@@ -1940,17 +1957,27 @@
uint count= 0; /* We know that there is always one */
for (tmp= *sptr= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
(retstr= strchr(ptr, delm));
tmp->next= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
tmp= tmp->next)
{
- char buffer[HUGE_STRING_LENGTH];
+ /*
+ Initialize buffer, because otherwise an
+ --engine=<storage_engine>:<option>,<eng1>,<eng2>
+ will crash.
+ */
+ char buffer[HUGE_STRING_LENGTH]= "";
char *buffer_ptr;
count++;
strncpy(buffer, ptr, (size_t)(retstr - ptr));
+ /*
+ Handle --engine=memory:max_row=200 cases, or more general speaking
+ --engine=<storage_engine>:<options>, which will be translated to
+ Engine = storage_engine option.
+ */
if ((buffer_ptr= strchr(buffer, ':')))
{
char *option_ptr;
@@ -1971,13 +1998,15 @@
tmp->length= (size_t)(retstr - ptr);
}
+ /* Skip delimiter delm */
ptr+= retstr - ptr + 1;
if (isspace(*ptr))
ptr++;
+
count++;
}
- if (ptr != origin+length)
+ if (ptr != origin + length)
{
char *origin_ptr;
@@ -1986,7 +2015,7 @@
char *option_ptr;
tmp->length= (size_t)(origin_ptr - ptr);
- tmp->string= my_strndup(origin, tmp->length, MYF(MY_FAE));
+ tmp->string= my_strndup(ptr, tmp->length, MYF(MY_FAE));
option_ptr= (char *)ptr + 1 + tmp->length;
@@ -2036,7 +2065,7 @@
if (ptr != script+length)
{
tmp->string= my_strndup(ptr, (uint)((script + length) - ptr),
- MYF(MY_FAE));
+ MYF(MY_FAE));
tmp->length= (size_t)((script + length) - ptr);
count++;
}
@@ -2094,6 +2123,7 @@
{
char buffer[HUGE_STRING_LENGTH];
const char *ptr= auto_generate_sql_type ? auto_generate_sql_type : "query";
+
snprintf(buffer, HUGE_STRING_LENGTH,
"%s,%s,%ld.%03ld,%ld.%03ld,%ld.%03ld,%d,%llu\n",
con->engine ? con->engine : "", /* Storage engine we ran against */
1
0
[Maria-developers] [Branch ~maria-captains/maria/5.1] Rev 2732: Gcov support improvements
by noreply@launchpad.net 18 Sep '09
by noreply@launchpad.net 18 Sep '09
18 Sep '09
------------------------------------------------------------
revno: 2732
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1
timestamp: Fri 2009-09-18 05:15:29 +0400
message:
Gcov support improvements
- address review feedback (cleaner perl code)
modified:
mysql-test/lib/mtr_gcov.pl
mysql-test/lib/process-purecov-annotations.pl
--
lp:maria
https://code.launchpad.net/~maria-captains/maria/5.1
Your team Maria developers is subscribed to branch lp:maria.
To unsubscribe from this branch go to https://code.launchpad.net/~maria-captains/maria/5.1/+edit-subscription.
1
0
[Maria-developers] Rev 2747: Gcov support improvements in file:///home/psergey/dev/maria-5.1-table-elim-r11-gcov/
by Sergey Petrunya 18 Sep '09
by Sergey Petrunya 18 Sep '09
18 Sep '09
At file:///home/psergey/dev/maria-5.1-table-elim-r11-gcov/
------------------------------------------------------------
revno: 2747
revision-id: psergey(a)askmonty.org-20090825150255-46i5gvl2ctd0jcm2
parent: psergey(a)askmonty.org-20090825145915-rxwmfczgqe69r5ju
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11-gcov
timestamp: Tue 2009-08-25 18:02:55 +0300
message:
Gcov support improvements
- add process-gcov-annotations.pl script that processes .gcov files
according to purecov annotations in source code
- add --gcov-src-dir=subdir option to mysql-test-run so that one can
do gcov processing only for source files in a certain directory.
=== modified file 'mysql-test/lib/mtr_gcov.pl'
--- a/mysql-test/lib/mtr_gcov.pl 2009-04-25 09:04:38 +0000
+++ b/mysql-test/lib/mtr_gcov.pl 2009-08-25 15:02:55 +0000
@@ -20,6 +20,8 @@
use strict;
+our $basedir;
+
sub gcov_prepare ($) {
my ($dir)= @_;
print "Purging gcov information from '$dir'...\n";
@@ -42,7 +44,7 @@
# Get current directory to return to later.
my $start_dir= cwd();
- print "Collecting source coverage info using '$gcov'...\n";
+ print "Collecting source coverage info using '$gcov'...$basedir\n";
-f "$start_dir/$gcov_msg" and unlink("$start_dir/$gcov_msg");
-f "$start_dir/$gcov_err" and unlink("$start_dir/$gcov_err");
@@ -62,6 +64,7 @@
$dir_reported= 1;
}
system("$gcov $f 2>>$start_dir/$gcov_err >>$start_dir/$gcov_msg");
+ system("perl $basedir/mysql-test/lib/process-purecov-annotations.pl $f.gcov");
}
chdir($start_dir);
}
=== added file 'mysql-test/lib/process-purecov-annotations.pl'
--- a/mysql-test/lib/process-purecov-annotations.pl 1970-01-01 00:00:00 +0000
+++ b/mysql-test/lib/process-purecov-annotations.pl 2009-08-25 15:02:55 +0000
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+# -*- cperl -*-
+
+# This script processes a .gcov coverage report to honor purecov
+# annotations: lines marked as inspected or as deadcode are changed
+# from looking like lines with code that was never executed to look
+# like lines that have no executable code.
+
+use strict;
+use warnings;
+
+foreach my $in_file_name ( @ARGV )
+{
+ my $out_file_name=$in_file_name . ".tmp";
+ my $skipping=0;
+
+ open(IN, "<", $in_file_name) || next;
+ open(OUT, ">", $out_file_name);
+ while(<IN>)
+ {
+ my $line= $_;
+ my $check= $line;
+
+ # process purecov: start/end multi-blocks
+ my $started=0;
+ my $ended= 0;
+ while (($started=($check =~ s/purecov: *begin *(deadcode|inspected)//)) ||
+ ($ended=($check =~ s/purecov: *end//)))
+ {
+ $skipping= $skipping + $started - $ended;
+ }
+ if ($skipping < 0)
+ {
+ print OUT "WARNING: #####: incorrect order of purecov begin/end annotations\n";
+ $skipping= 0;
+ }
+
+ # Besides purecov annotations, also remove uncovered code mark from cases
+ # like the following:
+ #
+ # -: 211:*/
+ # -: 212:class Field_value : public Value_dep
+ # #####: 213:{
+ # -: 214:public:
+ #
+ # I have no idea why would gcov think there is uncovered code there
+ #
+ my @arr= split(/:/, $line);
+ if ($skipping || $line =~ /purecov: *(inspected|deadcode)/ ||
+ $arr[2] =~ m/^{ */)
+ {
+ # Change '####' to '-'.
+ $arr[0] =~ s/#####/ -/g;
+ $line= join(":", @arr);
+ }
+ print OUT $line;
+ }
+ close(IN);
+ close(OUT);
+ system("cat $out_file_name > $in_file_name");
+ system("rm $out_file_name");
+}
+
+
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-06-22 08:06:35 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-08-25 15:02:55 +0000
@@ -169,6 +169,7 @@
our $opt_mem= $ENV{'MTR_MEM'};
our $opt_gcov;
+our $opt_gcov_src_dir;
our $opt_gcov_exe= "gcov";
our $opt_gcov_err= "mysql-test-gcov.msg";
our $opt_gcov_msg= "mysql-test-gcov.err";
@@ -270,7 +271,7 @@
command_line_setup();
if ( $opt_gcov ) {
- gcov_prepare($basedir);
+ gcov_prepare($basedir . "/" . $opt_gcov_src_dir);
}
if (!$opt_suites) {
@@ -416,7 +417,7 @@
mtr_print_line();
if ( $opt_gcov ) {
- gcov_collect($basedir, $opt_gcov_exe,
+ gcov_collect($basedir . "/" . $opt_gcov_src_dir, $opt_gcov_exe,
$opt_gcov_msg, $opt_gcov_err);
}
@@ -882,6 +883,7 @@
# Coverage, profiling etc
'gcov' => \$opt_gcov,
+ 'gcov-src-dir=s' => \$opt_gcov_src_dir,
'valgrind|valgrind-all' => \$opt_valgrind,
'valgrind-mysqltest' => \$opt_valgrind_mysqltest,
'valgrind-mysqld' => \$opt_valgrind_mysqld,
@@ -5397,6 +5399,9 @@
actions. Disable facility with NUM=0.
gcov Collect coverage information after the test.
The result is a gcov file per source and header file.
+ gcov-src-dir=subdir Colllect coverage only within the given subdirectory.
+ For example, if you're only developing the SQL layer,
+ it makes sense to use --gcov-src-dir=sql
HERE
exit(1);
2
2
[Maria-developers] Rev 2732: Gcov support improvements in file:///home/psergey/dev/maria-5.1/
by Sergey Petrunya 18 Sep '09
by Sergey Petrunya 18 Sep '09
18 Sep '09
At file:///home/psergey/dev/maria-5.1/
------------------------------------------------------------
revno: 2732
revision-id: psergey(a)askmonty.org-20090918011529-3d7glu6ot7n0xqc9
parent: igor(a)mysql.com-20090909181131-6jb3y48zxnz42zyb
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1
timestamp: Fri 2009-09-18 05:15:29 +0400
message:
Gcov support improvements
- address review feedback (cleaner perl code)
=== modified file 'mysql-test/lib/mtr_gcov.pl'
--- a/mysql-test/lib/mtr_gcov.pl 2009-08-25 15:02:55 +0000
+++ b/mysql-test/lib/mtr_gcov.pl 2009-09-18 01:15:29 +0000
@@ -64,7 +64,8 @@
$dir_reported= 1;
}
system("$gcov $f 2>>$start_dir/$gcov_err >>$start_dir/$gcov_msg");
- system("perl $basedir/mysql-test/lib/process-purecov-annotations.pl $f.gcov");
+ system("perl", "$basedir/mysql-test/lib/process-purecov-annotations.pl", "$f.gcov");
+
}
chdir($start_dir);
}
=== modified file 'mysql-test/lib/process-purecov-annotations.pl'
--- a/mysql-test/lib/process-purecov-annotations.pl 2009-08-25 15:02:55 +0000
+++ b/mysql-test/lib/process-purecov-annotations.pl 2009-09-18 01:15:29 +0000
@@ -47,7 +47,7 @@
#
my @arr= split(/:/, $line);
if ($skipping || $line =~ /purecov: *(inspected|deadcode)/ ||
- $arr[2] =~ m/^{ */)
+ $arr[2] =~ m/^{ *$/)
{
# Change '####' to '-'.
$arr[0] =~ s/#####/ -/g;
@@ -57,8 +57,7 @@
}
close(IN);
close(OUT);
- system("cat $out_file_name > $in_file_name");
- system("rm $out_file_name");
+ system("mv", "-f", $out_file_name, $in_file_name);
}
1
0
[Maria-developers] Rev 2746: Fix mysql-test-run on windows: in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 18 Sep '09
by Sergey Petrunya 18 Sep '09
18 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2746
revision-id: psergey(a)askmonty.org-20090917001350-pyxja2suxylxhez1
parent: psergey(a)askmonty.org-20090916190503-kgckwua1roxhonsy
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Thu 2009-09-17 04:13:50 +0400
message:
Fix mysql-test-run on windows:
- Make it not to add '--console' when '--log-error' option is present
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-15 10:46:35 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-09-17 00:13:50 +0000
@@ -4433,7 +4433,9 @@
if (IS_WINDOWS)
{
# Trick the server to send output to stderr, with --console
- mtr_add_arg($args, "--console");
+ if (!(join(' ', @$args) =~ /--log-error/)) {
+ mtr_add_arg($args, "--console");
+ }
}
if ( $opt_gdb || $opt_manual_gdb )
@@ -5056,7 +5058,9 @@
if (IS_WINDOWS)
{
# Trick the server to send output to stderr, with --console
- mtr_add_arg($args, "--server-arg=--console");
+ if (!(join(' ', @$args) =~ /--log-error/)) {
+ mtr_add_arg($args, "--server-arg=--console");
+ }
}
}
2
2
[Maria-developers] Rev 2750: A change of direction for fix 10 csets ago: in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 18 Sep '09
by Sergey Petrunya 18 Sep '09
18 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2750
revision-id: psergey(a)askmonty.org-20090918010443-56tli4pjvy9gb4cs
parent: psergey(a)askmonty.org-20090918005527-k589m56f8q89zwol
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Fri 2009-09-18 05:04:43 +0400
message:
A change of direction for fix 10 csets ago:
- When the table is created with an attribute that is not supported by
the storage engine, the attribute ought to be still kept.
=== modified file 'mysql-test/r/myisam.result'
--- a/mysql-test/r/myisam.result 2009-09-07 20:50:10 +0000
+++ b/mysql-test/r/myisam.result 2009-09-18 01:04:43 +0000
@@ -2234,7 +2234,7 @@
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 TRANSACTIONAL=1
drop table t1;
CREATE TABLE t1 (line LINESTRING NOT NULL) engine=myisam;
INSERT INTO t1 VALUES (GeomFromText("POINT(0 0)"));
=== modified file 'mysql-test/suite/maria/r/maria3.result'
--- a/mysql-test/suite/maria/r/maria3.result 2009-09-16 18:25:18 +0000
+++ b/mysql-test/suite/maria/r/maria3.result 2009-09-18 01:04:43 +0000
@@ -518,7 +518,7 @@
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
drop table t1;
create table t1 (n int not null, c char(1)) engine=myisam transactional=1;
Warnings:
@@ -529,7 +529,7 @@
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
drop table t1;
create table t1 (a int, key(a)) transactional=0;
insert into t1 values (0),(1),(2),(3),(4);
=== modified file 'mysql-test/t/myisam.test'
--- a/mysql-test/t/myisam.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/myisam.test 2009-09-18 01:04:43 +0000
@@ -1478,7 +1478,10 @@
--exec $MYISAMCHK -d $MYSQLD_DATADIR/test/t1
DROP TABLE t1;
+#
# Test warnings with transactional=1 with MyISAM
+# MariaDB: Note that the table will still have 'TRANSACTIONAL=1' attribute.
+# That's the intended behavior atm.
#
create table t1 (n int not null, c char(1)) transactional=1;
show create table t1;
=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc 2009-09-16 11:31:20 +0000
+++ b/sql/sql_table.cc 2009-09-18 01:04:43 +0000
@@ -3747,19 +3747,11 @@
/* Give warnings for not supported table options */
if (create_info->transactional && !file->ht->commit)
- {
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
ER_ILLEGAL_HA_CREATE_OPTION,
ER(ER_ILLEGAL_HA_CREATE_OPTION),
file->engine_name()->str,
"TRANSACTIONAL=1");
- /*
- MariaDB: need to do the same for row_format and page_checksum
- options. See MBUG#425916
- */
- create_info->transactional= HA_CHOICE_UNDEF;
- create_info->used_fields &= ~HA_CREATE_USED_TRANSACTIONAL;
- }
VOID(pthread_mutex_lock(&LOCK_open));
if (!internal_tmp_table && !(create_info->options & HA_LEX_CREATE_TMP_TABLE))
1
0
[Maria-developers] Rev 2749: Fix mysql-test-run on windows: in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 18 Sep '09
by Sergey Petrunya 18 Sep '09
18 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2749
revision-id: psergey(a)askmonty.org-20090918005527-k589m56f8q89zwol
parent: psergey(a)askmonty.org-20090917230109-mni2vfp5mtgxpbhw
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Fri 2009-09-18 04:55:27 +0400
message:
Fix mysql-test-run on windows:
Make it not to add '--console' when '--log-error' option is present
- Review feedback
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-09-17 00:13:50 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-09-18 00:55:27 +0000
@@ -4433,7 +4433,7 @@
if (IS_WINDOWS)
{
# Trick the server to send output to stderr, with --console
- if (!(join(' ', @$args) =~ /--log-error/)) {
+ if (!(grep(/^--log-error/, @$args))) {
mtr_add_arg($args, "--console");
}
}
@@ -5058,7 +5058,7 @@
if (IS_WINDOWS)
{
# Trick the server to send output to stderr, with --console
- if (!(join(' ', @$args) =~ /--log-error/)) {
+ if (!(grep(/^--server-arg=--log-error/, @$args))) {
mtr_add_arg($args, "--server-arg=--console");
}
}
1
0
[Maria-developers] Rev 2748: Apply Igor's fix: in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 18 Sep '09
by Sergey Petrunya 18 Sep '09
18 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2748
revision-id: psergey(a)askmonty.org-20090917230109-mni2vfp5mtgxpbhw
parent: psergey(a)askmonty.org-20090917224610-zeizjpwa3xp740bs
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Fri 2009-09-18 03:01:09 +0400
message:
Apply Igor's fix:
Fixed a failure of the merge_innodb test on windows.
=== modified file 'storage/myisammrg/ha_myisammrg.cc'
--- a/storage/myisammrg/ha_myisammrg.cc 2009-09-07 20:50:10 +0000
+++ b/storage/myisammrg/ha_myisammrg.cc 2009-09-17 23:01:09 +0000
@@ -309,7 +309,7 @@
TABLE *parent;
TABLE *child;
TABLE_LIST *child_l;
- MI_INFO *myisam;
+ MI_INFO *myisam= NULL;
DBUG_ENTER("myisammrg_attach_children_callback");
my_errno= 0;
1
0
[Maria-developers] Rev 2747: Apply the following MySQL's fix: in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 18 Sep '09
by Sergey Petrunya 18 Sep '09
18 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2747
revision-id: psergey(a)askmonty.org-20090917224610-zeizjpwa3xp740bs
parent: psergey(a)askmonty.org-20090917001350-pyxja2suxylxhez1
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Fri 2009-09-18 02:46:10 +0400
message:
Apply the following MySQL's fix:
Bug #46212 safe_process: FATAL ERROR, Unknown option: --nocore
Also fixed mysqld.cc to avoid popup-boxes
=== modified file 'mysql-test/lib/My/SafeProcess/safe_process_win.cc'
--- a/mysql-test/lib/My/SafeProcess/safe_process_win.cc 2009-05-14 19:56:53 +0000
+++ b/mysql-test/lib/My/SafeProcess/safe_process_win.cc 2009-09-17 22:46:10 +0000
@@ -163,6 +163,7 @@
HANDLE job_handle;
HANDLE wait_handles[NUM_HANDLES]= {0};
PROCESS_INFORMATION process_info= {0};
+ BOOL nocore= FALSE;
sprintf(safe_process_name, "safe_process[%d]", pid);
@@ -192,18 +193,22 @@
}
break;
} else {
- if ( strcmp(arg, "--verbose") == 0 )
+ if (strcmp(arg, "--verbose") == 0)
verbose++;
- else if ( strncmp(arg, "--parent-pid", 10) == 0 )
- {
- /* Override parent_pid with a value provided by user */
- const char* start;
+ else if (strncmp(arg, "--parent-pid", 10) == 0)
+ {
+ /* Override parent_pid with a value provided by user */
+ const char* start;
if ((start= strstr(arg, "=")) == NULL)
- die("Could not find start of option value in '%s'", arg);
- start++; /* Step past = */
- if ((parent_pid= atoi(start)) == 0)
- die("Invalid value '%s' passed to --parent-id", start);
- }
+ die("Could not find start of option value in '%s'", arg);
+ start++; /* Step past = */
+ if ((parent_pid= atoi(start)) == 0)
+ die("Invalid value '%s' passed to --parent-id", start);
+ }
+ else if (strcmp(arg, "--nocore") == 0)
+ {
+ nocore= TRUE;
+ }
else
die("Unknown option: %s", arg);
}
@@ -241,6 +246,11 @@
&jeli, sizeof(jeli)) == 0)
message("SetInformationJobObject failed, continue anyway...");
+ /* Avoid popup box */
+ if (nocore)
+ SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX
+ | SEM_NOOPENFILEERRORBOX);
+
#if 0
/* Setup stdin, stdout and stderr redirect */
si.dwFlags= STARTF_USESTDHANDLES;
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc 2009-09-15 10:46:35 +0000
+++ b/sql/mysqld.cc 2009-09-17 22:46:10 +0000
@@ -2194,15 +2194,14 @@
win_install_sigabrt_handler();
if(opt_console)
SetConsoleCtrlHandler(console_event_handler,TRUE);
- else
- {
+
/* Avoid MessageBox()es*/
- _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
- _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
- _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
- _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
- _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
- _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);
+ _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
+ _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
+ _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
+ _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
+ _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
+ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);
/*
Do not use SEM_NOGPFAULTERRORBOX in the following SetErrorMode (),
@@ -2211,8 +2210,8 @@
exception filter is not guaranteed to work in all situation
(like heap corruption or stack overflow)
*/
- SetErrorMode(SetErrorMode(0)|SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX);
- }
+ SetErrorMode(SetErrorMode(0) | SEM_FAILCRITICALERRORS
+ | SEM_NOOPENFILEERRORBOX);
SetUnhandledExceptionFilter(my_unhandler_exception_filter);
}
1
0
[Maria-developers] Rev 2731: Fix for in file:///Users/hakan/work/monty_program/maria-debug/
by Hakan Kuecuekyilmaz 17 Sep '09
by Hakan Kuecuekyilmaz 17 Sep '09
17 Sep '09
At file:///Users/hakan/work/monty_program/maria-debug/
------------------------------------------------------------
revno: 2731
revision-id: hakan(a)askmonty.org-20090917072332-xjnvyigid29r77ih
parent: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria-debug
timestamp: Thu 2009-09-17 09:23:32 +0200
message:
Fix for
mysqlslap: setting --engine does not get replicated
http://bugs.mysql.com/bug.php?id=46967
and
mysqlslap: specifying --engine and --create does not
work with --engine=<storage_engine>:<option>
https://bugs.launchpad.net/maria/+bug/429773
Problems were that an --engine=<storage_engine> was translated
to a "set storage_engine = <storage_engine>", wich is _not_
replicated. A --engine=<storage_engine>:<option> was not always
properly parsed and in some cases crashed.
Fixed by eliminating "set storage_engine = ..." and adding
proper DDL generation. Initialized an unitialized buffer to
prevent crashes and fixed to use proper pointer for in
case of --engine=<storage_engine>:<option> being the last
element in list of --engines.
Also cleaned up code for better readability.
Q: Should MySQL's replication actually replicate a
"set storage_engine = ..." command or not?
A: No it should not. It is documented here:
http://dev.mysql.com/doc/refman/5.1/en/replication-features-variables.html
...
"The storage_engine system variable is not replicated, which is a
good thing for replication between different storage engines." ...
Before the patch, mysqlslap was behaving this way:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| Before patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | Not OK |
| 1.2 | eng1,eng2 | OK | Not OK |
| 1.3 | eng1,eng2,eng3 | OK | Not OK |
| 1.4 | memory:option | OK | Not OK |
| 1.5 | memory:option,eng1 | OK | Not OK |
| 1.6 | eng1,memory:option | Not OK | Not OK |
| 1.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 1.8 | eng1,memory:option,eng2 | OK | Not OK |
| 1.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | Not OK |
| 2.2 | eng1,eng2 | OK | Not OK |
| 2.3 | eng1,eng2,eng3 | OK | Not OK |
| 2.4 | memory:option | Not OK | Not OK |
| 2.5 | memory:option,eng1 | Not OK | Not OK |
| 2.6 | eng1,memory:option | Not OK | Not OK |
| 2.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 2.8 | eng1,memory:option,eng2 | Not OK | Not OK |
| 2.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
After my final patch, mysqlslap now runs like this:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| After third patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | OK |
| 1.2 | eng1,eng2 | OK | OK |
| 1.3 | eng1,eng2,eng3 | OK | OK |
| 1.4 | memory:option | OK | OK |
| 1.5 | memory:option,eng1 | OK | OK |
| 1.6 | eng1,memory:option | OK | OK |
| 1.7 | memory:option,eng1,eng2 | OK | OK |
| 1.8 | eng1,memory:option,eng2 | OK | OK |
| 1.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | OK |
| 2.2 | eng1,eng2 | OK | OK |
| 2.3 | eng1,eng2,eng3 | OK | OK |
| 2.4 | memory:option | OK | OK |
| 2.5 | memory:option,eng1 | OK | OK |
| 2.6 | eng1,memory:option | OK | OK |
| 2.7 | memory:option,eng1,eng2 | OK | OK |
| 2.8 | eng1,memory:option,eng2 | OK | OK |
| 2.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
...
=== modified file 'client/mysqlslap.c'
--- a/client/mysqlslap.c 2009-04-25 10:05:32 +0000
+++ b/client/mysqlslap.c 2009-09-17 07:23:32 +0000
@@ -448,7 +448,16 @@
/* First we create */
if (create_statements)
+ {
+ /*
+ If we have an --engine option, then we indicate
+ create_schema() to add the engine type to the DDL.
+ */
+ if (eptr)
+ create_statements->type= CREATE_TABLE_TYPE;
+
create_schema(mysql, create_schema_string, create_statements, eptr);
+ }
/*
If we generated GUID we need to build a list of them from creation that
@@ -588,7 +597,9 @@
"Detach (close and reopen) connections after X number of requests.",
(uchar**) &detach_rate, (uchar**) &detach_rate, 0, GET_UINT, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
- {"engine", 'e', "Storage engine to use for creating the table.",
+ {"engine", 'e', "Comma separated list of storage engines to use for creating the table."
+ "The test is run for each engine. You can also specify an option for an engine"
+ "after a `:', like memory:max_row=2300",
(uchar**) &default_engine, (uchar**) &default_engine, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
@@ -958,6 +969,7 @@
ptr->type= UPDATE_TYPE_REQUIRES_PREFIX ;
else
ptr->type= UPDATE_TYPE;
+
strmov(ptr->string, update_string.str);
dynstr_free(&update_string);
DBUG_RETURN(ptr);
@@ -973,8 +985,8 @@
static statement *
build_insert_string(void)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
DYNAMIC_STRING insert_string;
DBUG_ENTER("build_insert_string");
@@ -1064,8 +1076,8 @@
static statement *
build_select_string(my_bool key)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
static DYNAMIC_STRING query_string;
DBUG_ENTER("build_select_string");
@@ -1117,6 +1129,7 @@
ptr->type= SELECT_TYPE_REQUIRES_PREFIX;
else
ptr->type= SELECT_TYPE;
+
strmov(ptr->string, query_string.str);
dynstr_free(&query_string);
DBUG_RETURN(ptr);
@@ -1175,8 +1188,6 @@
exit(1);
}
-
-
if (auto_generate_sql && num_of_query && auto_actual_queries)
{
fprintf(stderr,
@@ -1217,6 +1228,7 @@
num_int_cols= atoi(str->string);
if (str->option)
num_int_cols_index= atoi(str->option);
+
option_cleanup(str);
}
@@ -1229,6 +1241,7 @@
num_char_cols_index= atoi(str->option);
else
num_char_cols_index= 0;
+
option_cleanup(str);
}
@@ -1463,6 +1476,7 @@
if (tty_password)
opt_password= get_tty_password(NullS);
+
DBUG_RETURN(0);
}
@@ -1477,6 +1491,7 @@
if (verbose >= 3)
printf("%.*s;\n", len, query);
+
return mysql_real_query(mysql, query, len);
}
@@ -1592,18 +1607,6 @@
}
}
- if (engine_stmt)
- {
- len= snprintf(query, HUGE_STRING_LENGTH, "set storage_engine=`%s`",
- engine_stmt->string);
- if (run_query(mysql, query, len))
- {
- fprintf(stderr,"%s: Cannot set default engine: %s\n", my_progname,
- mysql_error(mysql));
- exit(1);
- }
- }
-
count= 0;
after_create= stmt;
@@ -1617,8 +1620,21 @@
{
char buffer[HUGE_STRING_LENGTH];
- snprintf(buffer, HUGE_STRING_LENGTH, "%s %s", ptr->string,
- engine_stmt->option);
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s %s",
+ ptr->string, engine_stmt->string, engine_stmt->option);
+ if (run_query(mysql, buffer, strlen(buffer)))
+ {
+ fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
+ my_progname, (uint)ptr->length, ptr->string, mysql_error(mysql));
+ exit(1);
+ }
+ }
+ else if (engine_stmt && engine_stmt->string && ptr->type == CREATE_TABLE_TYPE)
+ {
+ char buffer[HUGE_STRING_LENGTH];
+
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s",
+ ptr->string, engine_stmt->string);
if (run_query(mysql, buffer, strlen(buffer)))
{
fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
@@ -1652,6 +1668,7 @@
{
char query[HUGE_STRING_LENGTH];
int len;
+
DBUG_ENTER("drop_schema");
len= snprintf(query, HUGE_STRING_LENGTH, "DROP SCHEMA IF EXISTS `%s`", db);
@@ -1940,17 +1957,22 @@
uint count= 0; /* We know that there is always one */
for (tmp= *sptr= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
(retstr= strchr(ptr, delm));
tmp->next= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
tmp= tmp->next)
{
- char buffer[HUGE_STRING_LENGTH];
+ char buffer[HUGE_STRING_LENGTH]= "";
char *buffer_ptr;
count++;
strncpy(buffer, ptr, (size_t)(retstr - ptr));
+ /*
+ Handle --engine=memory:max_row=200 cases, or more general speaking
+ --engine=<storage_engine>:<options>. --engine=<storage_engine:option
+ will be translated to Engine = storage_engine option
+ */
if ((buffer_ptr= strchr(buffer, ':')))
{
char *option_ptr;
@@ -1971,13 +1993,15 @@
tmp->length= (size_t)(retstr - ptr);
}
+ /* Skip delimiter delm */
ptr+= retstr - ptr + 1;
if (isspace(*ptr))
ptr++;
+
count++;
}
- if (ptr != origin+length)
+ if (ptr != origin + length)
{
char *origin_ptr;
@@ -1986,7 +2010,7 @@
char *option_ptr;
tmp->length= (size_t)(origin_ptr - ptr);
- tmp->string= my_strndup(origin, tmp->length, MYF(MY_FAE));
+ tmp->string= my_strndup(ptr, tmp->length, MYF(MY_FAE));
option_ptr= (char *)ptr + 1 + tmp->length;
@@ -2036,7 +2060,7 @@
if (ptr != script+length)
{
tmp->string= my_strndup(ptr, (uint)((script + length) - ptr),
- MYF(MY_FAE));
+ MYF(MY_FAE));
tmp->length= (size_t)((script + length) - ptr);
count++;
}
@@ -2094,6 +2118,7 @@
{
char buffer[HUGE_STRING_LENGTH];
const char *ptr= auto_generate_sql_type ? auto_generate_sql_type : "query";
+
snprintf(buffer, HUGE_STRING_LENGTH,
"%s,%s,%ld.%03ld,%ld.%03ld,%ld.%03ld,%d,%llu\n",
con->engine ? con->engine : "", /* Storage engine we ran against */
2
1
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2744)
by Igor Babaev 17 Sep '09
by Igor Babaev 17 Sep '09
17 Sep '09
#At lp:maria based on revid:igor@askmonty.org-20090916174301-lzzh1r0khn3dxwvp
2744 Igor Babaev 2009-09-16
Fixed a failure of the merge_innodb test on windows.
modified:
storage/myisammrg/ha_myisammrg.cc
=== modified file 'storage/myisammrg/ha_myisammrg.cc'
--- a/storage/myisammrg/ha_myisammrg.cc 2009-09-07 20:50:10 +0000
+++ b/storage/myisammrg/ha_myisammrg.cc 2009-09-17 03:36:21 +0000
@@ -309,7 +309,7 @@ static MI_INFO *myisammrg_attach_childre
TABLE *parent;
TABLE *child;
TABLE_LIST *child_l;
- MI_INFO *myisam;
+ MI_INFO *myisam= NULL;
DBUG_ENTER("myisammrg_attach_children_callback");
my_errno= 0;
2
2
[Maria-developers] Rev 2745: MWL#17: Table elimination: fixes for windows in file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
by Sergey Petrunya 16 Sep '09
by Sergey Petrunya 16 Sep '09
16 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
------------------------------------------------------------
revno: 2745
revision-id: psergey(a)askmonty.org-20090916190503-kgckwua1roxhonsy
parent: psergey(a)askmonty.org-20090916184547-z63saem4y90zd0u8
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd3
timestamp: Wed 2009-09-16 23:05:03 +0400
message:
MWL#17: Table elimination: fixes for windows
=== modified file 'include/my_global.h'
--- a/include/my_global.h 2009-09-15 10:46:35 +0000
+++ b/include/my_global.h 2009-09-16 19:05:03 +0000
@@ -925,6 +925,7 @@
#define MY_ALIGN(A,L) (((A) + (L) - 1) & ~((L) - 1))
#define ALIGN_SIZE(A) MY_ALIGN((A),sizeof(double))
+#define ALIGN_MAX_UNIT (sizeof(double))
/* Size to make adressable obj. */
#define ALIGN_PTR(A, t) ((t*) MY_ALIGN((A), sizeof(double)))
#define OFFSET(t, f) ((size_t)(char *)&((t *)0)->f)
=== modified file 'mysql-test/r/table_elim.result'
--- a/mysql-test/r/table_elim.result 2009-08-26 21:01:40 +0000
+++ b/mysql-test/r/table_elim.result 2009-09-16 19:05:03 +0000
@@ -98,78 +98,78 @@
insert into t2 select id, id+1, date_add('2008-06-22', interval id day) from t0;
create view v1 as
select
-F.id, A1.attr1, A2.attr2
+f.id, a1.attr1, a2.attr2
from
-t0 F
-left join t1 A1 on A1.id=F.id
-left join t2 A2 on A2.id=F.id and
-A2.fromdate=(select MAX(fromdate) from
-t2 where id=A2.id);
+t0 f
+left join t1 a1 on a1.id=f.id
+left join t2 a2 on a2.id=f.id and
+a2.fromdate=(select MAX(fromdate) from
+t2 where id=a2.id);
create view v2 as
select
-F.id, A1.attr1, A2.attr2
+f.id, a1.attr1, a2.attr2
from
-t0 F
-left join t1 A1 on A1.id=F.id
-left join t2 A2 on A2.id=F.id and
-A2.fromdate=(select MAX(fromdate) from
-t2 where id=F.id);
+t0 f
+left join t1 a1 on a1.id=f.id
+left join t2 a2 on a2.id=f.id and
+a2.fromdate=(select MAX(fromdate) from
+t2 where id=f.id);
This should use one table:
explain select id from v1 where id=2;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY F const PRIMARY PRIMARY 4 const 1 Using index
+1 PRIMARY f const PRIMARY PRIMARY 4 const 1 Using index
This should use one table:
explain extended select id from v1 where id in (1,2,3,4);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY F range PRIMARY PRIMARY 4 NULL 4 100.00 Using where; Using index
+1 PRIMARY f range PRIMARY PRIMARY 4 NULL 4 100.00 Using where; Using index
Warnings:
-Note 1276 Field or reference 'test.A2.id' of SELECT #3 was resolved in SELECT #1
-Note 1003 select `F`.`id` AS `id` from `test`.`t0` `F` where (`F`.`id` in (1,2,3,4))
-This should use facts and A1 tables:
+Note 1276 Field or reference 'test.a2.id' of SELECT #3 was resolved in SELECT #1
+Note 1003 select `f`.`id` AS `id` from `test`.`t0` `f` where (`f`.`id` in (1,2,3,4))
+This should use facts and a1 tables:
explain extended select id from v1 where attr1 between 12 and 14;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY A1 range PRIMARY,attr1 attr1 5 NULL 2 100.00 Using where
-1 PRIMARY F eq_ref PRIMARY PRIMARY 4 test.A1.id 1 100.00 Using index
+1 PRIMARY a1 range PRIMARY,attr1 attr1 5 NULL 2 100.00 Using where
+1 PRIMARY f eq_ref PRIMARY PRIMARY 4 test.a1.id 1 100.00 Using index
Warnings:
-Note 1276 Field or reference 'test.A2.id' of SELECT #3 was resolved in SELECT #1
-Note 1003 select `F`.`id` AS `id` from `test`.`t0` `F` join `test`.`t1` `A1` where ((`F`.`id` = `A1`.`id`) and (`A1`.`attr1` between 12 and 14))
-This should use facts, A2 and its subquery:
+Note 1276 Field or reference 'test.a2.id' of SELECT #3 was resolved in SELECT #1
+Note 1003 select `f`.`id` AS `id` from `test`.`t0` `f` join `test`.`t1` `a1` where ((`f`.`id` = `a1`.`id`) and (`a1`.`attr1` between 12 and 14))
+This should use facts, a2 and its subquery:
explain extended select id from v1 where attr2 between 12 and 14;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY A2 range PRIMARY,attr2 attr2 5 NULL 5 100.00 Using where
-1 PRIMARY F eq_ref PRIMARY PRIMARY 4 test.A2.id 1 100.00 Using index
-3 DEPENDENT SUBQUERY t2 ref PRIMARY PRIMARY 4 test.A2.id 2 100.00 Using index
+1 PRIMARY a2 range PRIMARY,attr2 attr2 5 NULL 5 100.00 Using where
+1 PRIMARY f eq_ref PRIMARY PRIMARY 4 test.a2.id 1 100.00 Using index
+3 DEPENDENT SUBQUERY t2 ref PRIMARY PRIMARY 4 test.a2.id 2 100.00 Using index
Warnings:
-Note 1276 Field or reference 'test.A2.id' of SELECT #3 was resolved in SELECT #1
-Note 1003 select `F`.`id` AS `id` from `test`.`t0` `F` join `test`.`t2` `A2` where ((`F`.`id` = `A2`.`id`) and (`A2`.`attr2` between 12 and 14) and (`A2`.`fromdate` = (select max(`test`.`t2`.`fromdate`) AS `MAX(fromdate)` from `test`.`t2` where (`test`.`t2`.`id` = `A2`.`id`))))
+Note 1276 Field or reference 'test.a2.id' of SELECT #3 was resolved in SELECT #1
+Note 1003 select `f`.`id` AS `id` from `test`.`t0` `f` join `test`.`t2` `a2` where ((`f`.`id` = `a2`.`id`) and (`a2`.`attr2` between 12 and 14) and (`a2`.`fromdate` = (select max(`test`.`t2`.`fromdate`) AS `MAX(fromdate)` from `test`.`t2` where (`test`.`t2`.`id` = `a2`.`id`))))
This should use one table:
explain select id from v2 where id=2;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY F const PRIMARY PRIMARY 4 const 1 Using index
+1 PRIMARY f const PRIMARY PRIMARY 4 const 1 Using index
This should use one table:
explain extended select id from v2 where id in (1,2,3,4);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY F range PRIMARY PRIMARY 4 NULL 4 100.00 Using where; Using index
+1 PRIMARY f range PRIMARY PRIMARY 4 NULL 4 100.00 Using where; Using index
Warnings:
-Note 1276 Field or reference 'test.F.id' of SELECT #3 was resolved in SELECT #1
-Note 1003 select `F`.`id` AS `id` from `test`.`t0` `F` where (`F`.`id` in (1,2,3,4))
-This should use facts and A1 tables:
+Note 1276 Field or reference 'test.f.id' of SELECT #3 was resolved in SELECT #1
+Note 1003 select `f`.`id` AS `id` from `test`.`t0` `f` where (`f`.`id` in (1,2,3,4))
+This should use facts and a1 tables:
explain extended select id from v2 where attr1 between 12 and 14;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY A1 range PRIMARY,attr1 attr1 5 NULL 2 100.00 Using where
-1 PRIMARY F eq_ref PRIMARY PRIMARY 4 test.A1.id 1 100.00 Using index
+1 PRIMARY a1 range PRIMARY,attr1 attr1 5 NULL 2 100.00 Using where
+1 PRIMARY f eq_ref PRIMARY PRIMARY 4 test.a1.id 1 100.00 Using index
Warnings:
-Note 1276 Field or reference 'test.F.id' of SELECT #3 was resolved in SELECT #1
-Note 1003 select `F`.`id` AS `id` from `test`.`t0` `F` join `test`.`t1` `A1` where ((`F`.`id` = `A1`.`id`) and (`A1`.`attr1` between 12 and 14))
-This should use facts, A2 and its subquery:
+Note 1276 Field or reference 'test.f.id' of SELECT #3 was resolved in SELECT #1
+Note 1003 select `f`.`id` AS `id` from `test`.`t0` `f` join `test`.`t1` `a1` where ((`f`.`id` = `a1`.`id`) and (`a1`.`attr1` between 12 and 14))
+This should use facts, a2 and its subquery:
explain extended select id from v2 where attr2 between 12 and 14;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY A2 range PRIMARY,attr2 attr2 5 NULL 5 100.00 Using where
-1 PRIMARY F eq_ref PRIMARY PRIMARY 4 test.A2.id 1 100.00 Using where; Using index
-3 DEPENDENT SUBQUERY t2 ref PRIMARY PRIMARY 4 test.F.id 2 100.00 Using index
+1 PRIMARY a2 range PRIMARY,attr2 attr2 5 NULL 5 100.00 Using where
+1 PRIMARY f eq_ref PRIMARY PRIMARY 4 test.a2.id 1 100.00 Using where; Using index
+3 DEPENDENT SUBQUERY t2 ref PRIMARY PRIMARY 4 test.f.id 2 100.00 Using index
Warnings:
-Note 1276 Field or reference 'test.F.id' of SELECT #3 was resolved in SELECT #1
-Note 1003 select `F`.`id` AS `id` from `test`.`t0` `F` join `test`.`t2` `A2` where ((`F`.`id` = `A2`.`id`) and (`A2`.`attr2` between 12 and 14) and (`A2`.`fromdate` = (select max(`test`.`t2`.`fromdate`) AS `MAX(fromdate)` from `test`.`t2` where (`test`.`t2`.`id` = `F`.`id`))))
+Note 1276 Field or reference 'test.f.id' of SELECT #3 was resolved in SELECT #1
+Note 1003 select `f`.`id` AS `id` from `test`.`t0` `f` join `test`.`t2` `a2` where ((`f`.`id` = `a2`.`id`) and (`a2`.`attr2` between 12 and 14) and (`a2`.`fromdate` = (select max(`test`.`t2`.`fromdate`) AS `MAX(fromdate)` from `test`.`t2` where (`test`.`t2`.`id` = `f`.`id`))))
drop view v1, v2;
drop table t0, t1, t2;
create table t1 (a int);
=== modified file 'mysql-test/t/table_elim.test'
--- a/mysql-test/t/table_elim.test 2009-08-26 21:01:40 +0000
+++ b/mysql-test/t/table_elim.test 2009-09-16 19:05:03 +0000
@@ -86,30 +86,30 @@
create view v1 as
select
- F.id, A1.attr1, A2.attr2
+ f.id, a1.attr1, a2.attr2
from
- t0 F
- left join t1 A1 on A1.id=F.id
- left join t2 A2 on A2.id=F.id and
- A2.fromdate=(select MAX(fromdate) from
- t2 where id=A2.id);
+ t0 f
+ left join t1 a1 on a1.id=f.id
+ left join t2 a2 on a2.id=f.id and
+ a2.fromdate=(select MAX(fromdate) from
+ t2 where id=a2.id);
create view v2 as
select
- F.id, A1.attr1, A2.attr2
+ f.id, a1.attr1, a2.attr2
from
- t0 F
- left join t1 A1 on A1.id=F.id
- left join t2 A2 on A2.id=F.id and
- A2.fromdate=(select MAX(fromdate) from
- t2 where id=F.id);
+ t0 f
+ left join t1 a1 on a1.id=f.id
+ left join t2 a2 on a2.id=f.id and
+ a2.fromdate=(select MAX(fromdate) from
+ t2 where id=f.id);
--echo This should use one table:
explain select id from v1 where id=2;
--echo This should use one table:
explain extended select id from v1 where id in (1,2,3,4);
---echo This should use facts and A1 tables:
+--echo This should use facts and a1 tables:
explain extended select id from v1 where attr1 between 12 and 14;
---echo This should use facts, A2 and its subquery:
+--echo This should use facts, a2 and its subquery:
explain extended select id from v1 where attr2 between 12 and 14;
# Repeat for v2:
@@ -118,9 +118,9 @@
explain select id from v2 where id=2;
--echo This should use one table:
explain extended select id from v2 where id in (1,2,3,4);
---echo This should use facts and A1 tables:
+--echo This should use facts and a1 tables:
explain extended select id from v2 where attr1 between 12 and 14;
---echo This should use facts, A2 and its subquery:
+--echo This should use facts, a2 and its subquery:
explain extended select id from v2 where attr2 between 12 and 14;
drop view v1, v2;
=== modified file 'sql/opt_table_elimination.cc'
--- a/sql/opt_table_elimination.cc 2009-09-07 07:12:38 +0000
+++ b/sql/opt_table_elimination.cc 2009-09-16 19:05:03 +0000
@@ -868,7 +868,7 @@
List_iterator<Dep_module> modules_it(*new_bound_modules);
while ((module= modules_it++))
{
- char iter_buf[Dep_module::iterator_size];
+ char iter_buf[Dep_module::iterator_size + ALIGN_MAX_UNIT];
Dep_module::Iterator iter;
iter= module->init_unbound_values_iter(iter_buf);
while ((value= module->get_next_unbound_value(this, iter)))
@@ -887,7 +887,7 @@
List_iterator<Dep_value> value_it(new_bound_values);
while ((value= value_it++))
{
- char iter_buf[Dep_value::iterator_size];
+ char iter_buf[Dep_value::iterator_size + ALIGN_MAX_UNIT];
Dep_value::Iterator iter;
iter= value->init_unbound_modules_iter(iter_buf);
while ((module= value->get_next_unbound_module(this, iter)))
1
0
[Maria-developers] Rev 2744: Merge in file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
by Sergey Petrunya 16 Sep '09
by Sergey Petrunya 16 Sep '09
16 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
------------------------------------------------------------
revno: 2744
revision-id: psergey(a)askmonty.org-20090916184547-z63saem4y90zd0u8
parent: psergey(a)askmonty.org-20090916182518-spnq86qey2xnv33l
parent: igor(a)askmonty.org-20090916174301-lzzh1r0khn3dxwvp
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd3
timestamp: Wed 2009-09-16 22:45:47 +0400
message:
Merge
modified:
storage/xtradb/srv/srv0start.c srv0start.c-20081201061010-zymrrwrczns2vrex-348
------------------------------------------------------------
revno: 2742.1.1
revision-id: igor(a)askmonty.org-20090916174301-lzzh1r0khn3dxwvp
parent: knielsen(a)knielsen-hq.org-20090916120716-ssmx93bg4znld9l8
committer: Igor Babaev <igor(a)askmonty.org>
branch nick: maria-5.1-merge
timestamp: Wed 2009-09-16 10:43:01 -0700
message:
Fix of bug #417751 by Yasufumi Kinoshita.
modified:
storage/xtradb/srv/srv0start.c srv0start.c-20081201061010-zymrrwrczns2vrex-348
=== modified file 'storage/xtradb/srv/srv0start.c'
--- a/storage/xtradb/srv/srv0start.c 2009-09-03 13:20:22 +0000
+++ b/storage/xtradb/srv/srv0start.c 2009-09-16 17:43:01 +0000
@@ -1119,8 +1119,14 @@
os_aio_use_native_aio = FALSE;
} else {
- /* On Win 2000 and XP use async i/o */
- os_aio_use_native_aio = TRUE;
+ /* On Win 2000 and XP currently native async i/o
+ is not used for xtradb by default */
+ //os_aio_use_native_aio = TRUE;
+ os_aio_use_native_aio = FALSE;
+ fprintf(stderr,
+ "InnoDB: Windows native async i/o is disabled as default.\n"
+ "InnoDB: It is not applicable for the current"
+ " multi io threads implementation.\n");
}
#endif
if (srv_file_flush_method_str == NULL) {
@@ -1156,6 +1162,12 @@
} else if (0 == ut_strcmp(srv_file_flush_method_str,
"async_unbuffered")) {
srv_win_file_flush_method = SRV_WIN_IO_UNBUFFERED;
+ os_aio_use_native_aio = TRUE;
+ srv_n_read_io_threads = srv_n_write_io_threads = 1;
+ fprintf(stderr,
+ "InnoDB: 'async_unbuffered' was detected as innodb_flush_method.\n"
+ "InnoDB: Windows native async i/o is enabled.\n"
+ "InnoDB: And io threads are restricted.\n");
#endif
} else {
fprintf(stderr,
1
0
[Maria-developers] Rev 2743: Update tests results after previous cset. 'TRANSACTIONAL=1' attribute goes in file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
by Sergey Petrunya 16 Sep '09
by Sergey Petrunya 16 Sep '09
16 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
------------------------------------------------------------
revno: 2743
revision-id: psergey(a)askmonty.org-20090916182518-spnq86qey2xnv33l
parent: knielsen(a)knielsen-hq.org-20090916120716-ssmx93bg4znld9l8
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd3
timestamp: Wed 2009-09-16 22:25:18 +0400
message:
Update tests results after previous cset. 'TRANSACTIONAL=1' attribute goes
after the table has been converted to MyISAM and back. (PAGE_CHECKSUM is
still there)
=== modified file 'mysql-test/suite/maria/r/maria3.result'
--- a/mysql-test/suite/maria/r/maria3.result 2009-09-09 21:06:57 +0000
+++ b/mysql-test/suite/maria/r/maria3.result 2009-09-16 18:25:18 +0000
@@ -518,7 +518,7 @@
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
drop table t1;
create table t1 (n int not null, c char(1)) engine=myisam transactional=1;
Warnings:
@@ -529,7 +529,7 @@
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
drop table t1;
create table t1 (a int, key(a)) transactional=0;
insert into t1 values (0),(1),(2),(3),(4);
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (igor:2743) Bug#417751
by Igor Babaev 16 Sep '09
by Igor Babaev 16 Sep '09
16 Sep '09
#At lp:maria based on revid:knielsen@knielsen-hq.org-20090916120716-ssmx93bg4znld9l8
2743 Igor Babaev 2009-09-16
Fix of bug #417751 by Yasufumi Kinoshita.
modified:
storage/xtradb/srv/srv0start.c
=== modified file 'storage/xtradb/srv/srv0start.c'
--- a/storage/xtradb/srv/srv0start.c 2009-09-03 13:20:22 +0000
+++ b/storage/xtradb/srv/srv0start.c 2009-09-16 17:43:01 +0000
@@ -1119,8 +1119,14 @@ innobase_start_or_create_for_mysql(void)
os_aio_use_native_aio = FALSE;
} else {
- /* On Win 2000 and XP use async i/o */
- os_aio_use_native_aio = TRUE;
+ /* On Win 2000 and XP currently native async i/o
+ is not used for xtradb by default */
+ //os_aio_use_native_aio = TRUE;
+ os_aio_use_native_aio = FALSE;
+ fprintf(stderr,
+ "InnoDB: Windows native async i/o is disabled as default.\n"
+ "InnoDB: It is not applicable for the current"
+ " multi io threads implementation.\n");
}
#endif
if (srv_file_flush_method_str == NULL) {
@@ -1156,6 +1162,12 @@ innobase_start_or_create_for_mysql(void)
} else if (0 == ut_strcmp(srv_file_flush_method_str,
"async_unbuffered")) {
srv_win_file_flush_method = SRV_WIN_IO_UNBUFFERED;
+ os_aio_use_native_aio = TRUE;
+ srv_n_read_io_threads = srv_n_write_io_threads = 1;
+ fprintf(stderr,
+ "InnoDB: 'async_unbuffered' was detected as innodb_flush_method.\n"
+ "InnoDB: Windows native async i/o is enabled.\n"
+ "InnoDB: And io threads are restricted.\n");
#endif
} else {
fprintf(stderr,
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2742)
by knielsen@knielsen-hq.org 16 Sep '09
by knielsen@knielsen-hq.org 16 Sep '09
16 Sep '09
#At lp:maria
2742 knielsen(a)knielsen-hq.org 2009-09-16 [merge]
Merge free documentation from MySQL 5.1.38 source release tarball.
modified:
Docs/INSTALL-BINARY
INSTALL-SOURCE
INSTALL-WIN-SOURCE
man/comp_err.1
man/innochecksum.1
man/make_win_bin_dist.1
man/msql2mysql.1
man/my_print_defaults.1
man/myisam_ftdump.1
man/myisamchk.1
man/myisamlog.1
man/myisampack.1
man/mysql-stress-test.pl.1
man/mysql-test-run.pl.1
man/mysql.1
man/mysql.server.1
man/mysql_client_test.1
man/mysql_config.1
man/mysql_convert_table_format.1
man/mysql_find_rows.1
man/mysql_fix_extensions.1
man/mysql_fix_privilege_tables.1
man/mysql_install_db.1
man/mysql_secure_installation.1
man/mysql_setpermission.1
man/mysql_tzinfo_to_sql.1
man/mysql_upgrade.1
man/mysql_waitpid.1
man/mysql_zap.1
man/mysqlaccess.1
man/mysqladmin.1
man/mysqlbinlog.1
man/mysqlbug.1
man/mysqlcheck.1
man/mysqld.8
man/mysqld_multi.1
man/mysqld_safe.1
man/mysqldump.1
man/mysqldumpslow.1
man/mysqlhotcopy.1
man/mysqlimport.1
man/mysqlmanager.8
man/mysqlshow.1
man/mysqlslap.1
man/mysqltest.1
man/ndbd.8
man/ndbd_redo_log_reader.1
man/ndbmtd.8
man/perror.1
man/replace.1
man/resolve_stack_dump.1
man/resolveip.1
scripts/fill_help_tables.sql
=== modified file 'Docs/INSTALL-BINARY'
--- a/Docs/INSTALL-BINARY 2009-05-25 09:59:47 +0000
+++ b/Docs/INSTALL-BINARY 2009-09-16 12:03:18 +0000
@@ -11,7 +11,7 @@
MySQL tar file binary distributions have names of the form
mysql-VERSION-OS.tar.gz, where VERSION is a number (for example,
- 5.1.35), and OS indicates the type of operating system for which
+ 5.1.39), and OS indicates the type of operating system for which
the distribution is intended (for example, pc-linux-i686).
In addition to these generic packages, we also offer binaries in
@@ -156,10 +156,10 @@ shell> chown -R mysql data
Permissions in Grant Tables." For Perl module installation
instructions, see Section 2.15, "Perl Installation Notes."
11. If you would like to use mysqlaccess and have the MySQL
- distribution in some non-standard location, you must change
- the location where mysqlaccess expects to find the mysql
- client. Edit the bin/mysqlaccess script at approximately line
- 18. Search for a line that looks like this:
+ distribution in some nonstandard location, you must change the
+ location where mysqlaccess expects to find the mysql client.
+ Edit the bin/mysqlaccess script at approximately line 18.
+ Search for a line that looks like this:
$MYSQL = '/usr/local/bin/mysql'; # path to mysql executable
Change the path to reflect the location where mysql actually
is stored on your system. If you do not do this, a Broken pipe
=== modified file 'INSTALL-SOURCE'
--- a/INSTALL-SOURCE 2009-05-25 09:59:47 +0000
+++ b/INSTALL-SOURCE 2009-09-16 12:03:18 +0000
@@ -207,9 +207,9 @@ Important
* General file system stability and performance.
- * If your tables are large, performance is affected by the
- ability of the file system to deal with large files at all and
- to deal with them efficiently.
+ * Table size. If your tables are large, performance is affected
+ by the ability of the file system to deal with large files at
+ all and to deal with them efficiently.
* Our level of expertise here at Sun Microsystems, Inc. with the
platform. If we know a platform well, we enable
@@ -240,7 +240,7 @@ Important
development process, multiple release series co-exist, each at a
different stage of maturity:
- * MySQL 6.0 is the current development release series.
+ * MySQL 5.4 and 6.0 are the current development release series.
* MySQL 5.1 is the current General Availability (Production)
release series. New releases are issued for bugfixes only; no
@@ -252,11 +252,12 @@ Important
* MySQL 4.1, 4.0, and 3.23 are old stable (production-quality)
release series. MySQL 4.1 is now at the end of the product
lifecycle. Active development and support for these versions
- has ended. Extended support for MySQL 4.1 and 4.0 is
- available. According to the MySQL Lifecycle Policy (see
- http://www.mysql.com/company/legal/lifecycle/#policy) only
- Security and Severity Level 1 issues will still be fixed for
- MySQL 4.0 and 4.1.
+ has ended.
+ Extended support for MySQL 4.1 remains available. According to
+ the MySQL Lifecycle Policy
+ (http://www.mysql.com/company/legal/lifecycle/#policy) only
+ Security and Severity Level 1 issues are still being fixed for
+ MySQL 4.1.
We do not believe in a complete code freeze because this prevents
us from making bugfixes and other fixes that must be done. By
@@ -267,13 +268,13 @@ Important
Normally, if you are beginning to use MySQL for the first time or
trying to port it to some system for which there is no binary
- distribution, we recommend going with the General Availability
- release series. Currently, this is MySQL 5.1. All MySQL releases,
- even those from development series, are checked with the MySQL
- benchmarks and an extensive test suite before being issued.
+ distribution, go with the General Availability release series.
+ Currently, this is MySQL 5.1. All MySQL releases, even those from
+ development series, are checked with the MySQL benchmarks and an
+ extensive test suite before being issued.
If you are running an older system and want to upgrade, but do not
- want to take the chance of having a non-seamless upgrade, you
+ want to take the chance of having a nonseamless upgrade, you
should upgrade to the latest version in the same release series
you are using (where only the last part of the version number is
newer than yours). We have tried to fix only fatal bugs and make
@@ -473,17 +474,16 @@ Important
rapid updates. Community Server releases are meant to appear
2-3 times per year.
- * Releases are issued within each series. Enterprise Server
- releases are numbered using even numbers (for example,
- 5.1.20). Community Server releases are numbered using odd
- numbers (for example, 5.1.21).
+ * Releases are issued within each series. For each release, the
+ last number in the version is one more than the previous
+ release within the same series.
* Binary distributions for some platforms are made by us for
major releases. Other people may make binary distributions for
other systems, but probably less frequently.
* We make fixes available as soon as we have identified and
- corrected small or non-critical but annoying bugs. The fixes
+ corrected small or noncritical but annoying bugs. The fixes
are available in source form immediately from our public
Bazaar repositories, and are included in the next release.
@@ -494,354 +494,18 @@ Important
2.1.2.4. MySQL Binaries Compiled by Sun Microsystems, Inc.
- As a service of Sun Microsystems, Inc., we provide a set of binary
- distributions of MySQL that are compiled on systems at our site or
- on systems where supporters of MySQL kindly have given us access
- to their machines.
-
- In addition to the binaries provided in platform-specific package
- formats, we offer binary distributions for a number of platforms
- in the form of compressed tar files (.tar.gz files). See Section
- 2.2, "Standard MySQL Installation Using a Binary Distribution."
-
- The RPM distributions for MySQL 5.1 releases that we make
- available through our Web site are generated by MySQL AB.
-
- For Windows distributions, see Section 2.3, "Installing MySQL on
- Windows."
-
- These distributions are generated using the script
- Build-tools/Do-compile, which compiles the source code and creates
- the binary tar.gz archive using scripts/make_binary_distribution.
-
- These binaries are configured and built with the following
- compilers and options. This information can also be obtained by
- looking at the variables COMP_ENV_INFO and CONFIGURE_LINE inside
- the script bin/mysqlbug of every binary tar file distribution.
-
- Anyone who has more optimal options for any of the following
- configure commands can mail them to the MySQL internals mailing
- list. See Section 1.5.1, "MySQL Mailing Lists."
-
- If you want to compile a debug version of MySQL, you should add
- --with-debug or --with-debug=full to the following configure
- commands and remove any -fomit-frame-pointer options.
-
- The following binaries are built on our own development systems:
-
- * Linux 2.4.xx x86 with gcc 2.95.3:
-CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro
--felide-constructors" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --disable-shared
---with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
-
- * Linux 2.4.x x86 with icc (Intel C++ Compiler 8.1 or later
- releases):
-CC=icc CXX=icpc CFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict"
-CXXFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" ./configure
---prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --enable-assembler
---disable-shared --with-client-ldflags=-all-static
---with-mysqld-ldflags=-all-static --with-embedded-server --with-innod
-b
- Note that versions 8.1 and newer of the Intel compiler have
- separate drivers for 'pure' C (icc) and C++ (icpc); if you use
- icc version 8.0 or older for building MySQL, you will need to
- set CXX=icc.
-
- * Linux 2.4.xx Intel Itanium 2 with ecc (Intel C++ Itanium
- Compiler 7.0):
-CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2
--tpp2 -ip -nolib_inline" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile
-
- * Linux 2.4.xx Intel Itanium with ecc (Intel C++ Itanium
- Compiler 7.0):
-CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile
-
- * Linux 2.4.xx alpha with ccc (Compaq C V6.2-505 / Compaq C++
- V6.3-006):
-CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch
-generic -noexceptions -nortti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-mysqld-ldflags=-non_shared
---with-client-ldflags=-non_shared --disable-shared
-
- * Linux 2.x.xx ppc with gcc 2.95.4:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/b
-in
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared --with-embedded-server
---with-innodb
-
- * Linux 2.4.xx s390 with gcc 2.95.3:
-CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
---with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
-
- * Linux 2.4.xx x86_64 (AMD64) with gcc 3.2.1:
-CXX=gcc ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared
-
- * Sun Solaris 8 x86 with gcc 3.2.3:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/b
-in
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared --with-innodb
-
- * Sun Solaris 8 SPARC with gcc 3.2:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --with-named-z-libs=no
---with-named-curses-libs=-lcurses --disable-shared
-
- * Sun Solaris 8 SPARC 64-bit with gcc 3.2:
-CC=gcc CFLAGS="-O3 -m64 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O
-3
--m64 -fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no
---with-named-curses-libs=-lcurses --disable-shared
-
- * Sun Solaris 9 SPARC with gcc 2.95.3:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --with-named-curses-libs=-lc
-urses
---disable-shared
-
- * Sun Solaris 9 SPARC with cc-5.0 (Sun Forte 5.0):
-CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt
--D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9"
-./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --enable-assembler
---with-named-z-libs=no --enable-thread-safe-client --disable-shared
-
- * IBM AIX 4.3.2 ppc with gcc 3.2.3:
-CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2
--mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no --disable-shared
-
- * IBM AIX 4.3.3 ppc with xlC_r (IBM Visual Age C/C++ 6.0):
-CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
-CXX=xlC_r CXXFLAGS ="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
-./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysq
-l/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --with-named-z-libs
-=no
---disable-shared --with-innodb
-
- * IBM AIX 5.1.0 ppc with gcc 3.3:
-CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powe
-rpc
--Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --with-named-z-libs
-=no
---disable-shared
-
- * IBM AIX 5.2.0 ppc with xlC_r (IBM Visual Age C/C++ 6.0):
-CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
-CXX=xlC_r CXXFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
-./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysq
-l/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --with-named-z-libs
-=no
---disable-shared --with-embedded-server --with-innodb
-
- * HP-UX 10.20 pa-risc1.1 with gcc 3.1:
-CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX
--I/opt/dce /include -felide-constructors -fno-exceptions -fno-rtti
--O3 -fPIC" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-pthread --with-named-thread-libs=-ldce
---with-lib-ccflags=-fPIC --disable-shared
-
- * HP-UX 11.00 pa-risc with aCC (HP ANSI C++ B3910B A.03.50):
-CC=cc CXX=aCC CFLAGS=+DAportable CXXFLAGS=+DAportable ./configure
---prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
---with-embedded-server --with-innodb
-
- * HP-UX 11.11 pa-risc2.0 64bit with aCC (HP ANSI C++ B3910B
- A.03.33):
-CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
-
- * HP-UX 11.11 pa-risc2.0 32bit with aCC (HP ANSI C++ B3910B
- A.03.33):
-CC=cc CXX=aCC CFLAGS="+DAportable" CXXFLAGS="+DAportable" ./configure
---prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
---with-innodb
-
- * HP-UX 11.22 ia64 64bit with aCC (HP aC++/ANSI C B3910B
- A.05.50):
-CC=cc CXX=aCC CFLAGS="+DD64 +DSitanium2" CXXFLAGS="+DD64 +DSitanium2"
-./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysq
-l/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
---with-embedded-server --with-innodb
-
- * Apple Mac OS X 10.2 powerpc with gcc 3.1:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared
-
- * FreeBSD 4.7 i386 with gcc 2.95.4:
-CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --with-named-z-libs=not-used
---disable-shared
-
- * FreeBSD 4.7 i386 using LinuxThreads with gcc 2.95.4:
-CFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT
--D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
-CXXFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT
--D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" ./configure
---prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
---libexecdir=/usr/local/mysql/bin --enable-thread-safe-client
---enable-local-infile --enable-assembler
---with-named-thread-libs="-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R
--D_THREAD_SAFE -I /usr/local/include/pthread/linuxthreads
--L/usr/local/lib -llthread -llgcc_r" --disable-shared
---with-embedded-server --with-innodb
-
- * QNX Neutrino 6.2.1 i386 with gcc 2.95.3qnx-nto 20010315:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared
-
- The following binaries are built on third-party systems kindly
- provided to Sun Microsystems, Inc. by other users. These are
- provided only as a courtesy; we do not have full control over
- these systems, so we can provide only limited support for the
- binaries built on them.
-
- * SCO Unix 3.2v5.0.7 i386 with gcc 2.95.3:
-CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentiu
-m
--felide-constructors" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no --enable-thread-safe-cli
-ent
---disable-shared
-
- * SCO UnixWare 7.1.4 i386 with CC 3.2:
-CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no --enable-thread-safe-cli
-ent
---disable-shared --with-readline
-
- * SCO OpenServer 6.0.0 i386 with CC 3.2:
-CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no --enable-thread-safe-cli
-ent
---disable-shared --with-readline
-
- * Compaq Tru64 OSF/1 V5.1 732 alpha with cc/cxx (Compaq C
- V6.3-029i / DIGITAL C++ V6.1-027):
-CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline
-speed -speculate all" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias
--fast -inline speed -speculate all -noexceptions -nortti" ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile
---with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-share
-d
---with-mysqld-ldflags=-all-static
-
- * SGI Irix 6.5 IP32 with gcc 3.0.1:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared
-
- * FreeBSD/sparc64 5.0 with gcc 3.2.1:
-CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql
---localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/b
-in
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared --with-innodb
-
- The following compile options have been used for binary packages
- that we have provided in the past. These binaries no longer are
- being updated, but the compile options are listed here for
- reference purposes.
-
- * Linux 2.2.xx SPARC with egcs 1.1.2:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --disable-shared
-
- * Linux 2.2.x with x686 with gcc 2.95.2:
-CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro
--felide-constructors -fno-exceptions -fno-rtti" ./configure
---prefix=/usr/local/mysql --enable-assembler
---with-mysqld-ldflags=-all-static --disable-shared
---with-extra-charsets=complex
-
- * SunOS 4.1.4 2 sun4c with gcc 2.7.2.1:
-CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure
---prefix=/usr/local/mysql --disable-shared --with-extra-charsets=comp
-lex
---enable-assembler
-
- * SunOS 5.5.1 (and above) sun4u with egcs 1.0.3a or 2.90.27 or
- gcc 2.95.2 and newer:
-CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors
--fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql
---with-low-memory --with-extra-charsets=complex --enable-assembler
-
- * SunOS 5.6 i86pc with gcc 2.8.1:
-CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
---with-low-memory --with-extra-charsets=complex
-
- * BSDI BSD/OS 3.1 i386 with gcc 2.7.2.1:
-CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex
-
- * BSDI BSD/OS 2.1 i386 with gcc 2.7.2:
-CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex
+ Sun Microsystems, Inc. provides a set of binary distributions of
+ MySQL. In addition to binaries provided in platform-specific
+ package formats, we offer binary distributions for a number of
+ platforms in the form of compressed tar files (.tar.gz files). See
+ Section 2.2, "Standard MySQL Installation Using a Binary
+ Distribution." For Windows distributions, see Section 2.3,
+ "Installing MySQL on Windows."
- * AIX 4.2 with gcc 2.7.2.2:
-CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex
+ If you want to compile a debug version of MySQL from a source
+ distribution, you should add --with-debug or --with-debug=full to
+ the configure command used to configure the distribution and
+ remove any -fomit-frame-pointer options.
2.1.3. How to Get MySQL
@@ -889,8 +553,8 @@ CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure
shell> md5sum package_name
Example:
-shell> md5sum mysql-standard-5.1.35-linux-i686.tar.gz
-aaab65abbec64d5e907dcd41b8699945 mysql-standard-5.1.35-linux-i686.ta
+shell> md5sum mysql-standard-5.1.39-linux-i686.tar.gz
+aaab65abbec64d5e907dcd41b8699945 mysql-standard-5.1.39-linux-i686.ta
r.gz
You should verify that the resulting checksum (the string of
@@ -1064,8 +728,8 @@ pg-signature.html
signature, which also is available from the download page. The
signature file has the same name as the distribution file with an
.asc extension, as shown by the examples in the following table.
- Distribution file mysql-standard-5.1.35-linux-i686.tar.gz
- Signature file mysql-standard-5.1.35-linux-i686.tar.gz.asc
+ Distribution file mysql-standard-5.1.39-linux-i686.tar.gz
+ Signature file mysql-standard-5.1.39-linux-i686.tar.gz.asc
Make sure that both files are stored in the same directory and
then run the following command to verify the signature for the
@@ -1073,7 +737,7 @@ pg-signature.html
shell> gpg --verify package_name.asc
Example:
-shell> gpg --verify mysql-standard-5.1.35-linux-i686.tar.gz.asc
+shell> gpg --verify mysql-standard-5.1.39-linux-i686.tar.gz.asc
gpg: Signature made Tue 12 Jul 2005 23:35:41 EST using DSA key ID 507
2E1F5
gpg: Good signature from "MySQL Package signing key (www.mysql.com) <
@@ -1093,8 +757,8 @@ build(a)mysql.com>"
shell> rpm --checksig package_name.rpm
Example:
-shell> rpm --checksig MySQL-server-5.1.35-0.glibc23.i386.rpm
-MySQL-server-5.1.35-0.glibc23.i386.rpm: md5 gpg OK
+shell> rpm --checksig MySQL-server-5.1.39-0.glibc23.i386.rpm
+MySQL-server-5.1.39-0.glibc23.i386.rpm: md5 gpg OK
Note
@@ -1231,6 +895,7 @@ Note
* A Windows operating system such as Windows 2000, Windows XP,
Windows Vista, Windows Server 2003, or Windows Server 2008.
+ Both 32-bit and 64-bit versions are supported.
A Windows operating system permits you to run the MySQL server
as a service. See Section 2.3.11, "Starting MySQL as a Windows
Service."
@@ -1331,19 +996,19 @@ Caution
from when installing MySQL on Windows:
* The Essentials Package: This package has a file name similar
- to mysql-essential-5.1.35-win32.msi and contains the minimum
+ to mysql-essential-5.1.39-win32.msi and contains the minimum
set of files needed to install MySQL on Windows, including the
Configuration Wizard. This package does not include optional
components such as the embedded server and benchmark suite.
* The Complete Package: This package has a file name similar to
- mysql-5.1.35-win32.zip and contains all files needed for a
+ mysql-5.1.39-win32.zip and contains all files needed for a
complete Windows installation, including the Configuration
Wizard. This package includes optional components such as the
embedded server and benchmark suite.
* The Noinstall Archive: This package has a file name similar to
- mysql-noinstall-5.1.35-win32.zip and contains all the files
+ mysql-noinstall-5.1.39-win32.zip and contains all the files
found in the Complete install package, with the exception of
the Configuration Wizard. This package does not include an
automated installer, and must be manually installed and
@@ -1535,7 +1200,7 @@ Note
directory. In a default installation it contains C:\Program
Files\MySQL\MySQL Server 5.1\. The Version string contains the
release number. For example, for an installation of MySQL Server
- 5.1.35, the key contains a value of 5.1.35.
+ 5.1.39, the key contains a value of 5.1.39.
These registry keys are used to help external tools identify the
installed location of the MySQL server, preventing a complete scan
@@ -1585,8 +1250,7 @@ Note
typical MySQL installation on a developer machine might look like
this:
C:\Program Files\MySQL\MySQL Server 5.1
-C:\Program Files\MySQL\MySQL Administrator 1.0
-C:\Program Files\MySQL\MySQL Query Browser 1.0
+C:\Program Files\MySQL\MySQL Workbench 5.1 OSS
This approach makes it easier to manage and maintain all MySQL
applications installed on a particular system.
@@ -1899,7 +1563,7 @@ skip-innodb
database management systems. If you run applications that rely on
MySQL's old "forgiving" behavior, make sure to either adapt those
applications or to disable strict mode. For more information about
- strict mode, see Section 5.1.7, "Server SQL Modes."
+ strict mode, see Section 5.1.8, "Server SQL Modes."
2.3.4.9. The Character Set Dialog
@@ -1962,7 +1626,7 @@ Warning
Typically, when installing multiple versions you create a service
name based on the version information. For example, you might
install MySQL 5.x as mysql5, or specific versions such as MySQL
- 5.1.30 as mysql5130.
+ 5.1.30 as mysql50130.
To install the MySQL server as a service but not have it started
automatically at startup, uncheck the box next to the Launch the
@@ -2101,7 +1765,7 @@ C:\> echo %WINDIR%
option file you use, it must be a plain text file.
You can also make use of the example option files included with
- your MySQL distribution; see Section 4.2.3.2.2, "Preconfigured
+ your MySQL distribution; see Section 4.2.3.3.2, "Preconfigured
Option Files."
An option file can be created and modified with any text editor,
@@ -2261,7 +1925,7 @@ InnoDB: foreign key constraint system ta
something like this, which indicates that the server is ready to
service client connections:
mysqld: ready for connections
-Version: '5.1.35' socket: '' port: 3306
+Version: '5.1.39' socket: '' port: 3306
The server continues to write to the console any further
diagnostic output it produces. You can open a new console window
@@ -2323,7 +1987,7 @@ Note
(http://forge.mysql.com/wiki/MySQL_Internals_Porting)
Use mysqld --verbose --help to display all the options that mysqld
- understands.
+ supports.
2.3.11. Starting MySQL as a Windows Service
@@ -2761,7 +2425,7 @@ C:\> C:\mysql\bin\mysqld --remove
The DATA DIRECTORY and INDEX DIRECTORY options for CREATE
TABLE are ignored on Windows, because Windows doesn't support
symbolic links. These options also are ignored on systems that
- have a non-functional realpath() call.
+ have a nonfunctional realpath() call.
* DROP DATABASE
You cannot drop a database that is in use by some thread.
@@ -2773,6 +2437,16 @@ C:\> C:\mysql\bin\mysqld --remove
must be specified using the same case throughout a given
statement. See Section 8.2.2, "Identifier Case Sensitivity."
+ * Directory and file names
+ On Windows, MySQL Server supports only directory and file
+ names that are compatible with the current ANSI code pages.
+ For example, the following Japanese directory name will not
+ work in the Western locale (code page 1252):
+datadir="C:/维基百科关于中文维基百科"
+ The same limitation applies to directory and file names
+ referred to in SQL statements, such as the data file path name
+ in LOAD DATA INFILE.
+
* The "\" path name separator character
Path name components in Windows are separated by the "\"
character, which is also the escape character in MySQL. If you
@@ -2922,11 +2596,12 @@ Important
* MySQL-shared-compat-VERSION.glibc23.i386.rpm
This package includes the shared libraries for MySQL 3.23,
- 4.0, 4.1, and 5.1. It contains single-threaded and thread-safe
- libraries. Install this package instead of MySQL-shared if you
- have applications installed that are dynamically linked
- against older versions of MySQL but you want to upgrade to the
- current version without breaking the library dependencies.
+ 4.0, and so on, up to the current release. It contains
+ single-threaded and thread-safe libraries. Install this
+ package instead of MySQL-shared if you have applications
+ installed that are dynamically linked against older versions
+ of MySQL but you want to upgrade to the current version
+ without breaking the library dependencies.
* MySQL-embedded-VERSION.glibc23.i386.rpm
The embedded MySQL server library.
@@ -2942,7 +2617,7 @@ Note
The MySQL-ndb-tools RPM requires a working installation of
perl. Prior to MySQL 5.1.18, the DBI and HTML::Template
packages were also required. See Section 2.15, "Perl
- Installation Notes," and Section 17.9.15, "ndb_size.pl ---
+ Installation Notes," and Section 17.6.21, "ndb_size.pl ---
NDBCLUSTER Size Requirement Estimator," for more information.
* MySQL-test-VERSION.glibc23.i386.rpm
@@ -3043,7 +2718,7 @@ Note
users and groups (as listed in the /etc/passwd and /etc/group
files) by the RPM installation process being run by root.
- For non-local user management (LDAP, NIS, and so forth), the
+ For nonlocal user management (LDAP, NIS, and so forth), the
administrative tools may require additional authentication (such
as a password), and will fail if the installing user does not
provide this authentication. Even if they fail, the RPM
@@ -3219,6 +2894,9 @@ alias mysqladmin /usr/local/mysql/bin/my
2.6. Installing MySQL on Solaris
+ To obtain a binary MySQL distribution for Solaris in tarball or
+ PKG format, http://dev.mysql.com/downloads/mysql/5.1.html.
+
If you install MySQL using a binary tarball distribution on
Solaris, you may run into trouble even before you get the MySQL
distribution unpacked, as the Solaris tar cannot handle long file
@@ -3226,8 +2904,7 @@ alias mysqladmin /usr/local/mysql/bin/my
MySQL.
If this occurs, you must use GNU tar (gtar) to unpack the
- distribution. You can find a precompiled copy for Solaris at
- http://dev.mysql.com/downloads/os-solaris.html.
+ distribution.
You can install MySQL on Solaris using a binary package in PKG
format instead of the binary tarball distribution. Before
@@ -3572,7 +3249,7 @@ Note
MySQL tar file binary distributions have names of the form
mysql-VERSION-OS.tar.gz, where VERSION is a number (for example,
- 5.1.35), and OS indicates the type of operating system for which
+ 5.1.39), and OS indicates the type of operating system for which
the distribution is intended (for example, pc-linux-i686).
In addition to these generic packages, we also offer binaries in
@@ -3717,10 +3394,10 @@ shell> chown -R mysql data
Permissions in Grant Tables." For Perl module installation
instructions, see Section 2.15, "Perl Installation Notes."
11. If you would like to use mysqlaccess and have the MySQL
- distribution in some non-standard location, you must change
- the location where mysqlaccess expects to find the mysql
- client. Edit the bin/mysqlaccess script at approximately line
- 18. Search for a line that looks like this:
+ distribution in some nonstandard location, you must change the
+ location where mysqlaccess expects to find the mysql client.
+ Edit the bin/mysqlaccess script at approximately line 18.
+ Search for a line that looks like this:
$MYSQL = '/usr/local/bin/mysql'; # path to mysql executable
Change the path to reflect the location where mysql actually
is stored on your system. If you do not do this, a Broken pipe
@@ -3764,7 +3441,7 @@ Note
MySQL source distributions are provided as compressed tar archives
and have names of the form mysql-VERSION.tar.gz, where VERSION is
- a number like 5.1.35.
+ a number like 5.1.39.
You need the following tools to build and install MySQL from
source:
@@ -3792,16 +3469,16 @@ Note
* A good make program. GNU make is always recommended and is
sometimes required. (BSD make fails, and vendor-provided make
- implementations may fail as well.) If you have problems, we
- recommend GNU make 3.75 or newer.
+ implementations may fail as well.) If you have problems, use
+ GNU make 3.75 or newer.
* libtool 1.5.24 or later is also recommended.
If you are using a version of gcc recent enough to understand the
-fno-exceptions option, it is very important that you use this
option. Otherwise, you may compile a binary that crashes randomly.
- We also recommend that you use -felide-constructors and -fno-rtti
- along with -fno-exceptions. When in doubt, do the following:
+ Also use -felide-constructors and -fno-rtti along with
+ -fno-exceptions. When in doubt, do the following:
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
-fno-exceptions -fno-rtti" ./configure \
--prefix=/usr/local/mysql --enable-assembler \
@@ -3910,7 +3587,7 @@ shell> cp support-files/my-medium.cnf /e
If you want to configure support for InnoDB tables, you should
edit the /etc/my.cnf file, remove the # character before the
option lines that start with innodb_..., and modify the option
- values to be what you want. See Section 4.2.3.2, "Using Option
+ values to be what you want. See Section 4.2.3.3, "Using Option
Files," and Section 13.6.2, "InnoDB Configuration."
9. Change location into the installation directory:
@@ -4115,7 +3792,7 @@ shell> ./configure --help
--with-openssl-includes Find OpenSSL headers in DIR
--with-openssl-libs Find OpenSSL libraries in DIR
--with-other-libc=DIR Link against libc and other standard
- libraries installed in the specified non-standard location
+ libraries installed in the specified nonstandard location
--with-pic Try to use only PIC/non-PIC objects Use both
--with-plugin-PLUGIN Forces the named plugin to be linked into
mysqld statically 5.1.11
@@ -4190,7 +3867,7 @@ shell> ./configure --prefix=/usr/local \
directory locations at server startup time by using the
--basedir and --datadir options. These can be given on the
command line or in an MySQL option file, although it is more
- common to use an option file. See Section 4.2.3.2, "Using
+ common to use an option file. See Section 4.2.3.3, "Using
Option Files."
* If you are using Unix and you want the MySQL socket file
@@ -4250,7 +3927,7 @@ CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLA
2.1.2.4, "MySQL Binaries Compiled by Sun Microsystems, Inc.."
There are some configuration settings you can tweak to build
an even faster binary, but these are only for advanced users.
- See Section 7.5.6, "How Compiling and Linking Affects the
+ See Section 7.5.1, "How Compiling and Linking Affects the
Speed of MySQL."
If the build fails and produces errors about your compiler or
linker not being able to create the shared library
@@ -4280,14 +3957,6 @@ shell> ./configure --with-collation=COLL
must be a legal collation for the character set. (Use the SHOW
COLLATION statement to determine which collations are
available for each character set.)
-
-Warning
- If you change character sets after having created any tables,
- you must run myisamchk -r -q --set-collation=collation_name on
- every MyISAM table. Your indexes may be sorted incorrectly
- otherwise. This can happen if you install MySQL, create some
- tables, and then reconfigure MySQL to use a different
- character set and reinstall it.
With the configure option --with-extra-charsets=LIST, you can
define which additional character sets should be compiled into
the server. LIST is one of the following:
@@ -4300,7 +3969,7 @@ Warning
+ all to include all character sets into the binaries
Clients that want to convert characters between the server and
the client should use the SET NAMES statement. See Section
- 5.1.4, "Session System Variables," and Section 9.1.4,
+ 5.1.5, "Session System Variables," and Section 9.1.4,
"Connection Character Sets and Collations."
* To configure MySQL with debugging code, use the --with-debug
@@ -4479,16 +4148,19 @@ sql_yacc.yy:#####: fatal error: maximum
directory:
shell> mkdir mysql-server
shell> bzr init-repo --trees mysql-server
- Once you have an initialized directory, you can branch from
+
+ 2. Once you have an initialized directory, you can branch from
the public MySQL server repositories. To create a branch of a
specific version:
shell> cd mysql-server
shell> bzr branch lp:mysql-server/5.1 mysql-5.1
- The initial download will take some time to complete,
+
+ 3. The initial download will take some time to complete,
depending on the speed of your connection. Please be patient.
Once you have downloaded the first tree, additional trees
should take significantly less time to download.
- When building from the Bazaar branch, you may want to create a
+
+ 4. When building from the Bazaar branch, you may want to create a
copy of your active branch so that you can make configuration
and other changes without affecting the original branch
contents. You can achieve this by branching from the original
@@ -4548,10 +4220,9 @@ Note
2. When the build is done, run make install. Be careful with this
on a production machine; the command may overwrite your live
release installation. If you have another installation of
- MySQL, we recommend that you run ./configure with different
- values for the --prefix, --with-tcp-port, and
- --with-unix-socket-path options than those used for your
- production server.
+ MySQL, run ./configure with different values for the --prefix,
+ --with-tcp-port, and --with-unix-socket-path options than
+ those used for your production server.
3. Play hard with your new installation and try to make the new
features crash. Start by running make test. See Section
@@ -4656,11 +4327,11 @@ shell> CXX="gcc -O3" ./configure
This works because gcc compiles C++ source files as well as
g++ does, but does not link in libg++ or libstdc++ by default.
Another way to fix these problems is to install g++, libg++,
- and libstdc++. However, we recommend that you not use libg++
- or libstdc++ with MySQL because this only increases the binary
- size of mysqld without providing any benefits. Some versions
- of these libraries have also caused strange problems for MySQL
- users in the past.
+ and libstdc++. However, do not use libg++ or libstdc++ with
+ MySQL because this only increases the binary size of mysqld
+ without providing any benefits. Some versions of these
+ libraries have also caused strange problems for MySQL users in
+ the past.
* If your compile fails with errors such as any of the
following, you must upgrade your version of make to GNU make:
@@ -4771,7 +4442,7 @@ export CXX="gcc"
* On most systems, you can force MIT-pthreads to be used by
running configure with the --with-mit-threads option:
shell> ./configure --with-mit-threads
- Building in a non-source directory is not supported when using
+ Building in a nonsource directory is not supported when using
MIT-pthreads because we want to minimize our changes to this
code.
@@ -5018,7 +4689,7 @@ C:\workdir>win\configure.js WITH_INNOBAS
directory, you need to tell the server their path names. You
can either do this on the command line with the --basedir and
--datadir options, or by placing appropriate options in an
- option file. (See Section 4.2.3.2, "Using Option Files.") If
+ option file. (See Section 4.2.3.3, "Using Option Files.") If
you have an existing data directory elsewhere that you want to
use, you can specify its path name instead.
When the server is running in standalone fashion or as a
@@ -5034,7 +4705,7 @@ C:\workdir>win\configure.js WITH_INNOBAS
option), and invoke mysql-test-run.pl. For example (using
Cygwin and the bash shell):
shell> cd mysql-test
-shell> export MTS_VS_CONFIG=debug
+shell> export MTR_VS_CONFIG=debug
shell> ./mysql-test-run.pl --force --timer
shell> ./mysql-test-run.pl --force --timer --ps-protocol
@@ -5396,10 +5067,10 @@ shell> bin/mysqladmin variables
on your platform and version of MySQL, but should be similar
to that shown here:
shell> bin/mysqladmin version
-mysqladmin Ver 14.12 Distrib 5.1.35, for pc-linux-gnu on i686
+mysqladmin Ver 14.12 Distrib 5.1.39, for pc-linux-gnu on i686
...
-Server version 5.1.35
+Server version 5.1.39
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
@@ -5626,31 +5297,30 @@ shell> bin/mysql mysql
Generally, you start the mysqld server in one of these ways:
- * By invoking mysqld directly. This works on any platform.
+ * Invoke mysqld directly. This works on any platform.
- * By running the MySQL server as a Windows service. The service
- can be set to start the server automatically when Windows
- starts, or as a manual service that you start on request. For
+ * Run the MySQL server as a Windows service. The service can be
+ set to start the server automatically when Windows starts, or
+ as a manual service that you start on request. For
instructions, see Section 2.3.11, "Starting MySQL as a Windows
Service."
- * By invoking mysqld_safe, which tries to determine the proper
+ * Invoke mysqld_safe, which tries to determine the proper
options for mysqld and then runs it with those options. This
script is used on Unix and Unix-like systems. See Section
4.3.2, "mysqld_safe --- MySQL Server Startup Script."
- * By invoking mysql.server. This script is used primarily at
- system startup and shutdown on systems that use System V-style
- run directories, where it usually is installed under the name
+ * Invoke mysql.server. This script is used primarily at system
+ startup and shutdown on systems that use System V-style run
+ directories, where it usually is installed under the name
mysql. The mysql.server script starts the server by invoking
mysqld_safe. See Section 4.3.3, "mysql.server --- MySQL Server
Startup Script."
- * On Mac OS X, you can install a separate MySQL Startup Item
- package to enable the automatic startup of MySQL on system
- startup. The Startup Item starts the server by invoking
- mysql.server. See Section 2.5, "Installing MySQL on Mac OS X,"
- for details.
+ * On Mac OS X, install a separate MySQL Startup Item package to
+ enable the automatic startup of MySQL on system startup. The
+ Startup Item starts the server by invoking mysql.server. See
+ Section 2.5, "Installing MySQL on Mac OS X," for details.
The mysqld_safe and mysql.server scripts and the Mac OS X Startup
Item can be used to start the server manually, or automatically at
@@ -5668,11 +5338,11 @@ shell> mysql.server stop
user option to the [mysqld] group of the /etc/my.cnf option file,
as shown later in this section. (It is possible that you will need
to edit mysql.server if you've installed a binary distribution of
- MySQL in a non-standard location. Modify it to cd into the proper
- directory before it runs mysqld_safe. If you do this, your
- modified version of mysql.server may be overwritten if you upgrade
- MySQL in the future, so you should make a copy of your edited
- version that you can reinstall.)
+ MySQL in a nonstandard location. Modify it to change location into
+ the proper directory before it runs mysqld_safe. If you do this,
+ your modified version of mysql.server may be overwritten if you
+ upgrade MySQL in the future, so you should make a copy of your
+ edited version that you can reinstall.)
mysql.server stop stops the server by sending a signal to it. You
can also stop the server manually by executing mysqladmin
@@ -5750,10 +5420,10 @@ user=mysql
[mysql.server]
basedir=/usr/local/mysql
- The mysql.server script understands the following options:
- basedir, datadir, and pid-file. If specified, they must be placed
- in an option file, not on the command line. mysql.server
- understands only start and stop as command-line arguments.
+ The mysql.server script supports the following options: basedir,
+ datadir, and pid-file. If specified, they must be placed in an
+ option file, not on the command line. mysql.server supports only
+ start and stop as command-line arguments.
The following table shows which option groups the server and each
startup script read from option files.
@@ -5774,7 +5444,7 @@ basedir=/usr/local/mysql
[mysql.server] and [mysqld_safe] groups instead when using MySQL
5.1.
- See Section 4.2.3.2, "Using Option Files."
+ See Section 4.2.3.3, "Using Option Files."
2.11.2.3. Starting and Troubleshooting the MySQL Server
@@ -5808,17 +5478,17 @@ basedir=/usr/local/mysql
that you have them configured the way you want before starting the
server:
- MySQL Enterprise For expert advice on start-up options appropriate
- to your circumstances, subscribe to The MySQL Enterprise Monitor.
- For more information, see
- http://www.mysql.com/products/enterprise/advisors.html.
-
* If you are using InnoDB tables, see Section 13.6.2, "InnoDB
Configuration."
* If you are using MySQL Cluster, see Section 17.3, "MySQL
Cluster Configuration."
+ MySQL Enterprise For expert advice on start-up options appropriate
+ to your circumstances, subscribe to The MySQL Enterprise Monitor.
+ For more information, see
+ http://www.mysql.com/products/enterprise/advisors.html.
+
Storage engines will use default option values if you specify
none, but it is recommended that you review the available options
and specify explicit values for those for which the defaults are
@@ -6144,43 +5814,43 @@ Note
2.12.1. Upgrading MySQL
- As a general rule, we recommend that when you upgrade from one
- release series to another, you should go to the next series rather
- than skipping a series. If you wish to upgrade from a release
- series previous to MySQL 5.0, you should upgrade to each
- successive release series in turn until you have reached MySQL
- 5.0, and then proceed with the upgrade to MySQL 5.1. For example,
- if you currently are running MySQL 4.0 and wish to upgrade to a
- newer series, upgrade to MySQL 4.1 first before upgrading to 5.0,
- and so forth. For information on upgrading to MySQL 5.0, see the
- MySQL 5.0 Reference Manual; for earlier releases, see the MySQL
- 3.23, 4.0, 4.1 Reference Manual.
+ As a general rule, to upgrade from one release series to another,
+ you should go to the next series rather than skipping a series. To
+ upgrade from a release series previous to MySQL 5.0, upgrade to
+ each successive release series in turn until you have reached
+ MySQL 5.0, and then proceed with the upgrade to MySQL 5.1. For
+ example, if you currently are running MySQL 4.0 and wish to
+ upgrade to a newer series, upgrade to MySQL 4.1 first before
+ upgrading to 5.0, and so forth. For information on upgrading to
+ MySQL 5.0, see the MySQL 5.0 Reference Manual; for earlier
+ releases, see the MySQL 3.23, 4.0, 4.1 Reference Manual.
- The following items form a checklist of things that you should do
- whenever you perform an upgrade from MySQL 5.0 to 5.1:
+ To upgrade from MySQL 5.0 to 5.1, use the items in the following
+ checklist as a guide:
* Before any upgrade, back up your databases, including the
- mysql database that contains the grant tables.
+ mysql database that contains the grant tables. See Section
+ 6.1, "Database Backups."
* Read all the notes in Section 2.12.1.1, "Upgrading from MySQL
- 5.0 to 5.1." These notes will enable you to identify upgrade
- issues that apply to your current MySQL installation. Read
- Appendix C, "MySQL Change History" as well, which provides
- information about features that are new in MySQL 5.1 or differ
- from those found in MySQL 5.0.
-
- * For any incompatibilities that require your attention before
- upgrading, deal with them as described in Section 2.12.1.1,
- "Upgrading from MySQL 5.0 to 5.1."
-
- * After you upgrade to a new version of MySQL, you should run
- mysql_upgrade (see Section 4.4.8, "mysql_upgrade --- Check
- Tables for MySQL Upgrade"). This program will check your
- tables, and repair them if necessary. It will also update your
- grant tables to make sure that they have the current structure
- so that you can take advantage of any new capabilities. (Some
- releases of MySQL introduce changes to the structure of the
- grant tables to add new privileges or features.)
+ 5.0 to 5.1." These notes enable you to identify upgrade issues
+ that apply to your current MySQL installation. Some
+ incompatibilities discussed in that section require your
+ attention before upgrading. Others should be dealt with after
+ upgrading.
+
+ * Read Appendix C, "MySQL Change History" as well, which
+ provides information about features that are new in MySQL 5.1
+ or differ from those found in MySQL 5.0.
+
+ * After you upgrade to a new version of MySQL, run mysql_upgrade
+ (see Section 4.4.8, "mysql_upgrade --- Check Tables for MySQL
+ Upgrade"). This program checks your tables, and attempts to
+ repair them if necessary. It also updates your grant tables to
+ make sure that they have the current structure so that you can
+ take advantage of any new capabilities. (Some releases of
+ MySQL introduce changes to the structure of the grant tables
+ to add new privileges or features.)
* If you are running MySQL Server on Windows, see Section
2.3.14, "Upgrading MySQL on Windows."
@@ -6197,15 +5867,16 @@ Note
* As of MySQL 5.1.9, the mysqld-max server is included in binary
distributions. There is no separate MySQL-Max distribution. As
- of MySQL 5.1.12, binary distributions contain a server that
- includes the features previously included in mysqld-max.
+ of MySQL 5.1.12, there is no mysqld-max server at all in
+ binary distributions. They contain a server that includes the
+ features previously included in mysqld-max.
* If you have created a user-defined function (UDF) with a given
name and upgrade MySQL to a version that implements a new
built-in function with the same name, the UDF becomes
inaccessible. To correct this, use DROP FUNCTION to drop the
UDF, and then use CREATE FUNCTION to re-create the UDF with a
- different non-conflicting name. The same is true if the new
+ different nonconflicting name. The same is true if the new
version of MySQL implements a built-in function with the same
name as an existing stored function. See Section 8.2.4,
"Function Name Parsing and Resolution," for the rules
@@ -6213,8 +5884,8 @@ Note
kinds of functions.
You can always move the MySQL format files and data files between
- different versions on the same architecture as long as you stay
- within versions for the same release series of MySQL.
+ different versions on systems with the same architecture as long
+ as you stay within versions for the same release series of MySQL.
If you are cautious about using new versions, you can always
rename your old mysqld before installing a newer one. For example,
@@ -6239,26 +5910,39 @@ Note
anything other than the program name, you have an active my.cnf
file that affects server or client operation.
+ If your MySQL installation contains a large amount of data that
+ might take a long time to convert after an in-place upgrade, you
+ might find it useful to create a "dummy" database instance for
+ assessing what conversions might be needed and the work involved
+ to perform them. Make a copy of your MySQL instance that contains
+ a full copy of the mysql database, plus all other databases
+ without data. Run your upgrade procedure on this dummy instance to
+ see what actions might be needed so that you can better evaluate
+ the work involved when performing actual data conversion on your
+ original database instance.
+
It is a good idea to rebuild and reinstall the Perl DBD::mysql
module whenever you install a new release of MySQL. The same
- applies to other MySQL interfaces as well, such as the PHP mysql
- extension and the Python MySQLdb module.
+ applies to other MySQL interfaces as well, such as PHP mysql
+ extensions and the Python MySQLdb module.
2.12.1.1. Upgrading from MySQL 5.0 to 5.1
After upgrading a 5.0 installation to 5.0.10 or above, it is
necessary to upgrade your grant tables. Otherwise, creating stored
- procedures and functions might not work. The procedure for doing
- this is described in Section 4.4.8, "mysql_upgrade --- Check
- Tables for MySQL Upgrade."
+ procedures and functions might not work. To perform this upgrade,
+ run mysql_upgrade.
Note
It is good practice to back up your data before installing any new
version of software. Although MySQL works very hard to ensure a
high level of quality, you should protect your data by making a
- backup. MySQL recommends that you dump and reload your tables from
- any previous version to upgrade to 5.1.
+ backup.
+
+ To upgrade to 5.1 from any previous version, MySQL recommends that
+ you dump your tables with mysqldump before upgrading and reload
+ the dump file after upgrading.
In general, you should do the following when upgrading from MySQL
5.0 to 5.1:
@@ -6276,7 +5960,7 @@ Note
+ The MySQL 5.1 change history describes significant new
features you can use in 5.1 or that differ from those
found in MySQL 5.0. Some of these changes may result in
- incompatibilities. See Section C.1, "Changes in release
+ incompatibilities. See Section C.1, "Changes in Release
5.1.x (Production)."
* Note particularly any changes that are marked Known issue or
@@ -6292,17 +5976,17 @@ Note
dump and reload, or use of a statement such as CHECK TABLE or
REPAIR TABLE.
For dump and reload instructions, see Section 2.12.4,
- "Rebuilding Tables or Table Indexes." Any procedure that
- involves REPAIR TABLE with the USE_FRM option must be done
- before upgrading. Use of this statement with a version of
+ "Rebuilding or Repairing Tables or Indexes." Any procedure
+ that involves REPAIR TABLE with the USE_FRM option must be
+ done before upgrading. Use of this statement with a version of
MySQL different from the one used to create the table (that
is, using it after upgrading) may damage the table. See
Section 12.5.2.6, "REPAIR TABLE Syntax."
* After you upgrade to a new version of MySQL, run mysql_upgrade
(see Section 4.4.8, "mysql_upgrade --- Check Tables for MySQL
- Upgrade"). This program will check your tables, and repair
- them if necessary. It will also update your grant tables to
+ Upgrade"). This program checks your tables, and attempts to
+ repair them if necessary. It also updates your grant tables to
make sure that they have the current structure so that you can
take advantage of any new capabilities. (Some releases of
MySQL introduce changes to the structure of the grant tables
@@ -6312,8 +5996,8 @@ Note
Rebuilt," to see whether changes to character sets or
collations were made that affect your table indexes. If so,
you will need to rebuild the affected indexes using the
- instructions in Section 2.12.4, "Rebuilding Tables or Table
- Indexes."
+ instructions in Section 2.12.4, "Rebuilding or Repairing
+ Tables or Indexes."
* If you are running MySQL Server on Windows, see Section
2.3.14, "Upgrading MySQL on Windows."
@@ -6322,6 +6006,26 @@ Note
Replication Setup," for information on upgrading your
replication setup.
+ If your MySQL installation contains a large amount of data that
+ might take a long time to convert after an in-place upgrade, you
+ might find it useful to create a "dummy" database instance for
+ assessing what conversions might be needed and the work involved
+ to perform them. Make a copy of your MySQL instance that contains
+ a full copy of the mysql database, plus all other databases
+ without data. Run your upgrade procedure on this dummy instance to
+ see what actions might be needed so that you can better evaluate
+ the work involved when performing actual data conversion on your
+ original database instance.
+
+ MySQL Enterprise MySQL Enterprise subscribers will find more
+ information about upgrading in the Knowledge Base articles found
+ at Upgrading
+ (https://kb.mysql.com/search.php?cat=search&category=41) Access
+ to the MySQL Knowledge Base collection of articles is one of the
+ advantages of subscribing to MySQL Enterprise. For more
+ information, see
+ http://www.mysql.com/products/enterprise/advisors.html.
+
The following lists describe changes that may affect applications
and that you should watch out for when upgrading to MySQL 5.1.
@@ -6338,6 +6042,39 @@ Note
Server Changes:
+ * Known issue: Dumps performed by using mysqldump to generate a
+ dump file before the upgrade and reloading the file after
+ upgrading are subject to the following problem:
+ Before MySQL 5.0.40, mysqldump displays SPATIAL index
+ definitions using prefix lengths for the indexed columns.
+ These prefix lengths are accepted in MySQL 5.0, but not as of
+ MySQL 5.1. If you use mysqldump from versions of MySQL older
+ than 5.0.40, any table containing SPATIAL indexes will cause
+ an error when the dump file is reloaded into MySQL 5.1 or
+ higher.
+ For example, a table definition might look like this when
+ dumped in MySQL 5.0:
+CREATE TABLE `t` (
+ `g` geometry NOT NULL,
+ SPATIAL KEY `g` (`g`(32))
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ The SPATIAL index definition will not be accepted in MySQL
+ 5.1. To work around this, edit the dump file to remove the
+ prefix:
+CREATE TABLE `t` (
+ `g` geometry NOT NULL,
+ SPATIAL KEY `g` (`g`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ Dump files can be large, so it may be preferable to dump table
+ definitions and data separately to make it easier to edit the
+ definitions:
+shell> mysqldump --no-data other_args > definitions.sql
+shell> mysqldump --no-create-info other_args > data.sql
+ Then edit definitions.sql before reloading definitions.sql and
+ data.sql, in that order.
+ If you upgrade to a version of MySQL 5.0 higher than 5.0.40
+ before upgrading to MySQL 5.1, this problem does not occur.
+
* Known issue: Before MySQL 5.1.30, the CHECK TABLE ... FOR
UPGRADE statement did not check for incompatible collation
changes made in MySQL 5.1.24. (This also affects mysqlcheck
@@ -6364,43 +6101,38 @@ Note
* Known issue: MySQL introduces encoding for table names that
have non-ASCII characters (see Section 8.2.3, "Mapping of
- Identifiers to File Names"). After a live upgrade from MySQL
+ Identifiers to File Names"). After a binary upgrade from MySQL
5.0 to 5.1 or higher, the server recognizes names that have
non-ASCII characters and adds a #mysql50# prefix to them.
- Running mysqlcheck --all-databases --check-upgrade
- --fix-db-names --fix-table-names later upgrades these names by
- encoding them with the new format and removes the #mysql50#
- prefix.
- However, although this is done for tables, it is not done for
- views prior to MySQL 5.1.23. To work around this problem, drop
- each affected view and recreate it. This problem is fixed as
- of MySQL 5.1.23.
- To check and repair tables and to upgrade the system tables,
- mysql_upgrade executes the following commands:
-mysqlcheck --check-upgrade --all-databases --auto-repair
-mysql_fix_privilege_tables
+ As of MySQL 5.1.31, mysql_upgrade encodes these names by
+ executing the following command:
mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table
-names
- However, prior to MySQL 5.1.31, mysql_upgrade does not run the
- third command, which is necessary to re-encode database or
- table names that contain non-alphanumeric characters. (They
- still appear after the upgrade with the #mysql50# prefix.) If
- you have such database or table names, execute the third
- command manually after executing mysql_upgrade. This problem
- is fixed as of MySQL 5.1.31.
-
- * Known issue: When upgrading from MySQL 5.0 to 5.1, running
- mysqlcheck (or mysql_upgrade, which runs mysqlcheck) to
- upgrade tables fails for names that must be written as quoted
- identifiers. To work around this problem, rename each affected
- table to a name that does not require quoting:
+ Prior to MySQL 5.1.31, mysql_upgrade does not execute this
+ command, so you should execute it manually if you have
+ database or table names that contain nonalphanumeric
+ characters.
+ Prior to MySQL 5.1.23, the mysqlcheck command does not perform
+ the name encoding for views. To work around this problem, drop
+ each affected view and recreate it.
+ mysqlcheck cannot fix names that contain literal instances of
+ the @ character that is used for encoding special characters.
+ If you have databases or tables that contain this character,
+ use mysqldump to dump them before upgrading to MySQL 5.1, and
+ then reload the dump file after upgrading.
+
+ * Known issue: When upgrading from MySQL 5.0 to versions of 5.1
+ prior to 5.1.23, running mysqlcheck (or mysql_upgrade, which
+ runs mysqlcheck) to upgrade tables fails for names that must
+ be written as quoted identifiers. To work around this problem,
+ rename each affected table to a name that does not require
+ quoting:
RENAME TABLE `tab``le_a` TO table_a;
RENAME TABLE `table b` TO table_b;
After renaming the tables, run the mysql_upgrade program. Then
rename the tables back to their original names:
RENAME TABLE table_a TO `tab``le_a`;
RENAME TABLE table_b TO `table b`;
- This problem is fixed as of MySQL 5.1.23.
* Known issue: In connection with view creation, the server
created arc directories inside database directories and
@@ -6428,44 +6160,26 @@ RENAME TABLE table_b TO `table b`;
+ Instead of renaming a view after the downgrade, drop it
and recreate it.
- * Known issue: Dumps performed by using mysqldump to generate a
- dump file before the upgrade and reloading the file after
- upgrading are subject to the following problem:
- Before MySQL 5.0.40, mysqldump displays SPATIAL index
- definitions using prefix lengths for the indexed columns.
- These prefix lengths are accepted in MySQL 5.0, but not as of
- MySQL 5.1. If you use mysqldump from versions of MySQL older
- than 5.0.40, any table containing SPATIAL indexes will cause
- an error when the dump file is reloaded into MySQL 5.1 or
- higher.
- For example, a table definition might look like this when
- dumped in MySQL 5.0:
-CREATE TABLE `t` (
- `g` geometry NOT NULL,
- SPATIAL KEY `g` (`g`(32))
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
- The SPATIAL index definition will not be accepted in MySQL
- 5.1. To work around this, edit the dump file to remove the
- prefix:
-CREATE TABLE `t` (
- `g` geometry NOT NULL,
- SPATIAL KEY `g` (`g`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
- Dump files can be large, so it may be preferable to dump table
- definitions and data separately to make it easier to edit the
- definitions:
-shell> mysqldump --no-data other_args > definitions.sql
-shell> mysqldump --no-create-info other_args > data.sql
- Then edit definitions.sql before reloading definitions.sql and
- data.sql, in that order.
+ * Incompatible change: Character set or collation changes were
+ made in MySQL 5.1.21, 5.1.23, and 5.1.24 that may require
+ table indexes to be rebuilt. For details, see Section 2.12.3,
+ "Checking Whether Table Indexes Must Be Rebuilt."
+
+ * Incompatible change: In MySQL 5.1.36, options for loading
+ plugins such as pluggable storage engines were changed from
+ boolean to tristate format. The implementations overlap, but
+ if you previously used options of the form --plugin_name=0 or
+ --plugin_name=1, you should instead use --plugin_name=OFF or
+ --plugin_name=ON, respectively. For details, see Section
+ 5.1.3, "Server Options for Loading Plugins."
* Incompatible change: From MySQL 5.1.24 to 5.1.31, the UPDATE
statement was changed such that assigning NULL to a NOT NULL
column caused an error even when strict SQL mode was not
enabled. The original behavior before MySQL 5.1.24 was that
such assignments caused an error only in strict SQL mode, and
- otherwise set the column to the the implicit default value for
- the column data type and generated a warning. (For information
+ otherwise set the column to the implicit default value for the
+ column data type and generated a warning. (For information
about implicit default values, see Section 10.1.4, "Data Type
Default Values.")
The change caused compatibility problems for applications that
@@ -6478,11 +6192,6 @@ shell> mysqldump --no-create-info other_
occur if you replicate between servers that have the modified
UPDATE behavior and those that do not.
- * Incompatible change: Character set or collation changes were
- made in MySQL 5.1.21, 5.1.23, and 5.1.24 that may require
- table indexes to be rebuilt. For details, see Section 2.12.3,
- "Checking Whether Table Indexes Must Be Rebuilt."
-
* Incompatible change: As of MySQL 5.1.29, the default binary
logging mode has been changed from MIXED to STATEMENT for
compatibility with MySQL 5.0.
@@ -6537,9 +6246,22 @@ shell> mysqldump --no-create-info other_
SHOW or DESCRIBE statement. This happened to work in some
instances, but is no longer supported. In many cases, a
workaround for this change is to use the cursor with a SELECT
- query to read from an INFORMATION_SCHEMA table that provides
+ query to read from an INFORMATION_SCHEMA table that produces
the same information as the SHOW statement.
+ * Incompatible change: SHOW CREATE VIEW displays view
+ definitions using an AS alias_name clause for each column. If
+ a column is created from an expression, the default alias is
+ the expression text, which can be quite long. As of MySQL
+ 5.1.23, aliases for column names in CREATE VIEW statements are
+ checked against the maximum column length of 64 characters
+ (not the maximum alias length of 256 characters). As a result,
+ views created from the output of SHOW CREATE VIEW fail if any
+ column alias exceeds 64 characters. This can cause problems
+ for replication or loading dump files. For additional
+ information and workarounds, see Section D.4, "Restrictions on
+ Views."
+
* Incompatible change: MySQL 5.1 implements support for a plugin
API that allows the loading and unloading of components at
runtime, without restarting the server. Section 22.2, "The
@@ -6558,7 +6280,7 @@ shell> mysqldump --no-create-info other_
* Incompatible change: The table_cache system variable has been
renamed to table_open_cache. Any scripts that refer to
- table_cache should be updated to use the new name.
+ table_cache must be updated to use the new name.
* Incompatible change: Several issues were identified for stored
programs (stored procedures and functions, triggers, and
@@ -6590,10 +6312,7 @@ shell> mysqldump --no-create-info other_
In 5.1.20 only, the following conditions apply: 1) The default
is to use syslog, which is not compatible with releases prior
to 5.1.20. 2) Logging to syslog may fail to operate correctly
- in some cases, so we recommend that you use --skip-syslog or
- --log-error. To maintain the older behavior if you were using
- no error-logging option, use --skip-syslog. If you were using
- --log-error, continue to use it.
+ in some cases. For these reasons, avoid using MySQL 5.1.20.
* Incompatible change: As of MySQL 5.1.15, InnoDB rolls back
only the last statement on a transaction timeout. A new
@@ -6649,11 +6368,11 @@ shell> mysqldump --no-create-info other_
schema_name.PI ().
+ Alternatively, rename the stored function to use a
- non-conflicting name and change invocations of the
+ nonconflicting name and change invocations of the
function to use the new name.
* Incompatible change: For utf8 columns, the full-text parser
- incorrectly considered several non-word punctuation and
+ incorrectly considered several nonword punctuation and
whitespace characters as word characters, causing some
searches to return incorrect results. The fix involves a
change to the full-text parser in MySQL 5.1.12, so as of
@@ -6665,24 +6384,24 @@ REPAIR TABLE tbl_name QUICK;
runtime, so the distinction between disabled and invalid
storage engines no longer applies. As of MySQL 5.1.12, this
affects the NO_ENGINE_SUBSTITUTION SQL mode, as described in
- Section 5.1.7, "Server SQL Modes."
+ Section 5.1.8, "Server SQL Modes."
* Incompatible change: The structure of FULLTEXT indexes has
been changed in MySQL 5.1.6. After upgrading to MySQL 5.1.6 or
- greater, use the REPAIR TABLE ... QUICK statement for each
- table that contains any FULLTEXT indexes.
+ greater, any tables that have FULLTEXT indexes must be
+ repaired with REPAIR TABLE:
+REPAIR TABLE tbl_name QUICK;
* Incompatible change: In MySQL 5.1.6, when log tables were
implemented, the default log destination for the general query
and slow query log was TABLE. As of MySQL 5.1.21, this default
has been changed to FILE, which is compatible with MySQL 5.0,
- but incompatible with earlier releases of MySQL 5.1 from 5.1.6
- to 5.1.20. If you are upgrading from MySQL 5.0 to this
- release, no logging option changes should be necessary.
- However, if you are upgrading from 5.1.6 through 5.1.20 to
- this release and were using TABLE logging, use the
- --log-output=TABLE option explicitly to preserve your server's
- table-logging behavior.
+ but incompatible with earlier releases of MySQL 5.1. If you
+ are upgrading from MySQL 5.0 to 5.1.21 or higher, no logging
+ option changes should be necessary. However, if you are
+ upgrading from 5.1.6 through 5.1.20 to 5.1.21 or higher and
+ were using TABLE logging, use the --log-output=TABLE option
+ explicitly to preserve your server's table-logging behavior.
* Incompatible change: For ENUM columns that had enumeration
values containing commas, the commas were mapped to 0xff
@@ -6701,43 +6420,18 @@ REPAIR TABLE tbl_name QUICK;
MONTHNAME() functions. See Section 9.8, "MySQL Server Locale
Support."
- * As of MySQL 5.1.6, special characters in database and table
- identifiers are encoded when creating the corresponding
- directory names and file names. This relaxes the restrictions
- on the characters that can appear in identifiers. See Section
- 8.2.3, "Mapping of Identifiers to File Names." To cause
- database and table names to be updated to the new format
- should they contain special characters, re-encode them with
- mysqlcheck. The following command updates all names to the new
- encoding:
-shell> mysqlcheck --check-upgrade --fix-db-names --fix-table-names --
-all-databases
- mysqlcheck cannot fix names that contain literal instances of
- the @ character that is used for encoding special characters.
- If you have databases or tables that contain this character,
- use mysqldump to dump them before upgrading to MySQL 5.1.6 or
- later, and then reload the dump file after upgrading.
-
* As of MySQL 5.1.9, mysqld_safe no longer implicitly invokes
mysqld-max if it exists. Instead, it invokes mysqld unless a
--mysqld or --mysqld-version option is given to specify
another server explicitly. If you previously relied on the
implicit invocation of mysqld-max, you should use an
- appropriate option now.
+ appropriate option now. As of MySQL 5.1.12, there is no longer
+ any separate mysqld-max server, so no change should be
+ necessary.
SQL Changes:
- * Incompatible change: Multiple-table DELETE statements
- containing ambiguous aliases could have unintended side
- effects such as deleting rows from the wrong table. Example:
-DELETE FROM t1 AS a2 USING t1 AS a1 INNER JOIN t2 AS a2;
- As of MySQL 5.1.23, alias declarations can be declared only in
- the table_references part. Elsewhere in the statement, alias
- references are allowed but not alias declarations. Statements
- containing aliases that are no longer allowed must be
- rewritten.
-
- * Important note: Prior to MySQL 5.1.17, the parser accepted
+ * Known issue: Prior to MySQL 5.1.17, the parser accepted
invalid code in SQL condition handlers, leading to server
crashes or unexpected execution behavior in stored programs.
Specifically, the parser allowed a condition handler to refer
@@ -6745,10 +6439,10 @@ DELETE FROM t1 AS a2 USING t1 AS a1 INNE
This was incorrect because block label scope does not include
the code for handlers declared within the labeled block.
As of 5.1.17, the parser rejects this invalid construct, but
- if you upgrade in place (without dumping and reloading your
- databases), existing handlers that contain the construct still
- are invalid even if they appear to function as you expect and
- should be rewritten.
+ if you perform a binary upgrade (without dumping and reloading
+ your databases), existing handlers that contain the construct
+ still are invalid and should be rewritten even if they appear
+ to function as you expect.
To find affected handlers, use mysqldump to dump all stored
procedures and functions, triggers, and events. Then attempt
to reload them into an upgraded server. Handlers that contain
@@ -6771,27 +6465,37 @@ DELETE FROM t1 AS a2 USING t1 AS a1 INNE
be dropped and re-created so that their definitions do not
contain truncated comments.
+ * Incompatible change: Multiple-table DELETE statements
+ containing ambiguous aliases could have unintended side
+ effects such as deleting rows from the wrong table. Example:
+DELETE FROM t1 AS a2 USING t1 AS a1 INNER JOIN t2 AS a2;
+ As of MySQL 5.1.23, alias declarations can be declared only in
+ the table_references part. Elsewhere in the statement, alias
+ references are allowed but not alias declarations. Statements
+ containing aliases that are no longer allowed must be
+ rewritten.
+
* Incompatible change: As of MySQL 5.1.8, TYPE = engine_name is
still accepted as a synonym for the ENGINE = engine_name table
option but generates a warning. You should note that this
option is not available in MySQL 5.1.7, and is removed
- altogether as of MySQL 5.2.5 and produces a syntax error.
+ altogether as of MySQL 6.0 and produces a syntax error.
TYPE has been deprecated since MySQL 4.0.
- * Incompatible change: The namespace for triggers has changed in
+ * Incompatible change: The namespace for triggers changed in
MySQL 5.0.10. Previously, trigger names had to be unique per
table. Now they must be unique within the schema (database).
An implication of this change is that DROP TRIGGER syntax now
uses a schema name instead of a table name (schema name is
optional and, if omitted, the current schema will be used).
- When upgrading from a previous version of MySQL 5 to MySQL
- 5.0.10 or newer, you must drop all triggers and re-create them
- or DROP TRIGGER will not work after the upgrade. Here is a
- suggested procedure for doing this:
+ When upgrading from a version of MySQL 5 older than 5.0.10 to
+ MySQL 5.0.10 or newer, you must drop all triggers and
+ re-create them or DROP TRIGGER will not work after the
+ upgrade. Here is a suggested procedure for doing this:
1. Upgrade to MySQL 5.0.10 or later to be able to access
trigger information in the INFORMATION_SCHEMA.TRIGGERS
- table. (It should work even for pre-5.0.10 triggers.)
+ table. (This should work even for pre-5.0.10 triggers.)
2. Dump all trigger definitions using the following SELECT
statement:
@@ -6805,7 +6509,7 @@ INTO OUTFILE '/tmp/triggers.sql'
FROM INFORMATION_SCHEMA.TRIGGERS AS t;
The statement uses INTO OUTFILE, so you must have the
FILE privilege. The file will be created on the server
- host; use a different file name if you like. To be 100%
+ host. Use a different file name if you like. To be 100%
safe, inspect the trigger definitions in the triggers.sql
file, and perhaps make a backup of the file.
@@ -6815,7 +6519,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS AS t;
shell> rm */*.TRG
4. Start the server and re-create all triggers using the
- triggers.sql file: For example in my case it was:
+ triggers.sql file:
mysql> delimiter // ;
mysql> source /tmp/triggers.sql //
@@ -6832,13 +6536,12 @@ mysql> source /tmp/triggers.sql //
SUPER privilege has changed to a requirement for the TRIGGER
privilege. When upgrading from a previous version of MySQL 5.0
or 5.1 to MySQL 5.1.6 or newer, be sure to update your grant
- tables as described in Section 4.4.8, "mysql_upgrade --- Check
- Tables for MySQL Upgrade." This process assigns the TRIGGER
+ tables by running mysql_upgrade. This will assign the TRIGGER
privilege to all accounts that had the SUPER privilege. If you
fail to update the grant tables, triggers may fail when
- activated. (After updating the grant tables, you can revoke
- the SUPER privilege from those accounts that no longer
- otherwise require it.)
+ activated. After updating the grant tables, you can revoke the
+ SUPER privilege from those accounts that no longer otherwise
+ require it.
* Some keywords are reserved in MySQL 5.1 that were not reserved
in MySQL 5.0. See Section 8.3, "Reserved Words."
@@ -6893,7 +6596,7 @@ mysql> source /tmp/triggers.sql //
the version to which you are downgrading. If so and these
changes affect your table indexes, you will need to rebuild
the affected indexes using the instructions in Section 2.12.4,
- "Rebuilding Tables or Table Indexes."
+ "Rebuilding or Repairing Tables or Indexes."
In most cases, you can move the MySQL format files and data files
between different versions on the same architecture as long as you
@@ -7016,7 +6719,7 @@ mysql> source /tmp/triggers.sql //
an affected character set or collation, either by dropping and
re-creating the indexes, or by dumping and reloading the entire
table. For information about rebuilding indexes, see Section
- 2.12.4, "Rebuilding Tables or Table Indexes."
+ 2.12.4, "Rebuilding or Repairing Tables or Indexes."
To check whether a table has indexes that must be rebuilt, consult
the following list. It indicates which versions of MySQL
@@ -7030,28 +6733,28 @@ mysql> source /tmp/triggers.sql //
example, Bug#29461: http://bugs.mysql.com/29461 was fixed in MySQL
5.0.48, so it applies to upgrades from versions older than 5.0.48
to 5.0.48 or newer, and also to downgrades from 5.0.48 or newer to
- versions older than 5.0.58.
+ versions older than 5.0.48.
If you have tables with indexes that are affected, rebuild the
indexes using the instructions given in Section 2.12.4,
- "Rebuilding Tables or Table Indexes."
+ "Rebuilding or Repairing Tables or Indexes."
- In many cases, you can use CHECK TABLE ... FOR UPDATE to identify
+ In many cases, you can use CHECK TABLE ... FOR UPGRADE to identify
tables for which index rebuilding is required. (It will report:
- Table upgrade required. Please do "REPAIR TABLE `tbl_name`" to fix
- it!) In these cases, you can also use mysqlcheck --check-upgrade
- or mysql_upgrade, which execute CHECK TABLE. However, the use of
- CHECK TABLE applies only after upgrades, not downgrades. Also,
- CHECK TABLE is not applicable to all storage engines. For details
- about which storage engines CHECK TABLE supports, see Section
- 12.5.2.3, "CHECK TABLE Syntax."
+ Table upgrade required. Please do "REPAIR TABLE `tbl_name`" or
+ dump/reload to fix it!) In these cases, you can also use
+ mysqlcheck --check-upgrade or mysql_upgrade, which execute CHECK
+ TABLE. However, the use of CHECK TABLE applies only after
+ upgrades, not downgrades. Also, CHECK TABLE is not applicable to
+ all storage engines. For details about which storage engines CHECK
+ TABLE supports, see Section 12.5.2.3, "CHECK TABLE Syntax."
Changes that cause index rebuilding to be necessary:
* MySQL 5.0.48 (Bug#29461: http://bugs.mysql.com/29461)
Affects indexes for columns that use any of these character
sets: eucjpms, euc_kr, gb2312, latin7, macce, ujis
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.29, 6.0.8 (see
Bug#39585: http://bugs.mysql.com/39585)
@@ -7060,14 +6763,14 @@ mysql> source /tmp/triggers.sql //
columns that contain any of these characters: '`' GRAVE
ACCENT, '[' LEFT SQUARE BRACKET, '\' REVERSE SOLIDUS, ']'
RIGHT SQUARE BRACKET, '~' TILDE
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.29, 6.0.8 (see
Bug#39585: http://bugs.mysql.com/39585)
* MySQL 5.1.21 (Bug#29461: http://bugs.mysql.com/29461)
Affects indexes for columns that use any of these character
sets: eucjpms, euc_kr, gb2312, latin7, macce, ujis
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.29, 6.0.8 (see
Bug#39585: http://bugs.mysql.com/39585)
@@ -7076,7 +6779,7 @@ mysql> source /tmp/triggers.sql //
columns that contain any of these characters: '`' GRAVE
ACCENT, '[' LEFT SQUARE BRACKET, '\' REVERSE SOLIDUS, ']'
RIGHT SQUARE BRACKET, '~' TILDE
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.29, 6.0.8 (see
Bug#39585: http://bugs.mysql.com/39585)
@@ -7084,26 +6787,26 @@ mysql> source /tmp/triggers.sql //
Affects indexes that use the utf8_general_ci or
ucs2_general_ci collation for columns that contain 'ß' LATIN
SMALL LETTER SHARP S (German).
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.30, 6.0.8 (see
Bug#40053: http://bugs.mysql.com/40053)
* * MySQL 6.0.1 (WL#3664)
Affects indexes that use the latin2_czech_cs collation.
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
- as of MySQL 6.0.9 (see
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
+ as of MySQL 5.4.4, 6.0.9 (see
Bug#40054: http://bugs.mysql.com/40054)
MySQL 6.0.5 (Bug#33452: http://bugs.mysql.com/33452)
Affects indexes that use the latin2_czech_cs collation.
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
- as of MySQL 6.0.9 (see
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
+ as of MySQL 5.4.4, 6.0.9 (see
Bug#40054: http://bugs.mysql.com/40054)
* MySQL 6.0.5 (Bug#27877: http://bugs.mysql.com/27877)
Affects indexes that use the utf8_general_ci or
ucs2_general_ci collation for columns that contain 'ß' LATIN
SMALL LETTER SHARP S (German).
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 6.0.8 (see
Bug#40053: http://bugs.mysql.com/40053)
@@ -7113,19 +6816,23 @@ mysql> source /tmp/triggers.sql //
big5_chinese_ci: '~' TILDE or '`' GRAVE ACCENT;
cp866_general_ci: j LATIN SMALL LETTER J; gb2312_chinese_ci:
'~' TILDE; gbk_chinese_ci: '~' TILDE
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
- as of MySQL 6.0.9 (see
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
+ as of MySQL 5.4.4, 6.0.9 (see
Bug#40054: http://bugs.mysql.com/40054)
-2.12.4. Rebuilding Tables or Table Indexes
+2.12.4. Rebuilding or Repairing Tables or Indexes
This section describes how to rebuild a table. This can be
necessitated by changes to MySQL such as how data types are
handled or changes to character set handling. For example, an
error in a collation might have been corrected, necessitating a
table rebuild to rebuild the indexes for character columns that
- use the collation. Methods for rebuilding a table include dumping
- and reloading it, or using ALTER TABLE.
+ use the collation. It might also be that a table repair or upgrade
+ should be done as indicated by a table check operation such as
+ that performed by CHECK TABLE, mysqlcheck, or mysql_upgrade.
+
+ Methods for rebuilding a table include dumping and reloading it,
+ or using ALTER TABLE or REPAIR TABLE.
Note
@@ -7141,16 +6848,6 @@ Note
either before or after upgrading or downgrading. Reloading still
must be done afterward.
- For the examples in this section, suppose that a table t1 is
- defined like this:
-CREATE TABLE t1 (
- c1 VARCHAR(10) CHARACTER SET macce,
- c2 TEXT CHARACTER SET ujis,
- c3 VARCHAR(20) CHARACTER SET latin1,
- PRIMARY KEY (c1),
- INDEX (c2(20))
-);
-
To re-create a table by dumping and reloading it, use mysqldump to
create a dump file and mysql to reload the file:
shell> mysqldump db_name t1 > dump.sql
@@ -7171,8 +6868,22 @@ shell> mysql < dump.sql
For example, if t1 is a MyISAM table, use this statement:
mysql> ALTER TABLE t1 ENGINE = MyISAM;
- If you are not sure which storage engine is used for the table,
- use SHOW CREATE TABLE to display the table definition.
+ If you are not sure which storage engine to specify in the ALTER
+ TABLE statement, use SHOW CREATE TABLE to display the table
+ definition.
+
+ If you must rebuild a table because a table checking operation
+ indicates that the table is corrupt or needs an upgrade, you can
+ use REPAIR TABLE if that statement supports the table's storage
+ engine. For example, to repair a MyISAM table, use this statement:
+mysql> REPAIR TABLE t1;
+
+ For storage engines such as InnoDB that REPAIR TABLE does not
+ support, use mysqldump to create a dump file and mysql to reload
+ the file, as described earlier.
+
+ For specifics about which storage engines REPAIR TABLE supports,
+ see Section 12.5.2.6, "REPAIR TABLE Syntax."
2.12.5. Copying MySQL Databases to Another Machine
@@ -7290,7 +7001,7 @@ Warning
A known issue with binary distributions is that on older Linux
systems that use libc (such as Red Hat 4.x or Slackware), you get
- some (non-fatal) issues with host name resolution. If your system
+ some (nonfatal) issues with host name resolution. If your system
uses libc rather than glibc2, you probably will encounter some
difficulties with host name resolution and getpwnam(). This
happens because glibc (unfortunately) depends on some external
@@ -7362,8 +7073,8 @@ getpwnam: No such file or directory
Note that glibc versions before and including version 2.1.1 have a
fatal bug in pthread_mutex_timedwait() handling, which is used
- when INSERT DELAYED statements are issued. We recommend that you
- not use INSERT DELAYED before upgrading glibc.
+ when INSERT DELAYED statements are issued. Do not use INSERT
+ DELAYED before upgrading glibc.
Note that Linux kernel and the LinuxThread library can by default
handle a maximum of 1,024 threads. If you plan to have more than
@@ -7409,14 +7120,14 @@ getpwnam: No such file or directory
future, so that the commands needed to produce your own build can
be reduced to ./configure; make; make install.
- We recommend that you use these patches to build a special static
- version of libpthread.a and use it only for statically linking
- against MySQL. We know that these patches are safe for MySQL and
- significantly improve its performance, but we cannot say anything
- about their effects on other applications. If you link other
- applications that require LinuxThreads against the patched static
- version of the library, or build a patched shared version and
- install it on your system, you do so at your own risk.
+ If you use these patches to build a special static version of
+ libpthread.a, use it only for statically linking against MySQL. We
+ know that these patches are safe for MySQL and significantly
+ improve its performance, but we cannot say anything about their
+ effects on other applications. If you link other applications that
+ require LinuxThreads against the patched static version of the
+ library, or build a patched shared version and install it on your
+ system, you do so at your own risk.
If you experience any strange problems during the installation of
MySQL, or with some common utilities hanging, it is very likely
@@ -7523,7 +7234,7 @@ open-files-limit=8192
binary or RPM version, you can safely set max_connections at 1500,
assuming no large key buffer or heap tables with lots of data. The
more you reduce STACK_SIZE in LinuxThreads the more threads you
- can safely create. We recommend values between 128KB and 256KB.
+ can safely create. Values between 128KB and 256KB are recommended.
If you use a lot of concurrent connections, you may suffer from a
"feature" in the 2.2 kernel that attempts to prevent fork bomb
@@ -7540,8 +7251,8 @@ open-files-limit=8192
http://dev.mysql.com/Downloads/Patches/linux-fork.patch. We have
done rather extensive testing of this patch on both development
and production systems. It has significantly improved MySQL
- performance without causing any problems and we recommend it to
- our users who still run high-load servers on 2.2 kernels.
+ performance without causing any problems and is recommended for
+ users who still run high-load servers on 2.2 kernels.
This issue has been fixed in the 2.4 kernel, so if you are not
satisfied with the current performance of your system, rather than
@@ -7557,8 +7268,8 @@ open-files-limit=8192
results on a four-CPU system: Virtually no slowdown as the number
of clients was increased up to 1,000, and a 300% scaling factor.
Based on these results, for a high-load SMP server using a 2.2
- kernel, we definitely recommend upgrading to the 2.4 kernel at
- this point.
+ kernel, it is definitely recommended to upgrade to the 2.4 kernel
+ at this point.
We have discovered that it is essential to run the mysqld process
with the highest possible priority on the 2.4 kernel to achieve
@@ -7720,12 +7431,12 @@ CXXFLAGS="-O3 -fno-omit-frame-pointer -f
for processes. If SELinux is enabled (SELINUX in
/etc/selinux/config is set to enforcing, SELINUXTYPE is set to
either targeted or strict), you might encounter problems
- installing MySQL AB RPM packages.
+ installing Sun Microsystems, Inc. RPM packages.
Red Hat has an update that solves this. It involves an update of
the "security policy" specification to handle the install
- structure of the RPMs provided by MySQL AB. For further
- information, see
+ structure of the RPMs provided by Sun Microsystems, Inc. For
+ further information, see
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167551 and
http://rhn.redhat.com/errata/RHBA-2006-0049.html.
@@ -7791,8 +7502,7 @@ CXXFLAGS="-O3 -fno-omit-frame-pointer -f
MySQL.
If this occurs, you must use GNU tar (gtar) to unpack the
- distribution. You can find a precompiled copy for Solaris at
- http://dev.mysql.com/downloads/os-solaris.html.
+ distribution.
Sun native threads work only on Solaris 2.5 and higher. For
Solaris 2.4 and earlier, MySQL automatically uses MIT-pthreads.
@@ -7981,13 +7691,13 @@ In file included from mysql.cc:50:
The solution to this problem is to do one of the following:
- * Configure with CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H
+ 1. Configure with CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H
./configure.
- * Edit /usr/include/widec.h as indicated in the preceding
+ 2. Edit /usr/include/widec.h as indicated in the preceding
discussion and re-run configure.
- * Remove the #define HAVE_TERM line from the config.h file and
+ 3. Remove the #define HAVE_TERM line from the config.h file and
run make again.
If your linker cannot find -lz when linking client programs, the
@@ -8251,11 +7961,11 @@ env CC=gcc CXX=gcc CXXFLAGS=-O3 \
distribution.
There are a couple of small problems when compiling MySQL on
- HP-UX. We recommend that you use gcc instead of the HP-UX native
- compiler, because gcc produces better code.
+ HP-UX. Use gcc instead of the HP-UX native compiler, because gcc
+ produces better code.
- We recommend using gcc 2.95 on HP-UX. Don't use high optimization
- flags (such as -O6) because they may not be safe on HP-UX.
+ Use gcc 2.95 on HP-UX. Don't use high optimization flags (such as
+ -O6) because they may not be safe on HP-UX.
The following configure line should work with gcc 2.95:
CFLAGS="-I/opt/dce/include -fpic" \
@@ -8387,7 +8097,7 @@ export CXXFLAGS=$CFLAGS
assembler that may cause it to generate bad code when used with
gcc.
- We recommend the following configure line with gcc 2.95 on AIX:
+ Use the following configure line with gcc 2.95 on AIX:
CC="gcc -pipe -mcpu=power -Wa,-many" \
CXX="gcc -pipe -mcpu=power -Wa,-many" \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
@@ -8397,8 +8107,8 @@ CXXFLAGS="-felide-constructors -fno-exce
successful. IBM is aware of this problem but is in no hurry to fix
it because of the workaround that is available. We don't know if
the -fno-exceptions is required with gcc 2.95, but because MySQL
- doesn't use exceptions and the option generates faster code, we
- recommend that you should always use it with gcc.
+ doesn't use exceptions and the option generates faster code, you
+ should always use it with gcc.
If you get a problem with assembler code, try changing the
-mcpu=xxx option to match your CPU. Typically power2, power, or
@@ -8465,8 +8175,7 @@ export LDR_CNTRL='MAXDATA=0x80000000'
included with AIX.
As of AIX 4.1, the C compiler has been unbundled from AIX as a
- separate product. We recommend using gcc 3.3.2, which can be
- obtained here:
+ separate product. gcc 3.3.2 can be obtained here:
ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gc
c/
@@ -8753,7 +8462,7 @@ CXX=gcc CXXFLAGS="-D_FILE_OFFSET_BITS=64
are in the opensrc directory. They are available at
ftp://ftp.sco.com/pub/openserver5/opensrc/.
- We recommend using the latest production release of MySQL.
+ Use the latest production release of MySQL.
SCO provides operating system patches at
ftp://ftp.sco.com/pub/openserver5 for OpenServer 5.0.[0-6] and
@@ -8850,7 +8559,7 @@ NMOUNT 0 4
NPROC 0 50 16000
NREGION 0 500 160000
- We recommend setting these values as follows:
+ Set these values as follows:
* NOFILES should be 4096 or 2048.
@@ -8864,10 +8573,10 @@ NREGION 0 500
Then rebuild and reboot the kernel by issuing this command:
# /etc/conf/bin/idbuild -B && init 6
- We recommend tuning the system, but the proper parameter values to
- use depend on the number of users accessing the application or
- database and size the of the database (that is, the used buffer
- pool). The following kernel parameters can be set with idtune:
+ To tune the system, the proper parameter values to use depend on
+ the number of users accessing the application or database and size
+ the of the database (that is, the used buffer pool). The following
+ kernel parameters can be set with idtune:
* SHMMAX (recommended setting: 128MB) and SHMSEG (recommended
setting: 15). These parameters have an influence on the MySQL
@@ -8878,8 +8587,8 @@ NREGION 0 500
* MAXPROC should be set to at least 3000/4000 (depends on number
of users) or more.
- * We also recommend using the following formulas to calculate
- values for SEMMSL, SEMMNS, and SEMMNU:
+ * The following formulas are recommended to calculate values for
+ SEMMSL, SEMMNS, and SEMMNU:
SEMMSL = 13
13 is what has been found to be the best for both Progress and
MySQL.
@@ -9028,16 +8737,16 @@ CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS=
/u95/bin:/bin. If the user wants UnixWare 7 support first, the
path would be /udk/bin:/u95/bin:/bin:.
- We recommend using the latest production release of MySQL. Should
- you choose to use an older release of MySQL on OpenServer 6.0.x,
- you must use a version of MySQL at least as recent as 3.22.13 to
- get fixes for some portability and OS problems.
+ Use the latest production release of MySQL. Should you choose to
+ use an older release of MySQL on OpenServer 6.0.x, you must use a
+ version of MySQL at least as recent as 3.22.13 to get fixes for
+ some portability and OS problems.
MySQL distribution files with names of the following form are tar
archives of media are tar archives of media images suitable for
installation with the SCO Software Manager (/etc/custom) on SCO
OpenServer 6:
-mysql-PRODUCT-5.1.35-sco-osr6-i686.VOLS.tar
+mysql-PRODUCT-5.1.39-sco-osr6-i686.VOLS.tar
A distribution where PRODUCT is pro-cert is the Commercially
licensed MySQL Pro Certified server. A distribution where PRODUCT
@@ -9049,7 +8758,7 @@ mysql-PRODUCT-5.1.35-sco-osr6-i686.VOLS.
example:
shell> mkdir /tmp/mysql-pro
shell> cd /tmp/mysql-pro
-shell> tar xf /tmp/mysql-pro-cert-5.1.35-sco-osr6-i686.VOLS.tar
+shell> tar xf /tmp/mysql-pro-cert-5.1.39-sco-osr6-i686.VOLS.tar
Prior to installation, back up your data in accordance with the
procedures outlined in Section 2.12.1, "Upgrading MySQL."
@@ -9115,9 +8824,8 @@ SVMMLIM 0x9000000 0x100000
HVMMLIM 0x9000000 0x1000000 0x7FFFFFFF
To make changes to the kernel, use the idtune name parameter
- command. idtune modifies the /etc/conf/cf.d/stune file for you. We
- recommend setting the kernel values by executing the following
- commands as root:
+ command. idtune modifies the /etc/conf/cf.d/stune file for you. To
+ set the kernel values, execute the following commands as root:
# /etc/conf/bin/idtune SDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune HDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune SVMMLIM 0x7FFFFFFF
@@ -9128,10 +8836,10 @@ HVMMLIM 0x9000000 0x100000
Then rebuild and reboot the kernel by issuing this command:
# /etc/conf/bin/idbuild -B && init 6
- We recommend tuning the system, but the proper parameter values to
- use depend on the number of users accessing the application or
- database and size the of the database (that is, the used buffer
- pool). The following kernel parameters can be set with idtune:
+ To tune the system, the proper parameter values to use depend on
+ the number of users accessing the application or database and size
+ the of the database (that is, the used buffer pool). The following
+ kernel parameters can be set with idtune:
* SHMMAX (recommended setting: 128MB) and SHMSEG (recommended
setting: 15). These parameters have an influence on the MySQL
@@ -9142,8 +8850,8 @@ HVMMLIM 0x9000000 0x100000
* NPROC should be set to at least 3000/4000 (depends on number
of users).
- * We also recommend using the following formulas to calculate
- values for SEMMSL, SEMMNS, and SEMMNU:
+ * The following formulas are recommended to calculate values for
+ SEMMSL, SEMMNS, and SEMMNU:
SEMMSL = 13
13 is what has been found to be the best for both Progress and
MySQL.
@@ -9158,10 +8866,10 @@ SEMMNU = SEMMNS
2.13.5.10. SCO UnixWare 7.1.x and OpenUNIX 8.0.0 Notes
- We recommend using the latest production release of MySQL. Should
- you choose to use an older release of MySQL on UnixWare 7.1.x, you
- must use a version of MySQL at least as recent as 3.22.13 to get
- fixes for some portability and OS problems.
+ Use the latest production release of MySQL. Should you choose to
+ use an older release of MySQL on UnixWare 7.1.x, you must use a
+ version of MySQL at least as recent as 3.22.13 to get fixes for
+ some portability and OS problems.
We have been able to compile MySQL with the following configure
command on UnixWare 7.1.x:
@@ -9210,9 +8918,8 @@ SVMMLIM 0x9000000 0x100000
HVMMLIM 0x9000000 0x1000000 0x7FFFFFFF
To make changes to the kernel, use the idtune name parameter
- command. idtune modifies the /etc/conf/cf.d/stune file for you. We
- recommend setting the kernel values by executing the following
- commands as root:
+ command. idtune modifies the /etc/conf/cf.d/stune file for you. To
+ set the kernel values, execute the following commands as root:
# /etc/conf/bin/idtune SDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune HDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune SVMMLIM 0x7FFFFFFF
@@ -9223,10 +8930,10 @@ HVMMLIM 0x9000000 0x100000
Then rebuild and reboot the kernel by issuing this command:
# /etc/conf/bin/idbuild -B && init 6
- We recommend tuning the system, but the proper parameter values to
- use depend on the number of users accessing the application or
- database and size the of the database (that is, the used buffer
- pool). The following kernel parameters can be set with idtune:
+ To tune the system, the proper parameter values to use depend on
+ the number of users accessing the application or database and size
+ the of the database (that is, the used buffer pool). The following
+ kernel parameters can be set with idtune:
* SHMMAX (recommended setting: 128MB) and SHMSEG (recommended
setting: 15). These parameters have an influence on the MySQL
@@ -9237,8 +8944,8 @@ HVMMLIM 0x9000000 0x100000
* NPROC should be set to at least 3000/4000 (depends on number
of users).
- * We also recommend using the following formulas to calculate
- values for SEMMSL, SEMMNS, and SEMMNU:
+ * The following formulas are recommended to calculate values for
+ SEMMSL, SEMMNS, and SEMMNU:
SEMMSL = 13
13 is what has been found to be the best for both Progress and
MySQL.
@@ -9264,7 +8971,7 @@ SEMMNU = SEMMNS
In many cases, it is preferable to use an option file instead of
environment variables to modify the behavior of MySQL. See Section
- 4.2.3.2, "Using Option Files."
+ 4.2.3.3, "Using Option Files."
Variable Description
CXX The name of your C++ compiler (for running configure).
CC The name of your C compiler (for running configure).
@@ -9342,7 +9049,7 @@ SEMMNU = SEMMNS
Perl support for MySQL must be installed if you want to run the
MySQL benchmark scripts; see Section 7.1.4, "The MySQL Benchmark
Suite." It is also required for the MySQL Cluster ndb_size.pl
- utility; see Section 17.9.15, "ndb_size.pl --- NDBCLUSTER Size
+ utility; see Section 17.6.21, "ndb_size.pl --- NDBCLUSTER Size
Requirement Estimator."
2.15.1. Installing Perl on Unix
=== modified file 'INSTALL-WIN-SOURCE'
--- a/INSTALL-WIN-SOURCE 2009-05-25 09:59:47 +0000
+++ b/INSTALL-WIN-SOURCE 2009-09-16 12:03:18 +0000
@@ -191,7 +191,7 @@ C:\workdir>win\configure.js WITH_INNOBAS
directory, you need to tell the server their path names. You
can either do this on the command line with the --basedir and
--datadir options, or by placing appropriate options in an
- option file. (See Section 4.2.3.2, "Using Option Files.") If
+ option file. (See Section 4.2.3.3, "Using Option Files.") If
you have an existing data directory elsewhere that you want to
use, you can specify its path name instead.
When the server is running in standalone fashion or as a
@@ -207,7 +207,7 @@ C:\workdir>win\configure.js WITH_INNOBAS
option), and invoke mysql-test-run.pl. For example (using
Cygwin and the bash shell):
shell> cd mysql-test
-shell> export MTS_VS_CONFIG=debug
+shell> export MTR_VS_CONFIG=debug
shell> ./mysql-test-run.pl --force --timer
shell> ./mysql-test-run.pl --force --timer --ps-protocol
=== modified file 'man/comp_err.1'
--- a/man/comp_err.1 2009-05-25 09:59:47 +0000
+++ b/man/comp_err.1 2009-09-16 12:03:18 +0000
@@ -1,137 +1,262 @@
+'\" t
.\" Title: \fBcomp_err\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBCOMP_ERR\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBCOMP_ERR\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" comp_err
.SH "NAME"
comp_err \- compile MySQL error message file
.SH "SYNOPSIS"
-.HP 19
+.HP \w'\fBcomp_err\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBcomp_err [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBcomp_err\fR
creates the
-\fIerrmsg.sys\fR
+errmsg\&.sys
file that is used by
\fBmysqld\fR
-to determine the error messages to display for different error codes.
+to determine the error messages to display for different error codes\&.
\fBcomp_err\fR
-normally is run automatically when MySQL is built. It compiles the
-\fIerrmsg.sys\fR
+normally is run automatically when MySQL is built\&. It compiles the
+errmsg\&.sys
file from the plaintext file located at
-\fIsql/share/errmsg.txt\fR
-in MySQL source distributions.
+sql/share/errmsg\&.txt
+in MySQL source distributions\&.
.PP
\fBcomp_err\fR
also generates
-\fImysqld_error.h\fR,
-\fImysqld_ername.h\fR, and
-\fIsql_state.h\fR
-header files.
+mysqld_error\&.h,
+mysqld_ername\&.h, and
+sql_state\&.h
+header files\&.
.PP
-For more information about how error messages are defined, see the MySQL Internals Manual.
+For more information about how error messages are defined, see the MySQL Internals Manual\&.
.PP
Invoke
\fBcomp_err\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcomp_err [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBcomp_err\fR
-understands the options described in the following list.
-.TP 3n
-\(bu
+supports the options described in the following list\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: help option
+.\" help option: comp_err
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: charset option
+.\" charset option: comp_err
\fB\-\-charset=\fR\fB\fIpath\fR\fR\fB, \-C \fR\fB\fIpath\fR\fR
.sp
-The character set directory. The default is
-\fI../sql/share/charsets\fR.
-.TP 3n
-\(bu
+The character set directory\&. The default is
+\&.\&./sql/share/charsets\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: debug option
+.\" debug option: comp_err
\fB\-\-debug=\fR\fB\fIdebug_options\fR\fR\fB, \-# \fR\fB\fIdebug_options\fR\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:O,\fIfile_name\fR'. The default is
-\'d:t:O,/tmp/comp_err.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:O,\fIfile_name\fR\'\&. The default is
+\'d:t:O,/tmp/comp_err\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: debug-info option
+.\" debug-info option: comp_err
\fB\-\-debug\-info\fR,
\fB\-T\fR
.sp
-Print some debugging information when the program exits.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: header_file option
+.\" header_file option: comp_err
\fB\-\-header_file=\fR\fB\fIfile_name\fR\fR\fB, \-H \fR\fB\fIfile_name\fR\fR
.sp
-The name of the error header file. The default is
-\fImysqld_error.h\fR.
-.TP 3n
-\(bu
+The name of the error header file\&. The default is
+mysqld_error\&.h\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: in_file option
+.\" in_file option: comp_err
\fB\-\-in_file=\fR\fB\fIfile_name\fR\fR\fB, \-F \fR\fB\fIfile_name\fR\fR
.sp
-The name of the input file. The default is
-\fI../sql/share/errmsg.txt\fR.
-.TP 3n
-\(bu
+The name of the input file\&. The default is
+\&.\&./sql/share/errmsg\&.txt\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: name_file option
+.\" name_file option: comp_err
\fB\-\-name_file=\fR\fB\fIfile_name\fR\fR\fB, \-N \fR\fB\fIfile_name\fR\fR
.sp
-The name of the error name file. The default is
-\fImysqld_ername.h\fR.
-.TP 3n
-\(bu
+The name of the error name file\&. The default is
+mysqld_ername\&.h\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: out_dir option
+.\" out_dir option: comp_err
\fB\-\-out_dir=\fR\fB\fIpath\fR\fR\fB, \-D \fR\fB\fIpath\fR\fR
.sp
-The name of the output base directory. The default is
-\fI../sql/share/\fR.
-.TP 3n
-\(bu
+The name of the output base directory\&. The default is
+\&.\&./sql/share/\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: out_file option
+.\" out_file option: comp_err
\fB\-\-out_file=\fR\fB\fIfile_name\fR\fR\fB, \-O \fR\fB\fIfile_name\fR\fR
.sp
-The name of the output file. The default is
-\fIerrmsg.sys\fR.
-.TP 3n
-\(bu
+The name of the output file\&. The default is
+errmsg\&.sys\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: statefile option
+.\" statefile option: comp_err
\fB\-\-statefile=\fR\fB\fIfile_name\fR\fR\fB, \-S \fR\fB\fIfile_name\fR\fR
.sp
-The name for the SQLSTATE header file. The default is
-\fIsql_state.h\fR.
-.TP 3n
-\(bu
+The name for the SQLSTATE header file\&. The default is
+sql_state\&.h\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: version option
+.\" version option: comp_err
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/innochecksum.1'
--- a/man/innochecksum.1 2009-05-25 09:59:47 +0000
+++ b/man/innochecksum.1 2009-09-16 12:03:18 +0000
@@ -1,81 +1,144 @@
+'\" t
.\" Title: \fBinnochecksum\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBINNOCHECKSUM\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBINNOCHECKSUM\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" innochecksum
.SH "NAME"
innochecksum \- offline InnoDB file checksum utility
.SH "SYNOPSIS"
-.HP 33
+.HP \w'\fBinnochecksum\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIfile_name\fR\fR\ 'u
\fBinnochecksum [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR
.SH "DESCRIPTION"
.PP
\fBinnochecksum\fR
prints checksums for
InnoDB
-files.
+files\&.
.PP
Invoke
\fBinnochecksum\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBinnochecksum [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBinnochecksum\fR
-understands the options described in the following list. For options that refer to page numbers, the numbers are zero\-based.
-.TP 3n
-\(bu
+supports the options described in the following list\&. For options that refer to page numbers, the numbers are zero\-based\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-c\fR
.sp
-Print a count of the number of pages in the file.
-.TP 3n
-\(bu
+Print a count of the number of pages in the file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-d\fR
.sp
-Debug mode; prints checksums for each page.
-.TP 3n
-\(bu
+Debug mode; prints checksums for each page\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-e \fR\fB\fInum\fR\fR
.sp
-End at this page number.
-.TP 3n
-\(bu
+End at this page number\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-p \fR\fB\fInum\fR\fR
.sp
-Check only this page number.
-.TP 3n
-\(bu
+Check only this page number\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-s \fR\fB\fInum\fR\fR
.sp
-Start at this page number.
-.TP 3n
-\(bu
+Start at this page number\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-v\fR
.sp
-Verbose mode; print a progress indicator every five seconds.
+Verbose mode; print a progress indicator every five seconds\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/make_win_bin_dist.1'
--- a/man/make_win_bin_dist.1 2009-05-25 09:59:47 +0000
+++ b/man/make_win_bin_dist.1 2009-09-16 12:03:18 +0000
@@ -1,106 +1,185 @@
+'\" t
.\" Title: \fBmake_win_bin_dist\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMAKE_WIN_BIN_DIST" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMAKE_WIN_BIN_DIST" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" make_win_bin_dist
.SH "NAME"
make_win_bin_dist \- package MySQL distribution as ZIP archive
.SH "SYNOPSIS"
-.HP 60
-\fBmake_win_bin_dist [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpackage_basename\fR\fR\fB [\fR\fB\fIcopy_def\fR\fR\fB ...]\fR
+.HP \w'\fBmake_win_bin_dist\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIpackage_basename\fR\fR\fB\ [\fR\fB\fIcopy_def\fR\fR\fB\ \&.\&.\&.]\fR\ 'u
+\fBmake_win_bin_dist [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpackage_basename\fR\fR\fB [\fR\fB\fIcopy_def\fR\fR\fB \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
-This script is used on Windows after building a MySQL distribution from source to create executable programs. It packages the binaries and support files into a ZIP archive that can be unpacked at the location where you want to install MySQL.
+This script is used on Windows after building a MySQL distribution from source to create executable programs\&. It packages the binaries and support files into a ZIP archive that can be unpacked at the location where you want to install MySQL\&.
.PP
\fBmake_win_bin_dist\fR
-is a shell script, so you must have Cygwin installed to use it.
+is a shell script, so you must have Cygwin installed to use it\&.
.PP
-This program's use is subject to change. Currently, you invoke it as follows from the root directory of your source distribution:
+This program\'s use is subject to change\&. Currently, you invoke it as follows from the root directory of your source distribution:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmake_win_bin_dist [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpackage_basename\fR\fR\fB [\fR\fB\fIcopy_def\fR\fR\fB ...]\fR
+shell> \fBmake_win_bin_dist [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpackage_basename\fR\fR\fB [\fR\fB\fIcopy_def\fR\fR\fB \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fIpackage_basename\fR
-argument provides the basename for the resulting ZIP archive. This name will be the name of the directory that results from unpacking the archive.
+argument provides the basename for the resulting ZIP archive\&. This name will be the name of the directory that results from unpacking the archive\&.
.PP
Because you might want to include files of directories from other builds, you can instruct this script do copy them in for you, via
\fIcopy_def\fR
arguments, which of which is of the form
-\fIrelative_dest_name\fR=\fIsource_name\fR.
+\fIrelative_dest_name\fR=\fIsource_name\fR\&.
.PP
Example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-bin/mysqld\-max.exe=../my\-max\-build/sql/release/mysqld.exe
+bin/mysqld\-max\&.exe=\&.\&./my\-max\-build/sql/release/mysqld\&.exe
.fi
+.if n \{\
.RE
+.\}
.PP
-If you specify a directory, the entire directory will be copied.
+If you specify a directory, the entire directory will be copied\&.
.PP
\fBmake_win_bin_dist\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: debug option
+.\" debug option: make_win_bin_dist
\fB\-\-debug\fR
.sp
-Pack the debug binaries and produce an error if they were not built.
-.TP 3n
-\(bu
+Pack the debug binaries and produce an error if they were not built\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: embedded option
+.\" embedded option: make_win_bin_dist
\fB\-\-embedded\fR
.sp
-Pack the embedded server and produce an error if it was not built. The default is to pack it if it was built.
-.TP 3n
-\(bu
+Pack the embedded server and produce an error if it was not built\&. The default is to pack it if it was built\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: exe-suffix option
+.\" exe-suffix option: make_win_bin_dist
\fB\-\-exe\-suffix=\fR\fB\fIsuffix\fR\fR
.sp
Add a suffix to the basename of the
\fBmysql\fR
-binary. For example, a suffix of
+binary\&. For example, a suffix of
\-abc
produces a binary named
-\fBmysqld\-abc.exe\fR.
-.TP 3n
-\(bu
+\fBmysqld\-abc\&.exe\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: no-debug option
+.\" no-debug option: make_win_bin_dist
\fB\-\-no\-debug\fR
.sp
-Don't pack the debug binaries even if they were built.
-.TP 3n
-\(bu
+Do not pack the debug binaries even if they were built\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: no-embedded option
+.\" no-embedded option: make_win_bin_dist
\fB\-\-no\-embedded\fR
.sp
-Don't pack the embedded server even if it was built.
-.TP 3n
-\(bu
+Do not pack the embedded server even if it was built\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: only-debug option
+.\" only-debug option: make_win_bin_dist
\fB\-\-only\-debug\fR
.sp
Use this option when the target for this build was
Debug, and you just want to replace the normal binaries with debug versions (that is, do not use separate
-\fIdebug\fR
-directories).
+debug
+directories)\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/msql2mysql.1'
--- a/man/msql2mysql.1 2009-05-25 09:59:47 +0000
+++ b/man/msql2mysql.1 2009-09-16 12:03:18 +0000
@@ -1,61 +1,76 @@
+'\" t
.\" Title: \fBmsql2mysql\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMSQL2MYSQL\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMSQL2MYSQL\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" msql2mysql
.SH "NAME"
msql2mysql \- convert mSQL programs for use with MySQL
.SH "SYNOPSIS"
-.HP 28
-\fBmsql2mysql\fR\fB\fIC\-source\-file\fR\fR\fB ...\fR
+.HP \w'\fBmsql2mysql\fR\fB\fIC\-source\-file\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmsql2mysql\fR\fB\fIC\-source\-file\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
-Initially, the MySQL C API was developed to be very similar to that for the mSQL database system. Because of this, mSQL programs often can be converted relatively easily for use with MySQL by changing the names of the C API functions.
+Initially, the MySQL C API was developed to be very similar to that for the mSQL database system\&. Because of this, mSQL programs often can be converted relatively easily for use with MySQL by changing the names of the C API functions\&.
.PP
The
\fBmsql2mysql\fR
-utility performs the conversion of mSQL C API function calls to their MySQL equivalents.
+utility performs the conversion of mSQL C API function calls to their MySQL equivalents\&.
\fBmsql2mysql\fR
-converts the input file in place, so make a copy of the original before converting it. For example, use
+converts the input file in place, so make a copy of the original before converting it\&. For example, use
\fBmsql2mysql\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBcp client\-prog.c client\-prog.c.orig\fR
-shell> \fBmsql2mysql client\-prog.c\fR
-client\-prog.c converted
+shell> \fBcp client\-prog\&.c client\-prog\&.c\&.orig\fR
+shell> \fBmsql2mysql client\-prog\&.c\fR
+client\-prog\&.c converted
.fi
+.if n \{\
.RE
+.\}
.PP
Then examine
-\fIclient\-prog.c\fR
-and make any post\-conversion revisions that may be necessary.
+client\-prog\&.c
+and make any post\-conversion revisions that may be necessary\&.
.PP
\fBmsql2mysql\fR
uses the
\fBreplace\fR
-utility to make the function name substitutions. See
-\fBreplace\fR(1).
+utility to make the function name substitutions\&. See
+\fBreplace\fR(1)\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/my_print_defaults.1'
--- a/man/my_print_defaults.1 2009-05-25 09:59:47 +0000
+++ b/man/my_print_defaults.1 2009-09-16 12:03:18 +0000
@@ -1,111 +1,210 @@
+'\" t
.\" Title: \fBmy_print_defaults\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMY_PRINT_DEFAULTS" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMY_PRINT_DEFAULTS" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" my_print_defaults
.SH "NAME"
my_print_defaults \- display options from option files
.SH "SYNOPSIS"
-.HP 45
-\fBmy_print_defaults [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIoption_group\fR\fR\fB ...\fR
+.HP \w'\fBmy_print_defaults\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIoption_group\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmy_print_defaults [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIoption_group\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
\fBmy_print_defaults\fR
-displays the options that are present in option groups of option files. The output indicates what options will be used by programs that read the specified option groups. For example, the
+displays the options that are present in option groups of option files\&. The output indicates what options will be used by programs that read the specified option groups\&. For example, the
\fBmysqlcheck\fR
program reads the
[mysqlcheck]
and
[client]
-option groups. To see what options are present in those groups in the standard option files, invoke
+option groups\&. To see what options are present in those groups in the standard option files, invoke
\fBmy_print_defaults\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmy_print_defaults mysqlcheck client\fR
\-\-user=myusername
\-\-password=secret
\-\-host=localhost
.fi
+.if n \{\
.RE
+.\}
.PP
-The output consists of options, one per line, in the form that they would be specified on the command line.
+The output consists of options, one per line, in the form that they would be specified on the command line\&.
.PP
\fBmy_print_defaults\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: help option
+.\" help option: my_print_defaults
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: config-file option
+.\" config-file option: my_print_defaults
\fB\-\-config\-file=\fR\fB\fIfile_name\fR\fR,
+.\" my_print_defaults: defaults-file option
+.\" defaults-file option: my_print_defaults
\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-c \fR\fB\fIfile_name\fR\fR
.sp
-Read only the given option file.
-.TP 3n
-\(bu
+Read only the given option file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: debug option
+.\" debug option: my_print_defaults
\fB\-\-debug=\fR\fB\fIdebug_options\fR\fR\fB, \-# \fR\fB\fIdebug_options\fR\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'. The default is
-\'d:t:o,/tmp/my_print_defaults.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/my_print_defaults\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: defaults-extra-file option
+.\" defaults-extra-file option: my_print_defaults
\fB\-\-defaults\-extra\-file=\fR\fB\fIfile_name\fR\fR,
+.\" my_print_defaults: extra-file option
+.\" extra-file option: my_print_defaults
\fB\-\-extra\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-e \fR\fB\fIfile_name\fR\fR
.sp
-Read this option file after the global option file but (on Unix) before the user option file.
-.TP 3n
-\(bu
+Read this option file after the global option file but (on Unix) before the user option file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: defaults-group-suffix option
+.\" defaults-group-suffix option: my_print_defaults
\fB\-\-defaults\-group\-suffix=\fR\fB\fIsuffix\fR\fR,
\fB\-g \fR\fB\fIsuffix\fR\fR
.sp
-In addition to the groups named on the command line, read groups that have the given suffix.
-.TP 3n
-\(bu
+In addition to the groups named on the command line, read groups that have the given suffix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: no-defaults option
+.\" no-defaults option: my_print_defaults
\fB\-\-no\-defaults\fR,
\fB\-n\fR
.sp
-Return an empty string.
-.TP 3n
-\(bu
+Return an empty string\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: verbose option
+.\" verbose option: my_print_defaults
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: version option
+.\" version option: my_print_defaults
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/myisam_ftdump.1'
--- a/man/myisam_ftdump.1 2009-05-25 09:59:47 +0000
+++ b/man/myisam_ftdump.1 2009-09-16 12:03:18 +0000
@@ -1,19 +1,28 @@
+'\" t
.\" Title: \fBmyisam_ftdump\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYISAM_FTDUMP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYISAM_FTDUMP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" myisam_ftdump
.SH "NAME"
myisam_ftdump \- display full\-text index information
.SH "SYNOPSIS"
-.HP 43
+.HP \w'\fBmyisam_ftdump\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fItbl_name\fR\fR\fB\ \fR\fB\fIindex_num\fR\fR\ 'u
\fBmyisam_ftdump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \fR\fB\fIindex_num\fR\fR
.SH "DESCRIPTION"
.PP
@@ -22,7 +31,7 @@ displays information about
FULLTEXT
indexes in
MyISAM
-tables. It reads the
+tables\&. It reads the
MyISAM
index file directly, so it must be run on the server host where the table is located
.PP
@@ -30,21 +39,25 @@ Invoke
\fBmyisam_ftdump\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmyisam_ftdump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \fR\fB\fIindex_num\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fItbl_name\fR
argument should be the name of a
MyISAM
-table. You can also specify a table by naming its index file (the file with the
-\fI.MYI\fR
-suffix). If you do not invoke
+table\&. You can also specify a table by naming its index file (the file with the
+\&.MYI
+suffix)\&. If you do not invoke
\fBmyisam_ftdump\fR
-in the directory where the table files are located, the table or index file name must be preceded by the path name to the table's database directory. Index numbers begin with 0.
+in the directory where the table files are located, the table or index file name must be preceded by the path name to the table\'s database directory\&. Index numbers begin with 0\&.
.PP
Example: Suppose that the
test
@@ -52,7 +65,9 @@ database contains a table named
mytexttablel
that has the following definition:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
CREATE TABLE mytexttable
(
@@ -62,7 +77,9 @@ CREATE TABLE mytexttable
FULLTEXT (txt)
);
.fi
+.if n \{\
.RE
+.\}
.PP
The index on
id
@@ -70,82 +87,152 @@ is index 0 and the
FULLTEXT
index on
txt
-is index 1. If your working directory is the
+is index 1\&. If your working directory is the
test
database directory, invoke
\fBmyisam_ftdump\fR
as follows:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmyisam_ftdump mytexttable 1\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If the path name to the
test
database directory is
-\fI/usr/local/mysql/data/test\fR, you can also specify the table name argument using that path name. This is useful if you do not invoke
+/usr/local/mysql/data/test, you can also specify the table name argument using that path name\&. This is useful if you do not invoke
\fBmyisam_ftdump\fR
in the database directory:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmyisam_ftdump /usr/local/mysql/data/test/mytexttable 1\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmyisam_ftdump\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: help option
+.\" help option: myisam_ftdump
\fB\-\-help\fR,
\fB\-h\fR
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: count option
+.\" count option: myisam_ftdump
\fB\-\-count\fR,
\fB\-c\fR
.sp
-Calculate per\-word statistics (counts and global weights).
-.TP 3n
-\(bu
+Calculate per\-word statistics (counts and global weights)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: dump option
+.\" dump option: myisam_ftdump
\fB\-\-dump\fR,
\fB\-d\fR
.sp
-Dump the index, including data offsets and word weights.
-.TP 3n
-\(bu
+Dump the index, including data offsets and word weights\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: length option
+.\" length option: myisam_ftdump
\fB\-\-length\fR,
\fB\-l\fR
.sp
-Report the length distribution.
-.TP 3n
-\(bu
+Report the length distribution\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: stats option
+.\" stats option: myisam_ftdump
\fB\-\-stats\fR,
\fB\-s\fR
.sp
-Report global index statistics. This is the default operation if no other operation is specified.
-.TP 3n
-\(bu
+Report global index statistics\&. This is the default operation if no other operation is specified\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: verbose option
+.\" verbose option: myisam_ftdump
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more output about what the program does.
+Verbose mode\&. Print more output about what the program does\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/myisamchk.1'
--- a/man/myisamchk.1 2009-05-25 09:59:47 +0000
+++ b/man/myisamchk.1 2009-09-16 12:03:18 +0000
@@ -1,246 +1,381 @@
+'\" t
.\" Title: \fBmyisamchk\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYISAMCHK\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYISAMCHK\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" myisamchk
.SH "NAME"
myisamchk \- MyISAM table\-maintenance utility
.SH "SYNOPSIS"
-.HP 33
-\fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB ...\fR
+.HP \w'\fBmyisamchk\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fItbl_name\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBmyisamchk\fR
-utility gets information about your database tables or checks, repairs, or optimizes them.
+utility gets information about your database tables or checks, repairs, or optimizes them\&.
\fBmyisamchk\fR
works with
MyISAM
tables (tables that have
-\fI.MYD\fR
+\&.MYD
and
-\fI.MYI\fR
-files for storing data and indexes).
+\&.MYI
+files for storing data and indexes)\&.
.PP
The use of
\fBmyisamchk\fR
-with partitioned tables is not supported.
+with partitioned tables is not supported\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBCaution\fR
+.ps -1
+.br
.PP
-It is best to make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss. Possible causes include but are not limited to file system errors.
+It is best to make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss\&. Possible causes include but are not limited to file system errors\&.
+.sp .5v
+.RE
.PP
Invoke
\fBmyisamchk\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB ...\fR
+shell> \fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fIoptions\fR
specify what you want
\fBmyisamchk\fR
-to do. They are described in the following sections. You can also get a list of options by invoking
-\fBmyisamchk \-\-help\fR.
+to do\&. They are described in the following sections\&. You can also get a list of options by invoking
+\fBmyisamchk \-\-help\fR\&.
.PP
With no options,
\fBmyisamchk\fR
-simply checks your table as the default operation. To get more information or to tell
+simply checks your table as the default operation\&. To get more information or to tell
\fBmyisamchk\fR
-to take corrective action, specify options as described in the following discussion.
+to take corrective action, specify options as described in the following discussion\&.
.PP
\fItbl_name\fR
-is the database table you want to check or repair. If you run
+is the database table you want to check or repair\&. If you run
\fBmyisamchk\fR
somewhere other than in the database directory, you must specify the path to the database directory, because
\fBmyisamchk\fR
-has no idea where the database is located. In fact,
+has no idea where the database is located\&. In fact,
\fBmyisamchk\fR
-does not actually care whether the files you are working on are located in a database directory. You can copy the files that correspond to a database table into some other location and perform recovery operations on them there.
+does not actually care whether the files you are working on are located in a database directory\&. You can copy the files that correspond to a database table into some other location and perform recovery operations on them there\&.
.PP
You can name several tables on the
\fBmyisamchk\fR
-command line if you wish. You can also specify a table by naming its index file (the file with the
-\fI.MYI\fR
-suffix). This allows you to specify all tables in a directory by using the pattern
-\fI*.MYI\fR. For example, if you are in a database directory, you can check all the
+command line if you wish\&. You can also specify a table by naming its index file (the file with the
+\&.MYI
+suffix)\&. This allows you to specify all tables in a directory by using the pattern
+*\&.MYI\&. For example, if you are in a database directory, you can check all the
MyISAM
tables in that directory like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk *.MYI\fR
+shell> \fBmyisamchk *\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you are not in the database directory, you can check all the tables there by specifying the path to the directory:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \fR\fB\fI/path/to/database_dir/\fR\fR\fB*.MYI\fR
+shell> \fBmyisamchk \fR\fB\fI/path/to/database_dir/\fR\fR\fB*\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
You can even check all tables in all databases by specifying a wildcard with the path to the MySQL data directory:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The recommended way to quickly check all
MyISAM
tables is:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-\-silent \-\-fast \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \-\-silent \-\-fast \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you want to check all
MyISAM
tables and repair any that are corrupted, you can use the following command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-\-silent \-\-force \-\-fast \-\-update\-state \\\fR
- \fB\-\-key_buffer_size=64M \-\-sort_buffer_size=64M \\\fR
- \fB\-\-read_buffer_size=1M \-\-write_buffer_size=1M \\\fR
- \fB\fI/path/to/datadir/*/*\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \-\-silent \-\-force \-\-fast \-\-update\-state \e\fR
+ \fB\-\-key_buffer_size=64M \-\-sort_buffer_size=64M \e\fR
+ \fB\-\-read_buffer_size=1M \-\-write_buffer_size=1M \e\fR
+ \fB\fI/path/to/datadir/*/*\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-This command assumes that you have more than 64MB free. For more information about memory allocation with
+This command assumes that you have more than 64MB free\&. For more information about memory allocation with
\fBmyisamchk\fR, see
-the section called \(lq\fBMYISAMCHK\fR MEMORY USAGE\(rq.
+the section called \(lqMYISAMCHK MEMORY USAGE\(rq\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-\fIYou must ensure that no other program is using the tables while you are running \fR\fI\fBmyisamchk\fR\fR. The most effective means of doing so is to shut down the MySQL server while running
+\fIYou must ensure that no other program is using the tables while you are running \fR\fI\fBmyisamchk\fR\fR\&. The most effective means of doing so is to shut down the MySQL server while running
\fBmyisamchk\fR, or to lock all tables that
\fBmyisamchk\fR
-is being used on.
+is being used on\&.
.PP
Otherwise, when you run
\fBmyisamchk\fR, it may display the following error message:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-warning: clients are using or haven't closed the table properly
+warning: clients are using or haven\'t closed the table properly
.fi
+.if n \{\
.RE
+.\}
.PP
This means that you are trying to check a table that has been updated by another program (such as the
\fBmysqld\fR
-server) that hasn't yet closed the file or that has died without closing the file properly, which can sometimes lead to the corruption of one or more
+server) that hasn\'t yet closed the file or that has died without closing the file properly, which can sometimes lead to the corruption of one or more
MyISAM
-tables.
+tables\&.
.PP
If
\fBmysqld\fR
is running, you must force it to flush any table modifications that are still buffered in memory by using
-FLUSH TABLES. You should then ensure that no one is using the tables while you are running
+FLUSH TABLES\&. You should then ensure that no one is using the tables while you are running
\fBmyisamchk\fR
.PP
However, the easiest way to avoid this problem is to use
CHECK TABLE
instead of
\fBmyisamchk\fR
-to check tables. See
-Section\ 12.5.2.3, \(lqCHECK TABLE Syntax\(rq.
+to check tables\&. See
+Section\ \&12.5.2.3, \(lqCHECK TABLE Syntax\(rq\&.
+.sp .5v
+.RE
.PP
-A complete listing of all the
\fBmyisamchk\fR
-options follows.
-.SH "\fBMYISAMCHK\fR GENERAL OPTIONS"
+supports the options in the following table\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.SH "MYISAMCHK GENERAL OPTIONS"
+.\" options: myisamchk
+.\" myisamchk: options
.PP
The options described in this section can be used for any type of table maintenance operation performed by
-\fBmyisamchk\fR. The sections following this one describe options that pertain only to specific operations, such as table checking or repairing.
-.TP 3n
-\(bu
+\fBmyisamchk\fR\&. The sections following this one describe options that pertain only to specific operations, such as table checking or repairing\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: help option
+.\" help option: myisamchk
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit. Options are grouped by type of operation.
-.TP 3n
-\(bu
+Display a help message and exit\&. Options are grouped by type of operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: HELP option
+.\" HELP option: myisamchk
\fB\-\-HELP\fR,
\fB\-H\fR
.sp
-Display a help message and exit. Options are presented in a single list.
-.TP 3n
-\(bu
+Display a help message and exit\&. Options are presented in a single list\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: debug option
+.\" debug option: myisamchk
\fB\-\-debug=\fR\fB\fIdebug_options\fR\fR\fB, \-# \fR\fB\fIdebug_options\fR\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/myisamchk\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: silent option
+.\" silent option: myisamchk
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Write output only when errors occur. You can use
+Silent mode\&. Write output only when errors occur\&. You can use
\fB\-s\fR
twice (\fB\-ss\fR) to make
\fBmyisamchk\fR
-very silent.
-.TP 3n
-\(bu
+very silent\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: verbose option
+.\" verbose option: myisamchk
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does. This can be used with
+Verbose mode\&. Print more information about what the program does\&. This can be used with
\fB\-d\fR
and
-\fB\-e\fR. Use
+\fB\-e\fR\&. Use
\fB\-v\fR
multiple times (\fB\-vv\fR,
-\fB\-vvv\fR) for even more output.
-.TP 3n
-\(bu
+\fB\-vvv\fR) for even more output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: version option
+.\" version option: myisamchk
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: wait option
+.\" wait option: myisamchk
\fB\-\-wait\fR,
\fB\-w\fR
.sp
-Instead of terminating with an error if the table is locked, wait until the table is unlocked before continuing. If you are running
+Instead of terminating with an error if the table is locked, wait until the table is unlocked before continuing\&. If you are running
\fBmysqld\fR
with external locking disabled, the table can be locked only by another
\fBmyisamchk\fR
-command.
-.sp
+command\&.
.RE
.PP
You can also set the following variables by using
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
syntax:
+.\" decode_bits myisamchk variable
+.\" ft_max_word_len myisamchk variable
+.\" ft_min_word_len myisamchk variable
+.\" ft_stopword_file myisamchk variable
+.\" key_buffer_size myisamchk variable
+.\" myisam_block_size myisamchk variable
+.\" read_buffer_size myisamchk variable
+.\" sort_buffer_size myisamchk variable
+.\" sort_key_blocks myisamchk variable
+.\" stats_method myisamchk variable
+.\" write_buffer_size myisamchk variable
.TS
allbox tab(:);
l l
@@ -261,21 +396,6 @@ T}:T{
\fBDefault Value\fR
T}
T{
-sort_key_blocks
-T}:T{
-16
-T}
-T{
-stats_method
-T}:T{
-nulls_unequal
-T}
-T{
-write_buffer_size
-T}:T{
-262136
-T}
-T{
decode_bits
T}:T{
9
@@ -315,8 +435,23 @@ sort_buffer_size
T}:T{
2097144
T}
+T{
+sort_key_blocks
+T}:T{
+16
+T}
+T{
+stats_method
+T}:T{
+nulls_unequal
+T}
+T{
+write_buffer_size
+T}:T{
+262136
+T}
.TE
-.sp
+.sp 1
.PP
The possible
\fBmyisamchk\fR
@@ -325,98 +460,116 @@ variables and their default values can b
.PP
sort_buffer_size
is used when the keys are repaired by sorting keys, which is the normal case when you use
-\fB\-\-recover\fR.
+\fB\-\-recover\fR\&.
.PP
key_buffer_size
is used when you are checking the table with
\fB\-\-extend\-check\fR
-or when the keys are repaired by inserting keys row by row into the table (like when doing normal inserts). Repairing through the key buffer is used in the following cases:
-.TP 3n
-\(bu
+or when the keys are repaired by inserting keys row by row into the table (like when doing normal inserts)\&. Repairing through the key buffer is used in the following cases:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You use
-\fB\-\-safe\-recover\fR.
-.TP 3n
-\(bu
-The temporary files needed to sort the keys would be more than twice as big as when creating the key file directly. This is often the case when you have large key values for
+\fB\-\-safe\-recover\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+The temporary files needed to sort the keys would be more than twice as big as when creating the key file directly\&. This is often the case when you have large key values for
CHAR,
VARCHAR, or
TEXT
-columns, because the sort operation needs to store the complete key values as it proceeds. If you have lots of temporary space and you can force
+columns, because the sort operation needs to store the complete key values as it proceeds\&. If you have lots of temporary space and you can force
\fBmyisamchk\fR
to repair by sorting, you can use the
\fB\-\-sort\-recover\fR
-option.
-.sp
+option\&.
.RE
.PP
-Repairing through the key buffer takes much less disk space than using sorting, but is also much slower.
+Repairing through the key buffer takes much less disk space than using sorting, but is also much slower\&.
.PP
If you want a faster repair, set the
key_buffer_size
and
sort_buffer_size
-variables to about 25% of your available memory. You can set both variables to large values, because only one of them is used at a time.
+variables to about 25% of your available memory\&. You can set both variables to large values, because only one of them is used at a time\&.
.PP
myisam_block_size
-is the size used for index blocks.
+is the size used for index blocks\&.
.PP
stats_method
influences how
NULL
values are treated for index statistics collection when the
\fB\-\-analyze\fR
-option is given. It acts like the
+option is given\&. It acts like the
myisam_stats_method
-system variable. For more information, see the description of
+system variable\&. For more information, see the description of
myisam_stats_method
in
-Section\ 5.1.3, \(lqServer System Variables\(rq, and
-Section\ 7.4.7, \(lqMyISAM Index Statistics Collection\(rq. For MySQL 5.1,
+Section\ \&5.1.4, \(lqServer System Variables\(rq, and
+Section\ \&7.4.6, \(lqMyISAM Index Statistics Collection\(rq\&. For MySQL 5\&.1,
stats_method
-was added in MySQL 5.0.14. For older versions, the statistics collection method is equivalent to
-nulls_equal.
+was added in MySQL 5\&.0\&.14\&. For older versions, the statistics collection method is equivalent to
+nulls_equal\&.
.PP
The
ft_min_word_len
and
ft_max_word_len
-variables are available as of MySQL 4.0.0.
+variables are available as of MySQL 4\&.0\&.0\&.
ft_stopword_file
-is available as of MySQL 4.0.19.
+is available as of MySQL 4\&.0\&.19\&.
.PP
ft_min_word_len
and
ft_max_word_len
indicate the minimum and maximum word length for
FULLTEXT
-indexes.
+indexes\&.
ft_stopword_file
-names the stopword file. These need to be set under the following circumstances.
+names the stopword file\&. These need to be set under the following circumstances\&.
.PP
If you use
\fBmyisamchk\fR
to perform an operation that modifies table indexes (such as repair or analyze), the
FULLTEXT
-indexes are rebuilt using the default full\-text parameter values for minimum and maximum word length and the stopword file unless you specify otherwise. This can result in queries failing.
+indexes are rebuilt using the default full\-text parameter values for minimum and maximum word length and the stopword file unless you specify otherwise\&. This can result in queries failing\&.
.PP
-The problem occurs because these parameters are known only by the server. They are not stored in
+The problem occurs because these parameters are known only by the server\&. They are not stored in
MyISAM
-index files. To avoid the problem if you have modified the minimum or maximum word length or the stopword file in the server, specify the same
+index files\&. To avoid the problem if you have modified the minimum or maximum word length or the stopword file in the server, specify the same
ft_min_word_len,
ft_max_word_len, and
ft_stopword_file
values to
\fBmyisamchk\fR
that you use for
-\fBmysqld\fR. For example, if you have set the minimum word length to 3, you can repair a table with
+\fBmysqld\fR\&. For example, if you have set the minimum word length to 3, you can repair a table with
\fBmyisamchk\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-\-recover \-\-ft_min_word_len=3 \fR\fB\fItbl_name\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \-\-recover \-\-ft_min_word_len=3 \fR\fB\fItbl_name\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
To ensure that
\fBmyisamchk\fR
@@ -426,14 +579,18 @@ and
[myisamchk]
sections of an option file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld]
ft_min_word_len=3
[myisamchk]
ft_min_word_len=3
.fi
+.if n \{\
.RE
+.\}
.PP
An alternative to using
\fBmyisamchk\fR
@@ -441,280 +598,593 @@ is to use the
REPAIR TABLE,
ANALYZE TABLE,
OPTIMIZE TABLE, or
-ALTER TABLE. These statements are performed by the server, which knows the proper full\-text parameter values to use.
-.SH "\fBMYISAMCHK\fR CHECK OPTIONS"
+ALTER TABLE\&. These statements are performed by the server, which knows the proper full\-text parameter values to use\&.
+.SH "MYISAMCHK CHECK OPTIONS"
+.\" check options: myisamchk
+.\" tables: checking
.PP
\fBmyisamchk\fR
supports the following options for table checking operations:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: check option
+.\" check option: myisamchk
\fB\-\-check\fR,
\fB\-c\fR
.sp
-Check the table for errors. This is the default operation if you specify no option that selects an operation type explicitly.
-.TP 3n
-\(bu
+Check the table for errors\&. This is the default operation if you specify no option that selects an operation type explicitly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: check-only-changed option
+.\" check-only-changed option: myisamchk
\fB\-\-check\-only\-changed\fR,
\fB\-C\fR
.sp
-Check only tables that have changed since the last check.
-.TP 3n
-\(bu
+Check only tables that have changed since the last check\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: extend-check option
+.\" extend-check option: myisamchk
\fB\-\-extend\-check\fR,
\fB\-e\fR
.sp
-Check the table very thoroughly. This is quite slow if the table has many indexes. This option should only be used in extreme cases. Normally,
+Check the table very thoroughly\&. This is quite slow if the table has many indexes\&. This option should only be used in extreme cases\&. Normally,
\fBmyisamchk\fR
or
\fBmyisamchk \-\-medium\-check\fR
-should be able to determine whether there are any errors in the table.
+should be able to determine whether there are any errors in the table\&.
.sp
If you are using
\fB\-\-extend\-check\fR
and have plenty of memory, setting the
key_buffer_size
-variable to a large value helps the repair operation run faster.
-.TP 3n
-\(bu
+variable to a large value helps the repair operation run faster\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: fast option
+.\" fast option: myisamchk
\fB\-\-fast\fR,
\fB\-F\fR
.sp
-Check only tables that haven't been closed properly.
-.TP 3n
-\(bu
+Check only tables that haven\'t been closed properly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: force option
+.\" force option: myisamchk
\fB\-\-force\fR,
\fB\-f\fR
.sp
Do a repair operation automatically if
\fBmyisamchk\fR
-finds any errors in the table. The repair type is the same as that specified with the
+finds any errors in the table\&. The repair type is the same as that specified with the
\fB\-\-recover\fR
or
\fB\-r\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: information option
+.\" information option: myisamchk
\fB\-\-information\fR,
\fB\-i\fR
.sp
-Print informational statistics about the table that is checked.
-.TP 3n
-\(bu
+Print informational statistics about the table that is checked\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: medium-check option
+.\" medium-check option: myisamchk
\fB\-\-medium\-check\fR,
\fB\-m\fR
.sp
Do a check that is faster than an
\fB\-\-extend\-check\fR
-operation. This finds only 99.99% of all errors, which should be good enough in most cases.
-.TP 3n
-\(bu
+operation\&. This finds only 99\&.99% of all errors, which should be good enough in most cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: read-only option
+.\" read-only option: myisamchk
\fB\-\-read\-only\fR,
\fB\-T\fR
.sp
-Do not mark the table as checked. This is useful if you use
+Do not mark the table as checked\&. This is useful if you use
\fBmyisamchk\fR
to check a table that is in use by some other application that does not use locking, such as
\fBmysqld\fR
-when run with external locking disabled.
-.TP 3n
-\(bu
+when run with external locking disabled\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: update-state option
+.\" update-state option: myisamchk
\fB\-\-update\-state\fR,
\fB\-U\fR
.sp
Store information in the
-\fI.MYI\fR
-file to indicate when the table was checked and whether the table crashed. This should be used to get full benefit of the
+\&.MYI
+file to indicate when the table was checked and whether the table crashed\&. This should be used to get full benefit of the
\fB\-\-check\-only\-changed\fR
-option, but you shouldn't use this option if the
+option, but you shouldn\'t use this option if the
\fBmysqld\fR
-server is using the table and you are running it with external locking disabled.
-.SH "\fBMYISAMCHK\fR REPAIR OPTIONS"
+server is using the table and you are running it with external locking disabled\&.
+.RE
+.SH "MYISAMCHK REPAIR OPTIONS"
+.\" repair options: myisamchk
+.\" files: repairing
.PP
\fBmyisamchk\fR
supports the following options for table repair operations:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: backup option
+.\" backup option: myisamchk
\fB\-\-backup\fR,
\fB\-B\fR
.sp
Make a backup of the
-\fI.MYD\fR
+\&.MYD
file as
-\fI\fIfile_name\fR\fR\fI\-\fR\fI\fItime\fR\fR\fI.BAK\fR
-.TP 3n
-\(bu
+\fIfile_name\fR\-\fItime\fR\&.BAK
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: character-sets-dir option
+.\" character-sets-dir option: myisamchk
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: correct-checksum option
+.\" correct-checksum option: myisamchk
\fB\-\-correct\-checksum\fR
.sp
-Correct the checksum information for the table.
-.TP 3n
-\(bu
+Correct the checksum information for the table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: data-file-length option
+.\" data-file-length option: myisamchk
\fB\-\-data\-file\-length=\fR\fB\fIlen\fR\fR\fB, \-D \fR\fB\fIlen\fR\fR
.sp
-Maximum length of the data file (when re\-creating data file when it is
-\(lqfull\(rq).
-.TP 3n
-\(bu
+The maximum length of the data file (when re\-creating data file when it is
+\(lqfull\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: extend-check option
+.\" extend-check option: myisamchk
\fB\-\-extend\-check\fR,
\fB\-e\fR
.sp
-Do a repair that tries to recover every possible row from the data file. Normally, this also finds a lot of garbage rows. Do not use this option unless you are desperate.
-.TP 3n
-\(bu
+Do a repair that tries to recover every possible row from the data file\&. Normally, this also finds a lot of garbage rows\&. Do not use this option unless you are desperate\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: force option
+.\" force option: myisamchk
\fB\-\-force\fR,
\fB\-f\fR
.sp
Overwrite old intermediate files (files with names like
-\fI\fItbl_name\fR\fR\fI.TMD\fR) instead of aborting.
-.TP 3n
-\(bu
+\fItbl_name\fR\&.TMD) instead of aborting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: keys-used option
+.\" keys-used option: myisamchk
\fB\-\-keys\-used=\fR\fB\fIval\fR\fR,
\fB\-k \fR\fB\fIval\fR\fR
.sp
For
-\fBmyisamchk\fR, the option value is a bit\-value that indicates which indexes to update. Each binary bit of the option value corresponds to a table index, where the first index is bit 0. An option value of 0 disables updates to all indexes, which can be used to get faster inserts. Deactivated indexes can be reactivated by using
-\fBmyisamchk \-r\fR.
-.TP 3n
-\(bu
+\fBmyisamchk\fR, the option value is a bit\-value that indicates which indexes to update\&. Each binary bit of the option value corresponds to a table index, where the first index is bit 0\&. An option value of 0 disables updates to all indexes, which can be used to get faster inserts\&. Deactivated indexes can be reactivated by using
+\fBmyisamchk \-r\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: no-symlinks option
+.\" no-symlinks option: myisamchk
\fB\-\-no\-symlinks\fR,
\fB\-l\fR
.sp
-Do not follow symbolic links. Normally
+Do not follow symbolic links\&. Normally
\fBmyisamchk\fR
-repairs the table that a symlink points to. This option does not exist as of MySQL 4.0 because versions from 4.0 on do not remove symlinks during repair operations.
-.TP 3n
-\(bu
+repairs the table that a symlink points to\&. This option does not exist as of MySQL 4\&.0 because versions from 4\&.0 on do not remove symlinks during repair operations\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: max-record-length option
+.\" max-record-length option: myisamchk
\fB\-\-max\-record\-length=\fR\fB\fIlen\fR\fR
.sp
Skip rows larger than the given length if
\fBmyisamchk\fR
-cannot allocate memory to hold them.
-.TP 3n
-\(bu
+cannot allocate memory to hold them\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: parallel-recover option
+.\" parallel-recover option: myisamchk
\fB\-\-parallel\-recover\fR,
\fB\-p\fR
.sp
-Uses the same technique as
+Use the same technique as
\fB\-r\fR
and
-\fB\-n\fR, but creates all the keys in parallel, using different threads.
-\fIThis is beta\-quality code. Use at your own risk!\fR
-.TP 3n
-\(bu
+\fB\-n\fR, but create all the keys in parallel, using different threads\&.
+\fIThis is beta\-quality code\&. Use at your own risk!\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: quick option
+.\" quick option: myisamchk
\fB\-\-quick\fR,
\fB\-q\fR
.sp
-Achieve a faster repair by not modifying the data file. You can specify this option twice to force
+Achieve a faster repair by not modifying the data file\&. You can specify this option twice to force
\fBmyisamchk\fR
-to modify the original data file in case of duplicate keys.
-.TP 3n
-\(bu
+to modify the original data file in case of duplicate keys\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: recover option
+.\" recover option: myisamchk
\fB\-\-recover\fR,
\fB\-r\fR
.sp
Do a repair that can fix almost any problem except unique keys that are not unique (which is an extremely unlikely error with
MyISAM
-tables). If you want to recover a table, this is the option to try first. You should try
+tables)\&. If you want to recover a table, this is the option to try first\&. You should try
\fB\-\-safe\-recover\fR
only if
\fBmyisamchk\fR
reports that the table cannot be recovered using
-\fB\-\-recover\fR. (In the unlikely case that
+\fB\-\-recover\fR\&. (In the unlikely case that
\fB\-\-recover\fR
-fails, the data file remains intact.)
+fails, the data file remains intact\&.)
.sp
If you have lots of memory, you should increase the value of
-sort_buffer_size.
-.TP 3n
-\(bu
+sort_buffer_size\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: safe-recover option
+.\" safe-recover option: myisamchk
\fB\-\-safe\-recover\fR,
\fB\-o\fR
.sp
-Do a repair using an old recovery method that reads through all rows in order and updates all index trees based on the rows found. This is an order of magnitude slower than
+Do a repair using an old recovery method that reads through all rows in order and updates all index trees based on the rows found\&. This is an order of magnitude slower than
\fB\-\-recover\fR, but can handle a couple of very unlikely cases that
\fB\-\-recover\fR
-cannot. This recovery method also uses much less disk space than
-\fB\-\-recover\fR. Normally, you should repair first using
+cannot\&. This recovery method also uses much less disk space than
+\fB\-\-recover\fR\&. Normally, you should repair first using
\fB\-\-recover\fR, and then with
\fB\-\-safe\-recover\fR
only if
\fB\-\-recover\fR
-fails.
+fails\&.
.sp
If you have lots of memory, you should increase the value of
-key_buffer_size.
-.TP 3n
-\(bu
+key_buffer_size\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: set-character-set option
+.\" set-character-set option: myisamchk
\fB\-\-set\-character\-set=\fR\fB\fIname\fR\fR
.sp
-Change the character set used by the table indexes. This option was replaced by
+Change the character set used by the table indexes\&. This option was replaced by
\fB\-\-set\-collation\fR
-in MySQL 5.0.3.
-.TP 3n
-\(bu
+in MySQL 5\&.0\&.3\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: set-collation option
+.\" set-collation option: myisamchk
\fB\-\-set\-collation=\fR\fB\fIname\fR\fR
.sp
-Specify the collation to use for sorting table indexes. The character set name is implied by the first part of the collation name.
-.TP 3n
-\(bu
+Specify the collation to use for sorting table indexes\&. The character set name is implied by the first part of the collation name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: sort-recover option
+.\" sort-recover option: myisamchk
\fB\-\-sort\-recover\fR,
\fB\-n\fR
.sp
Force
\fBmyisamchk\fR
-to use sorting to resolve the keys even if the temporary files would be very large.
-.TP 3n
-\(bu
+to use sorting to resolve the keys even if the temporary files would be very large\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: tmpdir option
+.\" tmpdir option: myisamchk
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR,
\fB\-t \fR\fB\fIpath\fR\fR
.sp
-Path of the directory to be used for storing temporary files. If this is not set,
+The path of the directory to be used for storing temporary files\&. If this is not set,
\fBmyisamchk\fR
uses the value of the
TMPDIR
-environment variable.
+environment variable\&.
tmpdir
-can be set to a list of directory paths that are used successively in round\-robin fashion for creating temporary files. The separator character between directory names is the colon (\(lq:\(rq) on Unix and the semicolon (\(lq;\(rq) on Windows, NetWare, and OS/2.
-.TP 3n
-\(bu
+can be set to a list of directory paths that are used successively in round\-robin fashion for creating temporary files\&. The separator character between directory names is the colon (\(lq:\(rq) on Unix and the semicolon (\(lq;\(rq) on Windows, NetWare, and OS/2\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: unpack option
+.\" unpack option: myisamchk
\fB\-\-unpack\fR,
\fB\-u\fR
.sp
Unpack a table that was packed with
-\fBmyisampack\fR.
+\fBmyisampack\fR\&.
+.RE
.SH "OTHER MYISAMCHK OPTIONS"
.PP
\fBmyisamchk\fR
supports the following options for actions other than table checks and repairs:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: analyze option
+.\" analyze option: myisamchk
\fB\-\-analyze\fR,
\fB\-a\fR
.sp
-Analyze the distribution of key values. This improves join performance by enabling the join optimizer to better choose the order in which to join the tables and which indexes it should use. To obtain information about the key distribution, use a
+Analyze the distribution of key values\&. This improves join performance by enabling the join optimizer to better choose the order in which to join the tables and which indexes it should use\&. To obtain information about the key distribution, use a
\fBmyisamchk \-\-description \-\-verbose \fR\fB\fItbl_name\fR\fR
command or the
SHOW INDEX FROM \fItbl_name\fR
-statement.
-.TP 3n
-\(bu
+statement\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: block-search option
+.\" block-search option: myisamchk
\fB\-\-block\-search=\fR\fB\fIoffset\fR\fR,
\fB\-b \fR\fB\fIoffset\fR\fR
.sp
-Find the record that a block at the given offset belongs to.
-.TP 3n
-\(bu
+Find the record that a block at the given offset belongs to\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: description option
+.\" description option: myisamchk
\fB\-\-description\fR,
\fB\-d\fR
.sp
-Print some descriptive information about the table.
-.TP 3n
-\(bu
+Print some descriptive information about the table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: set-auto-increment[ option
+.\" set-auto-increment[ option: myisamchk
\fB\-\-set\-auto\-increment[=\fR\fB\fIvalue\fR\fR\fB]\fR,
\fB\-A[\fR\fB\fIvalue\fR\fR\fB]\fR
.sp
@@ -722,120 +1192,175 @@ Force
AUTO_INCREMENT
numbering for new records to start at the given value (or higher, if there are existing records with
AUTO_INCREMENT
-values this large). If
+values this large)\&. If
\fIvalue\fR
is not specified,
AUTO_INCREMENT
-numbers for new records begin with the largest value currently in the table, plus one.
-.TP 3n
-\(bu
+numbers for new records begin with the largest value currently in the table, plus one\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: sort-index option
+.\" sort-index option: myisamchk
\fB\-\-sort\-index\fR,
\fB\-S\fR
.sp
-Sort the index tree blocks in high\-low order. This optimizes seeks and makes table scans that use indexes faster.
-.TP 3n
-\(bu
+Sort the index tree blocks in high\-low order\&. This optimizes seeks and makes table scans that use indexes faster\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: sort-records option
+.\" sort-records option: myisamchk
\fB\-\-sort\-records=\fR\fB\fIN\fR\fR,
\fB\-R \fR\fB\fIN\fR\fR
.sp
-Sort records according to a particular index. This makes your data much more localized and may speed up range\-based
+Sort records according to a particular index\&. This makes your data much more localized and may speed up range\-based
SELECT
and
ORDER BY
-operations that use this index. (The first time you use this option to sort a table, it may be very slow.) To determine a table's index numbers, use
-SHOW INDEX, which displays a table's indexes in the same order that
+operations that use this index\&. (The first time you use this option to sort a table, it may be very slow\&.) To determine a table\'s index numbers, use
+SHOW INDEX, which displays a table\'s indexes in the same order that
\fBmyisamchk\fR
-sees them. Indexes are numbered beginning with 1.
+sees them\&. Indexes are numbered beginning with 1\&.
.sp
If keys are not packed (PACK_KEYS=0), they have the same length, so when
\fBmyisamchk\fR
-sorts and moves records, it just overwrites record offsets in the index. If keys are packed (PACK_KEYS=1),
+sorts and moves records, it just overwrites record offsets in the index\&. If keys are packed (PACK_KEYS=1),
\fBmyisamchk\fR
-must unpack key blocks first, then re\-create indexes and pack the key blocks again. (In this case, re\-creating indexes is faster than updating offsets for each index.)
-.SH "\fBMYISAMCHK\fR MEMORY USAGE"
+must unpack key blocks first, then re\-create indexes and pack the key blocks again\&. (In this case, re\-creating indexes is faster than updating offsets for each index\&.)
+.RE
+.SH "MYISAMCHK MEMORY USAGE"
+.\" memory usage: myisamchk
.PP
Memory allocation is important when you run
-\fBmyisamchk\fR.
+\fBmyisamchk\fR\&.
\fBmyisamchk\fR
-uses no more memory than its memory\-related variables are set to. If you are going to use
+uses no more memory than its memory\-related variables are set to\&. If you are going to use
\fBmyisamchk\fR
-on very large tables, you should first decide how much memory you want it to use. The default is to use only about 3MB to perform repairs. By using larger values, you can get
+on very large tables, you should first decide how much memory you want it to use\&. The default is to use only about 3MB to perform repairs\&. By using larger values, you can get
\fBmyisamchk\fR
-to operate faster. For example, if you have more than 32MB RAM, you could use options such as these (in addition to any other options you might specify):
+to operate faster\&. For example, if you have more than 32MB RAM, you could use options such as these (in addition to any other options you might specify):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-\-sort_buffer_size=16M \-\-key_buffer_size=16M \\\fR
- \fB\-\-read_buffer_size=1M \-\-write_buffer_size=1M ...\fR
+shell> \fBmyisamchk \-\-sort_buffer_size=16M \-\-key_buffer_size=16M \e\fR
+ \fB\-\-read_buffer_size=1M \-\-write_buffer_size=1M \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Using
\fB\-\-sort_buffer_size=16M\fR
-should probably be enough for most cases.
+should probably be enough for most cases\&.
.PP
Be aware that
\fBmyisamchk\fR
uses temporary files in
-TMPDIR. If
+TMPDIR\&. If
TMPDIR
-points to a memory file system, you may easily get out of memory errors. If this happens, run
+points to a memory file system, you may easily get out of memory errors\&. If this happens, run
\fBmyisamchk\fR
with the
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR
-option to specify some directory located on a file system that has more space.
+option to specify some directory located on a file system that has more space\&.
.PP
When repairing,
\fBmyisamchk\fR
also needs a lot of disk space:
-.TP 3n
-\(bu
-Double the size of the data file (the original file and a copy). This space is not needed if you do a repair with
-\fB\-\-quick\fR; in this case, only the index file is re\-created.
-\fIThis space must be available on the same file system as the original data file\fR, as the copy is created in the same directory as the original.
-.TP 3n
-\(bu
-Space for the new index file that replaces the old one. The old index file is truncated at the start of the repair operation, so you usually ignore this space. This space must be available on the same file system as the original data file.
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Double the size of the data file (the original file and a copy)\&. This space is not needed if you do a repair with
+\fB\-\-quick\fR; in this case, only the index file is re\-created\&.
+\fIThis space must be available on the same file system as the original data file\fR, as the copy is created in the same directory as the original\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Space for the new index file that replaces the old one\&. The old index file is truncated at the start of the repair operation, so you usually ignore this space\&. This space must be available on the same file system as the original data file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
When using
\fB\-\-recover\fR
or
\fB\-\-sort\-recover\fR
(but not when using
-\fB\-\-safe\-recover\fR), you need space for a sort buffer. The following formula yields the amount of space required:
+\fB\-\-safe\-recover\fR), you need space for a sort buffer\&. The following formula yields the amount of space required:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
(\fIlargest_key\fR + \fIrow_pointer_length\fR) \(mu \fInumber_of_rows\fR \(mu 2
.fi
+.if n \{\
.RE
+.\}
+.sp
You can check the length of the keys and the
row_pointer_length
with
-\fBmyisamchk \-dv \fR\fB\fItbl_name\fR\fR. This space is allocated in the temporary directory (specified by
+\fBmyisamchk \-dv \fR\fB\fItbl_name\fR\fR\&. This space is allocated in the temporary directory (specified by
TMPDIR
or
-\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR).
-.sp
+\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR)\&.
.RE
.PP
If you have a problem with disk space during repair, you can try
\fB\-\-safe\-recover\fR
instead of
-\fB\-\-recover\fR.
+\fB\-\-recover\fR\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/myisamlog.1'
--- a/man/myisamlog.1 2009-05-25 09:59:47 +0000
+++ b/man/myisamlog.1 2009-09-16 12:03:18 +0000
@@ -1,129 +1,241 @@
+'\" t
.\" Title: \fBmyisamlog\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYISAMLOG\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYISAMLOG\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" myisamlog
+.\" isamlog
.SH "NAME"
myisamlog \- display MyISAM log file contents
.SH "SYNOPSIS"
-.HP 46
-\fBmyisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] ...]\fR
+.HP \w'\fBmyisamlog\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIlog_file\fR\fR\fB\ [\fR\fB\fItbl_name\fR\fR\fB]\ \&.\&.\&.]\fR\ 'u
+\fBmyisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
\fBmyisamlog\fR
processes the contents of a
MyISAM
-log file.
+log file\&.
.PP
Invoke
\fBmyisamlog\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] ...]\fR
-shell> \fBisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] ...]\fR
+shell> \fBmyisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] \&.\&.\&.]\fR
+shell> \fBisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-The default operation is update (\fB\-u\fR). If a recovery is done (\fB\-r\fR), all writes and possibly updates and deletes are done and errors are only counted. The default log file name is
-\fImyisam.log\fR
+The default operation is update (\fB\-u\fR)\&. If a recovery is done (\fB\-r\fR), all writes and possibly updates and deletes are done and errors are only counted\&. The default log file name is
+myisam\&.log
for
\fBmyisamlog\fR
and
-\fIisam.log\fR
+isam\&.log
for
\fBisamlog\fR
if no
\fIlog_file\fR
-argument is given. If tables are named on the command line, only those tables are updated.
+argument is given\&. If tables are named on the command line, only those tables are updated\&.
.PP
\fBmyisamlog\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-c \fR\fB\fIN\fR\fR
.sp
Execute only
\fIN\fR
-commands.
-.TP 3n
-\(bu
+commands\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-f \fR\fB\fIN\fR\fR
.sp
-Specify the maximum number of open files.
-.TP 3n
-\(bu
+Specify the maximum number of open files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-i\fR
.sp
-Display extra information before exiting.
-.TP 3n
-\(bu
+Display extra information before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-o \fR\fB\fIoffset\fR\fR
.sp
-Specify the starting offset.
-.TP 3n
-\(bu
+Specify the starting offset\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-p \fR\fB\fIN\fR\fR
.sp
Remove
\fIN\fR
-components from path.
-.TP 3n
-\(bu
+components from path\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-r\fR
.sp
-Perform a recovery operation.
-.TP 3n
-\(bu
+Perform a recovery operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-R \fR\fB\fIrecord_pos_file record_pos\fR\fR
.sp
-Specify record position file and record position.
-.TP 3n
-\(bu
+Specify record position file and record position\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-u\fR
.sp
-Perform an update operation.
-.TP 3n
-\(bu
+Perform an update operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-v\fR
.sp
-Verbose mode. Print more output about what the program does. This option can be given multiple times to produce more and more output.
-.TP 3n
-\(bu
+Verbose mode\&. Print more output about what the program does\&. This option can be given multiple times to produce more and more output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-w \fR\fB\fIwrite_file\fR\fR
.sp
-Specify the write file.
-.TP 3n
-\(bu
+Specify the write file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-V\fR
.sp
-Display version information.
+Display version information\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/myisampack.1'
--- a/man/myisampack.1 2009-05-25 09:59:47 +0000
+++ b/man/myisampack.1 2009-09-16 12:03:18 +0000
@@ -1,198 +1,351 @@
+'\" t
.\" Title: \fBmyisampack\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYISAMPACK\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYISAMPACK\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" myisampack
+.\" compressed tables
+.\" tables: compressed
+.\" MyISAM: compressed tables
.SH "NAME"
myisampack \- generate compressed, read\-only MyISAM tables
.SH "SYNOPSIS"
-.HP 35
-\fBmyisampack [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR\fB ...\fR
+.HP \w'\fBmyisampack\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIfile_name\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmyisampack [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBmyisampack\fR
utility compresses
MyISAM
-tables.
+tables\&.
\fBmyisampack\fR
-works by compressing each column in the table separately. Usually,
+works by compressing each column in the table separately\&. Usually,
\fBmyisampack\fR
-packs the data file 40%\-70%.
+packs the data file 40%\(en70%\&.
.PP
-When the table is used later, the server reads into memory the information needed to decompress columns. This results in much better performance when accessing individual rows, because you only have to uncompress exactly one row.
+When the table is used later, the server reads into memory the information needed to decompress columns\&. This results in much better performance when accessing individual rows, because you only have to uncompress exactly one row\&.
.PP
MySQL uses
mmap()
-when possible to perform memory mapping on compressed tables. If
+when possible to perform memory mapping on compressed tables\&. If
mmap()
-does not work, MySQL falls back to normal read/write file operations.
+does not work, MySQL falls back to normal read/write file operations\&.
.PP
Please note the following:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
If the
\fBmysqld\fR
server was invoked with external locking disabled, it is not a good idea to invoke
\fBmyisampack\fR
-if the table might be updated by the server during the packing process. It is safest to compress tables with the server stopped.
-.TP 3n
-\(bu
-After packing a table, it becomes read only. This is generally intended (such as when accessing packed tables on a CD). Allowing writes to a packed table is on our TODO list, but with low priority.
+if the table might be updated by the server during the packing process\&. It is safest to compress tables with the server stopped\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+After packing a table, it becomes read only\&. This is generally intended (such as when accessing packed tables on a CD)\&. Allowing writes to a packed table is on our TODO list, but with low priority\&.
.RE
.PP
Invoke
\fBmyisampack\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisampack [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR\fB ...\fR
+shell> \fBmyisampack [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR\fB \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Each file name argument should be the name of an index (\fI.MYI\fR) file. If you are not in the database directory, you should specify the path name to the file. It is permissible to omit the
-\fI.MYI\fR
-extension.
+Each file name argument should be the name of an index (\&.MYI) file\&. If you are not in the database directory, you should specify the path name to the file\&. It is permissible to omit the
+\&.MYI
+extension\&.
.PP
After you compress a table with
\fBmyisampack\fR, you should use
\fBmyisamchk \-rq\fR
-to rebuild its indexes.
-\fBmyisamchk\fR(1).
+to rebuild its indexes\&.
+\fBmyisamchk\fR(1)\&.
.PP
\fBmyisampack\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: help option
+.\" help option: myisampack
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: backup option
+.\" backup option: myisampack
\fB\-\-backup\fR,
\fB\-b\fR
.sp
-Make a backup of each table's data file using the name
-\fI\fItbl_name\fR\fR\fI.OLD\fR.
-.TP 3n
-\(bu
+Make a backup of each table\'s data file using the name
+\fItbl_name\fR\&.OLD\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: character-sets-dir option
+.\" character-sets-dir option: myisampack
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: debug option
+.\" debug option: myisampack
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: force option
+.\" force option: myisampack
\fB\-\-force\fR,
\fB\-f\fR
.sp
Produce a packed table even if it becomes larger than the original or if the intermediate file from an earlier invocation of
\fBmyisampack\fR
-exists. (\fBmyisampack\fR
+exists\&. (\fBmyisampack\fR
creates an intermediate file named
-\fI\fItbl_name\fR\fR\fI.TMD\fR
-in the database directory while it compresses the table. If you kill
+\fItbl_name\fR\&.TMD
+in the database directory while it compresses the table\&. If you kill
\fBmyisampack\fR, the
-\fI.TMD\fR
-file might not be deleted.) Normally,
+\&.TMD
+file might not be deleted\&.) Normally,
\fBmyisampack\fR
exits with an error if it finds that
-\fI\fItbl_name\fR\fR\fI.TMD\fR
-exists. With
+\fItbl_name\fR\&.TMD
+exists\&. With
\fB\-\-force\fR,
\fBmyisampack\fR
-packs the table anyway.
-.TP 3n
-\(bu
+packs the table anyway\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: join option
+.\" join option: myisampack
\fB\-\-join=\fR\fB\fIbig_tbl_name\fR\fR,
\fB\-j \fR\fB\fIbig_tbl_name\fR\fR
.sp
Join all tables named on the command line into a single packed table
-\fIbig_tbl_name\fR. All tables that are to be combined
+\fIbig_tbl_name\fR\&. All tables that are to be combined
\fImust\fR
-have identical structure (same column names and types, same indexes, and so forth).
+have identical structure (same column names and types, same indexes, and so forth)\&.
.sp
\fIbig_tbl_name\fR
-must not exist prior to the join operation. All source tables named on the command line to be merged into
+must not exist prior to the join operation\&. All source tables named on the command line to be merged into
\fIbig_tbl_name\fR
-must exist. The source tables are read for the join operation but not modified. The join operation does not create a
-\fI.frm\fR
+must exist\&. The source tables are read for the join operation but not modified\&. The join operation does not create a
+\&.frm
file for
\fIbig_tbl_name\fR, so after the join operation finishes, copy the
-\fI.frm\fR
+\&.frm
file from one of the source tables and name it
-\fI\fIbig_tbl_name\fR\fR\fI.frm\fR.
-.TP 3n
-\(bu
+\fIbig_tbl_name\fR\&.frm\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: silent option
+.\" silent option: myisampack
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Write output only when errors occur.
-.TP 3n
-\(bu
+Silent mode\&. Write output only when errors occur\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: test option
+.\" test option: myisampack
\fB\-\-test\fR,
\fB\-t\fR
.sp
-Do not actually pack the table, just test packing it.
-.TP 3n
-\(bu
+Do not actually pack the table, just test packing it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: tmpdir option
+.\" tmpdir option: myisampack
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR,
\fB\-T \fR\fB\fIpath\fR\fR
.sp
Use the named directory as the location where
\fBmyisampack\fR
-creates temporary files.
-.TP 3n
-\(bu
+creates temporary files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: verbose option
+.\" verbose option: myisampack
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Write information about the progress of the packing operation and its result.
-.TP 3n
-\(bu
+Verbose mode\&. Write information about the progress of the packing operation and its result\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: version option
+.\" version option: myisampack
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: wait option
+.\" wait option: myisampack
\fB\-\-wait\fR,
\fB\-w\fR
.sp
-Wait and retry if the table is in use. If the
+Wait and retry if the table is in use\&. If the
\fBmysqld\fR
server was invoked with external locking disabled, it is not a good idea to invoke
\fBmyisampack\fR
-if the table might be updated by the server during the packing process.
-.sp
+if the table might be updated by the server during the packing process\&.
.RE
+.\" examples: compressed tables
.PP
The following sequence of commands illustrates a typical table compression session:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBls \-l station.*\fR
-\-rw\-rw\-r\-\- 1 monty my 994128 Apr 17 19:00 station.MYD
-\-rw\-rw\-r\-\- 1 monty my 53248 Apr 17 19:00 station.MYI
-\-rw\-rw\-r\-\- 1 monty my 5767 Apr 17 19:00 station.frm
+shell> \fBls \-l station\&.*\fR
+\-rw\-rw\-r\-\- 1 monty my 994128 Apr 17 19:00 station\&.MYD
+\-rw\-rw\-r\-\- 1 monty my 53248 Apr 17 19:00 station\&.MYI
+\-rw\-rw\-r\-\- 1 monty my 5767 Apr 17 19:00 station\&.frm
shell> \fBmyisamchk \-dvv station\fR
MyISAM file: station
Isam\-version: 2
@@ -207,7 +360,7 @@ Record format: Fixed length
table description:
Key Start Len Index Type Root Blocksize Rec/key
1 2 4 unique unsigned long 1024 1024 1
-2 32 30 multip. text 10240 1024 1
+2 32 30 multip\&. text 10240 1024 1
Field Start Length Type
1 1 1
2 2 4
@@ -266,19 +419,19 @@ Field Start Length Type
55 807 20
56 827 4
57 831 4
-shell> \fBmyisampack station.MYI\fR
-Compressing station.MYI: (1192 records)
+shell> \fBmyisampack station\&.MYI\fR
+Compressing station\&.MYI: (1192 records)
\- Calculating statistics
normal: 20 empty\-space: 16 empty\-zero: 12 empty\-fill: 11
pre\-space: 0 end\-space: 12 table\-lookups: 5 zero: 7
Original trees: 57 After join: 17
\- Compressing file
-87.14%
+87\&.14%
Remember to run myisamchk \-rq on compressed tables
-shell> \fBls \-l station.*\fR
-\-rw\-rw\-r\-\- 1 monty my 127874 Apr 17 19:00 station.MYD
-\-rw\-rw\-r\-\- 1 monty my 55296 Apr 17 19:04 station.MYI
-\-rw\-rw\-r\-\- 1 monty my 5767 Apr 17 19:00 station.frm
+shell> \fBls \-l station\&.*\fR
+\-rw\-rw\-r\-\- 1 monty my 127874 Apr 17 19:00 station\&.MYD
+\-rw\-rw\-r\-\- 1 monty my 55296 Apr 17 19:04 station\&.MYI
+\-rw\-rw\-r\-\- 1 monty my 5767 Apr 17 19:00 station\&.frm
shell> \fBmyisamchk \-dvv station\fR
MyISAM file: station
Isam\-version: 2
@@ -293,7 +446,7 @@ Record format: Compressed
table description:
Key Start Len Index Type Root Blocksize Rec/key
1 2 4 unique unsigned long 10240 1024 1
-2 32 30 multip. text 54272 1024 1
+2 32 30 multip\&. text 54272 1024 1
Field Start Length Type Huff tree Bits
1 1 1 constant 1 0
2 2 4 zerofill(1) 2 9
@@ -353,171 +506,341 @@ Field Start Length Type
56 827 4 no zeros, zerofill(2) 2 9
57 831 4 no zeros, zerofill(1) 2 9
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmyisampack\fR
displays the following kinds of information:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
normal
.sp
-The number of columns for which no extra packing is used.
-.TP 3n
-\(bu
+The number of columns for which no extra packing is used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
empty\-space
.sp
-The number of columns containing values that are only spaces. These occupy one bit.
-.TP 3n
-\(bu
+The number of columns containing values that are only spaces\&. These occupy one bit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
empty\-zero
.sp
-The number of columns containing values that are only binary zeros. These occupy one bit.
-.TP 3n
-\(bu
+The number of columns containing values that are only binary zeros\&. These occupy one bit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
empty\-fill
.sp
-The number of integer columns that do not occupy the full byte range of their type. These are changed to a smaller type. For example, a
+The number of integer columns that do not occupy the full byte range of their type\&. These are changed to a smaller type\&. For example, a
BIGINT
column (eight bytes) can be stored as a
TINYINT
column (one byte) if all its values are in the range from
\-128
to
-127.
-.TP 3n
-\(bu
+127\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
pre\-space
.sp
-The number of decimal columns that are stored with leading spaces. In this case, each value contains a count for the number of leading spaces.
-.TP 3n
-\(bu
+The number of decimal columns that are stored with leading spaces\&. In this case, each value contains a count for the number of leading spaces\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
end\-space
.sp
-The number of columns that have a lot of trailing spaces. In this case, each value contains a count for the number of trailing spaces.
-.TP 3n
-\(bu
+The number of columns that have a lot of trailing spaces\&. In this case, each value contains a count for the number of trailing spaces\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
table\-lookup
.sp
The column had only a small number of different values, which were converted to an
ENUM
-before Huffman compression.
-.TP 3n
-\(bu
+before Huffman compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
zero
.sp
-The number of columns for which all values are zero.
-.TP 3n
-\(bu
+The number of columns for which all values are zero\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Original trees
.sp
-The initial number of Huffman trees.
-.TP 3n
-\(bu
-After join
+The initial number of Huffman trees\&.
+.RE
.sp
-The number of distinct Huffman trees left after joining trees to save some header space.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+After join
.sp
+The number of distinct Huffman trees left after joining trees to save some header space\&.
.RE
.PP
After a table has been compressed,
\fBmyisamchk \-dvv\fR
prints additional information about each column:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Type
.sp
-The data type. The value may contain any of the following descriptors:
-.RS 3n
-.TP 3n
-\(bu
+The data type\&. The value may contain any of the following descriptors:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
constant
.sp
-All rows have the same value.
-.TP 3n
-\(bu
+All rows have the same value\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
no endspace
.sp
-Do not store endspace.
-.TP 3n
-\(bu
+Do not store endspace\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
no endspace, not_always
.sp
-Do not store endspace and do not do endspace compression for all values.
-.TP 3n
-\(bu
+Do not store endspace and do not do endspace compression for all values\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
no endspace, no empty
.sp
-Do not store endspace. Do not store empty values.
-.TP 3n
-\(bu
+Do not store endspace\&. Do not store empty values\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
table\-lookup
.sp
The column was converted to an
-ENUM.
-.TP 3n
-\(bu
+ENUM\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
zerofill(\fIN\fR)
.sp
The most significant
\fIN\fR
-bytes in the value are always 0 and are not stored.
-.TP 3n
-\(bu
+bytes in the value are always 0 and are not stored\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
no zeros
.sp
-Do not store zeros.
-.TP 3n
-\(bu
+Do not store zeros\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
always zero
.sp
-Zero values are stored using one bit.
+Zero values are stored using one bit\&.
.RE
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Huff tree
.sp
-The number of the Huffman tree associated with the column.
-.TP 3n
-\(bu
-Bits
+The number of the Huffman tree associated with the column\&.
+.RE
.sp
-The number of bits used in the Huffman tree.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Bits
.sp
+The number of bits used in the Huffman tree\&.
.RE
.PP
After you run
\fBmyisampack\fR, you must run
\fBmyisamchk\fR
-to re\-create any indexes. At this time, you can also sort the index blocks and create statistics needed for the MySQL optimizer to work more efficiently:
+to re\-create any indexes\&. At this time, you can also sort the index blocks and create statistics needed for the MySQL optimizer to work more efficiently:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-rq \-\-sort\-index \-\-analyze \fR\fB\fItbl_name\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \-rq \-\-sort\-index \-\-analyze \fR\fB\fItbl_name\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
After you have installed the packed table into the MySQL database directory, you should execute
\fBmysqladmin flush\-tables\fR
to force
\fBmysqld\fR
-to start using the new table.
+to start using the new table\&.
.PP
To unpack a packed table, use the
\fB\-\-unpack\fR
option to
-\fBmyisamchk\fR.
+\fBmyisamchk\fR\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql-stress-test.pl.1'
--- a/man/mysql-stress-test.pl.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql-stress-test.pl.1 2009-09-16 12:03:18 +0000
@@ -1,234 +1,519 @@
-.\" Title: \fBmysql\-stress\-test.pl\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/27/2009
+'\" t
+.\" Title: \fBmysql-stress-test.pl\fR
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/08/2009
.\" Manual: MySQL Database System
.\" Source: MySQL
+.\" Language: English
.\"
-.TH "\fBMYSQL\-STRESS\-TEST" "1" "03/27/2009" "MySQL" "MySQL Database System"
+.TH "\FBMYSQL\-STRESS\-TE" "1" "08/08/2009" "MySQL" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql-stress-test.pl
.SH "NAME"
-mysql\-stress\-test.pl \- server stress test program
+mysql-stress-test.pl \- server stress test program
.SH "SYNOPSIS"
-.HP 31
-\fBmysql\-stress\-test.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
+.HP \w'\fBmysql\-stress\-test\&.pl\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
+\fBmysql\-stress\-test\&.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
The
-\fBmysql\-stress\-test.pl\fR
-Perl script performs stress\-testing of the MySQL server. (MySQL 5.0 and up only)
+\fBmysql\-stress\-test\&.pl\fR
+Perl script performs stress\-testing of the MySQL server\&. (MySQL 5\&.0 and up only)
.PP
-\fBmysql\-stress\-test.pl\fR
-requires a version of Perl that has been built with threads support.
+\fBmysql\-stress\-test\&.pl\fR
+requires a version of Perl that has been built with threads support\&.
.PP
Invoke
-\fBmysql\-stress\-test.pl\fR
+\fBmysql\-stress\-test\&.pl\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql\-stress\-test.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
+shell> \fBmysql\-stress\-test\&.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-\fBmysql\-stress\-test.pl\fR
+\fBmysql\-stress\-test\&.pl\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: help option
+.\" help option: mysql-stress-test.pl
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: abort-on-error option
+.\" abort-on-error option: mysql-stress-test.pl
\fB\-\-abort\-on\-error\fR
.sp
-Unknown.
-.TP 3n
-\(bu
+Unknown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: check-tests-file option
+.\" check-tests-file option: mysql-stress-test.pl
\fB\-\-check\-tests\-file\fR
.sp
-Periodically check the file that lists the tests to be run. If it has been modified, reread the file. This can be useful if you update the list of tests to be run during a stress test.
-.TP 3n
-\(bu
+Periodically check the file that lists the tests to be run\&. If it has been modified, reread the file\&. This can be useful if you update the list of tests to be run during a stress test\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: cleanup option
+.\" cleanup option: mysql-stress-test.pl
\fB\-\-cleanup\fR
.sp
-Force cleanup of the working directory.
-.TP 3n
-\(bu
+Force cleanup of the working directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: log-error-details option
+.\" log-error-details option: mysql-stress-test.pl
\fB\-\-log\-error\-details\fR
.sp
-Log error details in the global error log file.
-.TP 3n
-\(bu
+Log error details in the global error log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: loop-count option
+.\" loop-count option: mysql-stress-test.pl
\fB\-\-loop\-count=\fR\fB\fIN\fR\fR
.sp
-In sequential test mode, the number of loops to execute before exiting.
-.TP 3n
-\(bu
+In sequential test mode, the number of loops to execute before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: mysqltest option
+.\" mysqltest option: mysql-stress-test.pl
\fB\-\-mysqltest=\fR\fB\fIpath\fR\fR
.sp
The path name to the
\fBmysqltest\fR
-program.
-.TP 3n
-\(bu
+program\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-database option
+.\" server-database option: mysql-stress-test.pl
\fB\-\-server\-database=\fR\fB\fIdb_name\fR\fR
.sp
-The database to use for the tests.
-.TP 3n
-\(bu
+The database to use for the tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-host option
+.\" server-host option: mysql-stress-test.pl
\fB\-\-server\-host=\fR\fB\fIhost_name\fR\fR
.sp
-The host name of the local host to use for making a TCP/IP connection to the local server. By default, the connection is made to
+The host name of the local host to use for making a TCP/IP connection to the local server\&. By default, the connection is made to
localhost
-using a Unix socket file.
-.TP 3n
-\(bu
+using a Unix socket file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-logs-dir option
+.\" server-logs-dir option: mysql-stress-test.pl
\fB\-\-server\-logs\-dir=\fR\fB\fIpath\fR\fR
.sp
-This option is required.
+This option is required\&.
\fIpath\fR
-is the directory where all client session logs will be stored. Usually this is the shared directory that is associated with the server used for testing.
-.TP 3n
-\(bu
+is the directory where all client session logs will be stored\&. Usually this is the shared directory that is associated with the server used for testing\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-password option
+.\" server-password option: mysql-stress-test.pl
\fB\-\-server\-password=\fR\fB\fIpassword\fR\fR
.sp
-The password to use when connecting to the server.
-.TP 3n
-\(bu
+The password to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-port option
+.\" server-port option: mysql-stress-test.pl
\fB\-\-server\-port=\fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for connecting to the server. The default is 3306.
-.TP 3n
-\(bu
+The TCP/IP port number to use for connecting to the server\&. The default is 3306\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-socket option
+.\" server-socket option: mysql-stress-test.pl
\fB\-\-server\-socket=\fR\fB\fIfile_name\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use. The default if
-\fI/tmp/mysql.sock\fR.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&. The default if
+/tmp/mysql\&.sock\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-user option
+.\" server-user option: mysql-stress-test.pl
\fB\-\-server\-user=\fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server. The default is
-root.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&. The default is
+root\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: sleep-time option
+.\" sleep-time option: mysql-stress-test.pl
\fB\-\-sleep\-time=\fR\fB\fIN\fR\fR
.sp
-The delay in seconds between test executions.
-.TP 3n
-\(bu
+The delay in seconds between test executions\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-basedir option
+.\" stress-basedir option: mysql-stress-test.pl
\fB\-\-stress\-basedir=\fR\fB\fIpath\fR\fR
.sp
-This option is required.
+This option is required\&.
\fIpath\fR
-is the working directory for the test run. It is used as the temporary location for result tracking during testing.
-.TP 3n
-\(bu
+is the working directory for the test run\&. It is used as the temporary location for result tracking during testing\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-datadir option
+.\" stress-datadir option: mysql-stress-test.pl
\fB\-\-stress\-datadir=\fR\fB\fIpath\fR\fR
.sp
-The directory of data files to be used during testing. The default location is the
-\fIdata\fR
+The directory of data files to be used during testing\&. The default location is the
+data
directory under the location given by the
\fB\-\-stress\-suite\-basedir\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-init-file option
+.\" stress-init-file option: mysql-stress-test.pl
\fB\-\-stress\-init\-file[=\fR\fB\fIpath\fR\fR\fB]\fR
.sp
\fIfile_name\fR
-is the location of the file that contains the list of tests. If missing, the default file is
-\fIstress_init.txt\fR
-in the test suite directory.
-.TP 3n
-\(bu
+is the location of the file that contains the list of tests\&. If missing, the default file is
+stress_init\&.txt
+in the test suite directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-mode option
+.\" stress-mode option: mysql-stress-test.pl
\fB\-\-stress\-mode=\fR\fB\fImode\fR\fR
.sp
-This option indicates the test order in stress\-test mode. The
+This option indicates the test order in stress\-test mode\&. The
\fImode\fR
value is either
random
to select tests in random order or
seq
-to run tests in each thread in the order specified in the test list file. The default mode is
-random.
-.TP 3n
-\(bu
+to run tests in each thread in the order specified in the test list file\&. The default mode is
+random\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-suite-basedir option
+.\" stress-suite-basedir option: mysql-stress-test.pl
\fB\-\-stress\-suite\-basedir=\fR\fB\fIpath\fR\fR
.sp
-This option is required.
+This option is required\&.
\fIpath\fR
is the directory that has the
-\fIt\fR
+t
and
\fIr\fR
-subdirectories containing the test case and result files. This directory is also the default location of the
-\fIstress\-test.txt\fR
-file that contains the list of tests. (A different location can be specified with the
+subdirectories containing the test case and result files\&. This directory is also the default location of the
+stress\-test\&.txt
+file that contains the list of tests\&. (A different location can be specified with the
\fB\-\-stress\-tests\-file\fR
-option.)
-.TP 3n
-\(bu
+option\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-tests-file option
+.\" stress-tests-file option: mysql-stress-test.pl
\fB\-\-stress\-tests\-file[=\fR\fB\fIfile_name\fR\fR\fB]\fR
.sp
-Use this option to run the stress tests.
+Use this option to run the stress tests\&.
\fIfile_name\fR
-is the location of the file that contains the list of tests. If
+is the location of the file that contains the list of tests\&. If
\fIfile_name\fR
is omitted, the default file is
-\fIstress\-test.txt\fR
-in the stress suite directory. (See
-\fB\-\-stress\-suite\-basedir\fR.)
-.TP 3n
-\(bu
+stress\-test\&.txt
+in the stress suite directory\&. (See
+\fB\-\-stress\-suite\-basedir\fR\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: suite option
+.\" suite option: mysql-stress-test.pl
\fB\-\-suite=\fR\fB\fIsuite_name\fR\fR
.sp
-Run the named test suite. The default name is
+Run the named test suite\&. The default name is
main
(the regular test suite located in the
-\fImysql\-test\fR
-directory).
-.TP 3n
-\(bu
+mysql\-test
+directory)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: test-count option
+.\" test-count option: mysql-stress-test.pl
\fB\-\-test\-count=\fR\fB\fIN\fR\fR
.sp
-The number of tests to execute before exiting.
-.TP 3n
-\(bu
+The number of tests to execute before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: test-duration option
+.\" test-duration option: mysql-stress-test.pl
\fB\-\-test\-duration=\fR\fB\fIN\fR\fR
.sp
-The duration of stress testing in seconds.
-.TP 3n
-\(bu
+The duration of stress testing in seconds\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: test-suffix option
+.\" test-suffix option: mysql-stress-test.pl
\fB\-\-test\-suffix=\fR\fB\fIstr\fR\fR
.sp
-Unknown.
-.TP 3n
-\(bu
+Unknown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: threads option
+.\" threads option: mysql-stress-test.pl
\fB\-\-threads=\fR\fB\fIN\fR\fR
.sp
-The number of threads. The default is 1.
-.TP 3n
-\(bu
+The number of threads\&. The default is 1\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: verbose option
+.\" verbose option: mysql-stress-test.pl
\fB\-\-verbose\fR
.sp
-Verbose mode. Print more information about what the program does.
+Verbose mode\&. Print more information about what the program does\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql-test-run.pl.1'
--- a/man/mysql-test-run.pl.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql-test-run.pl.1 2009-09-16 12:03:18 +0000
@@ -1,138 +1,159 @@
-.\" Title: \fBmysql\-test\-run.pl\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/27/2009
+'\" t
+.\" Title: \fBmysql-test-run.pl\fR
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/08/2009
.\" Manual: MySQL Database System
.\" Source: MySQL
+.\" Language: English
.\"
-.TH "\fBMYSQL\-TEST\-RUN.PL" "1" "03/27/2009" "MySQL" "MySQL Database System"
+.TH "\FBMYSQL\-TEST\-RUN\" "1" "08/08/2009" "MySQL" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql-test-run.pl
.SH "NAME"
-mysql\-test\-run.pl \- run MySQL test suite
+mysql-test-run.pl \- run MySQL test suite
.SH "SYNOPSIS"
-.HP 28
-\fBmysql\-test\-run.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
+.HP \w'\fBmysql\-test\-run\&.pl\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
+\fBmysql\-test\-run\&.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
The
-\fBmysql\-test\-run.pl\fR
-Perl script is the main application used to run the MySQL test suite. It invokes
+\fBmysql\-test\-run\&.pl\fR
+Perl script is the main application used to run the MySQL test suite\&. It invokes
\fBmysqltest\fR
-to run individual test cases. (Prior to MySQL 4.1, a similar shell script,
-\fBmysql\-test\-run\fR, can be used instead.)
+to run individual test cases\&. (Prior to MySQL 4\&.1, a similar shell script,
+\fBmysql\-test\-run\fR, can be used instead\&.)
.PP
Invoke
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
in the
-\fImysql\-test\fR
+mysql\-test
directory like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql\-test\-run.pl [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] ...\fR
+shell> \fBmysql\-test\-run\&.pl [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Each
\fItest_name\fR
-argument names a test case. The test case file that corresponds to the test name is
-\fIt/\fR\fI\fItest_name\fR\fR\fI.test\fR.
+argument names a test case\&. The test case file that corresponds to the test name is
+t/\fItest_name\fR\&.test\&.
.PP
For each
\fItest_name\fR
argument,
-\fBmysql\-test\-run.pl\fR
-runs the named test case. With no
+\fBmysql\-test\-run\&.pl\fR
+runs the named test case\&. With no
\fItest_name\fR
arguments,
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
runs all
-\fI.test\fR
+\&.test
files in the
-\fIt\fR
-subdirectory.
+t
+subdirectory\&.
.PP
If no suffix is given for the test name, a suffix of
-\fI.test\fR
-is assumed. Any leading path name is ignored. These commands are equivalent:
+\&.test
+is assumed\&. Any leading path name is ignored\&. These commands are equivalent:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql\-test\-run.pl mytest\fR
-shell> \fBmysql\-test\-run.pl mytest.test\fR
-shell> \fBmysql\-test\-run.pl t/mytest.test\fR
+shell> \fBmysql\-test\-run\&.pl mytest\fR
+shell> \fBmysql\-test\-run\&.pl mytest\&.test\fR
+shell> \fBmysql\-test\-run\&.pl t/mytest\&.test\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-As of MySQL 5.1.23, a suite name can be given as part of the test name. That is, the syntax for naming a test is:
+As of MySQL 5\&.1\&.23, a suite name can be given as part of the test name\&. That is, the syntax for naming a test is:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-[\fIsuite_name\fR.]\fItest_name\fR[.\fIsuffix\fR]
+[\fIsuite_name\fR\&.]\fItest_name\fR[\&.\fIsuffix\fR]
.fi
+.if n \{\
.RE
+.\}
.PP
If a suite name is given,
-\fBmysql\-test\-run.pl\fR
-looks in that suite for the test. With no suite name,
-\fBmysql\-test\-run.pl\fR
-looks in the default list of suites for a match and runs the test in any suites where it finds the test. Suppose that the default suite list is
+\fBmysql\-test\-run\&.pl\fR
+looks in that suite for the test\&. With no suite name,
+\fBmysql\-test\-run\&.pl\fR
+looks in the default list of suites for a match and runs the test in any suites where it finds the test\&. Suppose that the default suite list is
main,
binlog,
rpl, and that a test
-\fImytest.test\fR
+mytest\&.test
exists in the
main
and
rpl
-suites. With an argument of
+suites\&. With an argument of
mytest
or
-mytest.test,
-\fBmysql\-test\-run.pl\fR
+mytest\&.test,
+\fBmysql\-test\-run\&.pl\fR
will run
-\fImytest.test\fR
+mytest\&.test
from the
main
and
rpl
-suites.
+suites\&.
.PP
To run a family of test cases for which the names share a common prefix, use the
\fB\-\-do\-test=\fR\fB\fIprefix\fR\fR
-option. For example,
+option\&. For example,
\fB\-\-do\-test=rpl\fR
runs the replication tests (test cases that have names beginning with
-rpl).
+rpl)\&.
\fB\-\-skip\-test\fR
-has the opposite effect of skipping test cases for which the names share a common prefix.
+has the opposite effect of skipping test cases for which the names share a common prefix\&.
.PP
-As of MySQL 5.0.54/5.1.23/6.0.5, the argument for the
+As of MySQL 5\&.0\&.54/5\&.1\&.23/6\&.0\&.5, the argument for the
\fB\-\-do\-test\fR
and
\fB\-\-skip\-test\fR
-options allows more flexible specification of which tests to perform or skip. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern. If the argument contains a lone period or does not contain any pattern metacharacters, it is interpreted the same way as previously and matches test names that begin with the argument value. For example,
+options allows more flexible specification of which tests to perform or skip\&. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern\&. If the argument contains a lone period or does not contain any pattern metacharacters, it is interpreted the same way as previously and matches test names that begin with the argument value\&. For example,
\fB\-\-do\-test=testa\fR
matches tests that begin with
testa,
-\fB\-\-do\-test=main.testa\fR
+\fB\-\-do\-test=main\&.testa\fR
matches tests in the
main
test suite that begin with
testa, and
-\fB\-\-do\-test=main.*testa\fR
+\fB\-\-do\-test=main\&.*testa\fR
matches test names that contain
main
followed by
testa
-with anything in between. In the latter case, the pattern match is not anchored to the beginning of the test name, so it also matches names such as
-xmainytestz.
+with anything in between\&. In the latter case, the pattern match is not anchored to the beginning of the test name, so it also matches names such as
+xmainytestz\&.
.PP
To perform setup prior to running tests,
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
needs to invoke
\fBmysqld\fR
with the
@@ -140,72 +161,84 @@ with the
and
\fB\-\-skip\-grant\-tables\fR
options (see
-[1]\&\fITypical \fBconfigure\fR Options\fR). If MySQL was configured with the
+\m[blue]\fBTypical \fBconfigure\fR Options\fR\m[]\&\s-2\u[1]\d\s+2)\&. If MySQL was configured with the
\fB\-\-disable\-grant\-options\fR
option,
\fB\-\-bootstrap\fR,
\fB\-\-skip\-grant\-tables\fR, and
\fB\-\-init\-file\fR
-will be disabled. To handle this, set the
+will be disabled\&. To handle this, set the
MYSQLD_BOOTSTRAP
-environment variable to the full path name of a server that has all options enabled.
-\fBmysql\-test\-run.pl\fR
-will use that server to perform setup; it is not used to run the tests.
+environment variable to the full path name of a server that has all options enabled\&.
+\fBmysql\-test\-run\&.pl\fR
+will use that server to perform setup; it is not used to run the tests\&.
.PP
The
init_file
test will fail if
\fB\-\-init\-file\fR
-is disabled. This is an expected failure that can be handled as follows:
+is disabled\&. This is an expected failure that can be handled as follows:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBexport MYSQLD_BOOTSTRAP\fR
shell> \fBMYSQLD_BOOTSTRAP=/full/path/to/mysqld\fR
shell> \fBmake test force="\-\-skip\-test=init_file"\fR
.fi
+.if n \{\
.RE
+.\}
.PP
To run
-\fBmysql\-test\-run.pl\fR
-on Windows, you'll need either Cygwin or ActiveState Perl to run it. You may also need to install the modules required by the script. To run the test script, change location into the
-\fImysql\-test\fR
+\fBmysql\-test\-run\&.pl\fR
+on Windows, you\'ll need either Cygwin or ActiveState Perl to run it\&. You may also need to install the modules required by the script\&. To run the test script, change location into the
+mysql\-test
directory, set the
MTR_VS_CONFIG
environment variable to the configuration you selected earlier (or use the
\fB\-\-vs\-config\fR
option), and invoke
-\fBmysql\-test\-run.pl\fR. For example (using Cygwin and the
+\fBmysql\-test\-run\&.pl\fR\&. For example (using Cygwin and the
\fBbash\fR
shell):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcd mysql\-test\fR
-shell> \fBexport MTS_VS_CONFIG=debug\fR
-shell> \fB./mysqltest\-run.pl \-\-force \-\-timer\fR
-shell> \fB./mysqltest\-run.pl \-\-force \-\-timer \-\-ps\-protocol\fR
+shell> \fBexport MTR_VS_CONFIG=debug\fR
+shell> \fB\&./mysqltest\-run\&.pl \-\-force \-\-timer\fR
+shell> \fB\&./mysqltest\-run\&.pl \-\-force \-\-timer \-\-ps\-protocol\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you have a copy of
\fBmysqld\fR
running on the machine where you want to run the test suite, you do not have to stop it, as long as it is not using ports
9306
or
-9307. If either of those ports is taken, you should set the
+9307\&. If either of those ports is taken, you should set the
MTR_BUILD_THREAD
-environment variable to an appropriate value, and the test suite will use a different set of ports for master, slave, NDB, and Instance Manager). For example:
+environment variable to an appropriate value, and the test suite will use a different set of ports for master, slave, NDB, and Instance Manager)\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBexport MTR_BUILD_THREAD=31\fR
-shell> \fB./mysql\-test\-run.pl [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB]\fR
+shell> \fB\&./mysql\-test\-run\&.pl [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-\fBmysql\-test\-run.pl\fR
-defines several environment variables. Some of them are listed in the following table.
+\fBmysql\-test\-run\&.pl\fR
+defines several environment variables\&. Some of them are listed in the following table\&.
.TS
allbox tab(:);
l l
@@ -227,7 +260,7 @@ T}
T{
MYSQLTEST_VARDIR
T}:T{
-Path name to the \fIvar\fR directory that is used for
+Path name to the var directory that is used for
logs, temporary files, and so forth
T}
T{
@@ -246,127 +279,266 @@ T}:T{
???
T}
.TE
-.sp
+.sp 1
.PP
-Tests sometimes rely on certain environment variables being defined. For example, certain tests assume that
+Tests sometimes rely on certain environment variables being defined\&. For example, certain tests assume that
MYSQL_TEST
is defined so that
\fBmysqltest\fR
can invoke itself with
-exec $MYSQL_TEST.
+exec $MYSQL_TEST\&.
.PP
-\fBmysql\-test\-run.pl\fR
-supports the options in the following list. An argument of
+\fBmysql\-test\-run\&.pl\fR
+supports the options in the following list\&. An argument of
\fB\-\-\fR
tells
-\fBmysql\-test\-run.pl\fR
-not to process any following arguments as options. (A description of differences between the options supported by
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
+not to process any following arguments as options\&. (A description of differences between the options supported by
+\fBmysql\-test\-run\&.pl\fR
and
\fBmysql\-test\-run\fR
-appears following the list.)
-.TP 3n
-\(bu
+appears following the list\&.)
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: help option
+.\" help option: mysql-test-run.pl
\fB\-\-help\fR,
\fB\-h\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: bench option
+.\" bench option: mysql-test-run.pl
\fB\-\-bench\fR
.sp
-Run the benchmark suite.
-.TP 3n
-\(bu
+Run the benchmark suite\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: benchdir option
+.\" benchdir option: mysql-test-run.pl
\fB\-\-benchdir=\fR\fB\fIpath\fR\fR
.sp
-The directory where the benchmark suite is located. The default path is
-\fI../../mysql\-bench\fR.
-.TP 3n
-\(bu
+The directory where the benchmark suite is located\&. The default path is
+\&.\&./\&.\&./mysql\-bench\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: big option
+.\" big option: mysql-test-run.pl
\fB\-\-big\-test\fR
.sp
Pass the
\fB\-\-big\-test\fR
option to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: check-testcases option
+.\" check-testcases option: mysql-test-run.pl
\fB\-\-check\-testcases\fR
.sp
-Check test cases for side effects.
-.TP 3n
-\(bu
+Check test cases for side effects\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-bindir option
+.\" client-bindir option: mysql-test-run.pl
\fB\-\-client\-bindir\fR
.sp
-The path to the directory where client binaries are located. This option was added in MySQL 5.0.66/5.1.27.
-.TP 3n
-\(bu
+The path to the directory where client binaries are located\&. This option was added in MySQL 5\&.0\&.66/5\&.1\&.27\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-ddd option
+.\" client-ddd option: mysql-test-run.pl
\fB\-\-client\-ddd\fR
.sp
Start
\fBmysqltest\fR
in the
\fBddd\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-debugger option
+.\" client-debugger option: mysql-test-run.pl
\fB\-\-client\-debugger\fR
.sp
Start
\fBmysqltest\fR
-in the named debugger.
-.TP 3n
-\(bu
+in the named debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-gdb option
+.\" client-gdb option: mysql-test-run.pl
\fB\-\-client\-gdb\fR
.sp
Start
\fBmysqltest\fR
in the
\fBgdb\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-libdir option
+.\" client-libdir option: mysql-test-run.pl
\fB\-\-client\-libdir\fR
.sp
-The path to the directory where client libraries are located. This option was added in MySQL 5.0.66/5.1.27.
-.TP 3n
-\(bu
+The path to the directory where client libraries are located\&. This option was added in MySQL 5\&.0\&.66/5\&.1\&.27\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: combination option
+.\" combination option: mysql-test-run.pl
\fB\-\-combination=\fR\fB\fIvalue\fR\fR
.sp
Extra options to pass to
-\fBmysqld\fR. The value should consist of one or more comma\-separated
+\fBmysqld\fR\&. The value should consist of one or more comma\-separated
\fBmysqld\fR
-options. This option is similar to
+options\&. This option is similar to
\fB\-\-mysqld\fR
-but should be given two or more times.
-\fBmysql\-test\-run.pl\fR
+but should be given two or more times\&.
+\fBmysql\-test\-run\&.pl\fR
executes multiple test runs, using the options for each instance of
\fB\-\-combination\fR
-in successive runs. If
+in successive runs\&. If
\fB\-\-combination\fR
-is given only once, it has no effect. For test runs specific to a given test suite, an alternative to the use of
+is given only once, it has no effect\&. For test runs specific to a given test suite, an alternative to the use of
\fB\-\-combination\fR
is to create a
-\fIcombinations\fR
-file in the suite directory. The file should contain a section of options for each test run. See
-Section\ 4.9, \(lqPassing Options from \fBmysql\-test\-run.pl\fR to \fBmysqld\fR or \fBmysqltest\fR\(rq.
-.sp
-This option was added in MySQL 5.1.23/6.0.4.
-.TP 3n
-\(bu
+combinations
+file in the suite directory\&. The file should contain a section of options for each test run\&. See
+Section\ \&4.9, \(lqPassing Options from mysql-test-run.pl to mysqld or mysqltest\(rq\&.
+.sp
+This option was added in MySQL 5\&.1\&.23/6\&.0\&.4\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: comment option
+.\" comment option: mysql-test-run.pl
\fB\-\-comment=\fR\fB\fIstr\fR\fR
.sp
Write
\fIstr\fR
-to the output.
-.TP 3n
-\(bu
+to the output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: compress option
+.\" compress option: mysql-test-run.pl
\fB\-\-compress\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: cursor-protocol option
+.\" cursor-protocol option: mysql-test-run.pl
\fB\-\-cursor\-protocol\fR
.sp
Pass the
@@ -374,592 +546,1365 @@ Pass the
option to
\fBmysqltest\fR
(implies
-\fB\-\-ps\-protocol\fR).
-.TP 3n
-\(bu
+\fB\-\-ps\-protocol\fR)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ddd option
+.\" ddd option: mysql-test-run.pl
\fB\-\-ddd\fR
.sp
Start
\fBmysqld\fR
in the
\fBddd\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: debug option
+.\" debug option: mysql-test-run.pl
\fB\-\-debug\fR
.sp
-Dump trace output for all clients and servers.
-.TP 3n
-\(bu
+Dump trace output for all clients and servers\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: debugger option
+.\" debugger option: mysql-test-run.pl
\fB\-\-debugger\fR
.sp
Start
\fBmysqld\fR
-using the named debugger.
-.TP 3n
-\(bu
+using the named debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: debug-sync-timeout option
+.\" debug-sync-timeout option: mysql-test-run.pl
\fB\-\-debug\-sync\-timeout=\fR\fB\fIN\fR\fR
.sp
-Controls whether the Debug Sync facility for testing and debugging is enabled. The option value is a timeout in seconds. The default value is 300. A value of 0 disables Debug Sync. The value of this option also becomes the default timeout for individual synchronization points.
+Controls whether the Debug Sync facility for testing and debugging is enabled\&. The option value is a timeout in seconds\&. The default value is 300\&. A value of 0 disables Debug Sync\&. The value of this option also becomes the default timeout for individual synchronization points\&.
.sp
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
passes
\fB\-\-loose\-debug\-sync\-timeout=\fR\fB\fIN\fR\fR
to
-\fBmysqld\fR. The
+\fBmysqld\fR\&. The
\fB\-\-loose\fR
prefix is used so that
\fBmysqld\fR
-does not fail if Debug Sync is not compiled in.
+does not fail if Debug Sync is not compiled in\&.
.sp
For information about using the Debug Sync facility for testing, see
-Section\ 4.14, \(lqThread Synchronization in Test Cases\(rq.
+Section\ \&4.14, \(lqThread Synchronization in Test Cases\(rq\&.
+.sp
+This option was added in MySQL 5\&.4\&.4/6\&.0\&.6\&.
+.RE
.sp
-This option was added in MySQL 6.0.6.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: do-test option
+.\" do-test option: mysql-test-run.pl
\fB\-\-do\-test=\fR\fB\fIprefix\fR\fR
.sp
Run all test cases having a name that begins with the given
\fIprefix\fR
-value. This option provides a convenient way to run a family of similarly named tests.
+value\&. This option provides a convenient way to run a family of similarly named tests\&.
.sp
-As of MySQL 5.0.54/5.1.23/6.0.5, the argument for the
+As of MySQL 5\&.0\&.54/5\&.1\&.23/6\&.0\&.5, the argument for the
\fB\-\-do\-test\fR
-option allows more flexible specification of which tests to perform. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern. If the argument contains a lone period or does not contain any pattern metacharacters, it is interpreted the same way as previously and matches test names that begin with the argument value. For example,
+option allows more flexible specification of which tests to perform\&. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern\&. If the argument contains a lone period or does not contain any pattern metacharacters, it is interpreted the same way as previously and matches test names that begin with the argument value\&. For example,
\fB\-\-do\-test=testa\fR
matches tests that begin with
testa,
-\fB\-\-do\-test=main.testa\fR
+\fB\-\-do\-test=main\&.testa\fR
matches tests in the
main
test suite that begin with
testa, and
-\fB\-\-do\-test=main.*testa\fR
+\fB\-\-do\-test=main\&.*testa\fR
matches test names that contain
main
followed by
testa
-with anything in between. In the latter case, the pattern match is not anchored to the beginning of the test name, so it also matches names such as
-xmainytestz.
-.TP 3n
-\(bu
+with anything in between\&. In the latter case, the pattern match is not anchored to the beginning of the test name, so it also matches names such as
+xmainytestz\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: embedded-server option
+.\" embedded-server option: mysql-test-run.pl
\fB\-\-embedded\-server\fR
.sp
Use a version of
\fBmysqltest\fR
-built with the embedded server.
-.TP 3n
-\(bu
+built with the embedded server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: experimental option
+.\" experimental option: mysql-test-run.pl
\fB\-\-experimental=\fR\fB\fIfile_name\fR\fR
.sp
Specify a file that contains a list of test cases that should be displayed with the
[ exp\-fail ]
code rather than
[ fail ]
-if they fail. This option was added in MySQL 5.1.33/6.0.11.
-.TP 3n
-\(bu
+if they fail\&. This option was added in MySQL 5\&.1\&.33/6\&.0\&.11\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: extern option
+.\" extern option: mysql-test-run.pl
\fB\-\-extern\fR
.sp
-Use an already running server.
+Use an already running server\&.
.sp
Note: If a test case has an
-\fI.opt\fR
-file that requires the server to be restarted with specific options, the file will not be used. The test case likely will fail as a result.
-.TP 3n
-\(bu
+\&.opt
+file that requires the server to be restarted with specific options, the file will not be used\&. The test case likely will fail as a result\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: fast option
+.\" fast option: mysql-test-run.pl
\fB\-\-fast\fR
.sp
-Do not clean up from earlier test runs.
-.TP 3n
-\(bu
+Do not clean up from earlier test runs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: force option
+.\" force option: mysql-test-run.pl
\fB\-\-force\fR
.sp
Normally,
-\fBmysql\-test\-run.pl\fR
-exits if a test case fails.
+\fBmysql\-test\-run\&.pl\fR
+exits if a test case fails\&.
\fB\-\-force\fR
-causes execution to continue regardless of test case failure.
-.TP 3n
-\(bu
+causes execution to continue regardless of test case failure\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: gcov option
+.\" gcov option: mysql-test-run.pl
\fB\-\-gcov\fR
.sp
Run tests with the
\fBgcov\fR
-test coverage tool.
-.TP 3n
-\(bu
+test coverage tool\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: gdb option
+.\" gdb option: mysql-test-run.pl
\fB\-\-gdb\fR
.sp
Start
\fBmysqld\fR
in the
\fBgdb\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: gprof option
+.\" gprof option: mysql-test-run.pl
\fB\-\-gprof\fR
.sp
Run tests with the
\fBgprof\fR
-profiling tool.
-.TP 3n
-\(bu
+profiling tool\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: im-mysqld1-port option
+.\" im-mysqld1-port option: mysql-test-run.pl
\fB\-\-im\-mysqld1\-port\fR
.sp
TCP/IP port number to use for the first
-\fBmysqld\fR, controlled by Instance Manager.
-.TP 3n
-\(bu
+\fBmysqld\fR, controlled by Instance Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: im-mysqld2-port option
+.\" im-mysqld2-port option: mysql-test-run.pl
\fB\-\-im\-mysqld2\-port\fR
.sp
TCP/IP port number to use for the second
-\fBmysqld\fR, controlled by Instance Manager.
-.TP 3n
-\(bu
+\fBmysqld\fR, controlled by Instance Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: im-port option
+.\" im-port option: mysql-test-run.pl
\fB\-\-im\-port\fR
.sp
TCP/IP port number to use for
-\fBmysqld\fR, controlled by Instance Manager.
-.TP 3n
-\(bu
+\fBmysqld\fR, controlled by Instance Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: log-warnings option
+.\" log-warnings option: mysql-test-run.pl
\fB\-\-log\-warnings\fR
.sp
Pass the
\fB\-\-log\-warnings\fR
option to
-\fBmysqld\fR.
-.TP 3n
-\(bu
+\fBmysqld\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: manual-debug option
+.\" manual-debug option: mysql-test-run.pl
\fB\-\-manual\-debug\fR
.sp
-Use a server that has already been started by the user in a debugger.
-.TP 3n
-\(bu
+Use a server that has already been started by the user in a debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: manual-gdb option
+.\" manual-gdb option: mysql-test-run.pl
\fB\-\-manual\-gdb\fR
.sp
Use a server that has already been started by the user in the
\fBgdb\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: master-binary option
+.\" master-binary option: mysql-test-run.pl
\fB\-\-master\-binary=\fR\fB\fIpath\fR\fR
.sp
Specify the path of the
\fBmysqld\fR
-binary to use for master servers.
-.TP 3n
-\(bu
+binary to use for master servers\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: master_port option
+.\" master_port option: mysql-test-run.pl
\fB\-\-master_port=\fR\fB\fIport_num\fR\fR
.sp
-Specify the TCP/IP port number for the first master server to use. Observe that the option name has an underscore and not a dash.
-.TP 3n
-\(bu
+Specify the TCP/IP port number for the first master server to use\&. Observe that the option name has an underscore and not a dash\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: mem option
+.\" mem option: mysql-test-run.pl
\fB\-\-mem\fR
.sp
-Run the test suite in memory, using tmpfs or ramdisk. This can decrease test times significantly.
-\fBmysql\-test\-run.pl\fR
+Run the test suite in memory, using tmpfs or ramdisk\&. This can decrease test times significantly\&.
+\fBmysql\-test\-run\&.pl\fR
attempts to find a suitable location using a built\-in list of standard locations for tmpfs and puts the
-\fIvar\fR
-directory there. This option also affects placement of temporary files, which are created in
-\fIvar/tmp\fR.
+var
+directory there\&. This option also affects placement of temporary files, which are created in
+var/tmp\&.
.sp
The default list includes
-\fI/dev/shm\fR. You can also enable this option by setting the environment variable
-MTR_MEM[=\fIdir_name\fR]. If
+/dev/shm\&. You can also enable this option by setting the environment variable
+MTR_MEM[=\fIdir_name\fR]\&. If
\fIdir_name\fR
-is given, it is added to the beginning of the list of locations to search, so it takes precedence over any built\-in locations.
+is given, it is added to the beginning of the list of locations to search, so it takes precedence over any built\-in locations\&.
.sp
-This option was added in MySQL 4.1.22, 5.0.30, and 5.1.13.
-.TP 3n
-\(bu
+This option was added in MySQL 4\&.1\&.22, 5\&.0\&.30, and 5\&.1\&.13\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: mysqld option
+.\" mysqld option: mysql-test-run.pl
\fB\-\-mysqld=\fR\fB\fIvalue\fR\fR
.sp
Extra options to pass to
-\fBmysqld\fR. The value should consist of one or more comma\-separated
+\fBmysqld\fR\&. The value should consist of one or more comma\-separated
\fBmysqld\fR
-options. See
-Section\ 4.9, \(lqPassing Options from \fBmysql\-test\-run.pl\fR to \fBmysqld\fR or \fBmysqltest\fR\(rq.
-.TP 3n
-\(bu
+options\&. See
+Section\ \&4.9, \(lqPassing Options from mysql-test-run.pl to mysqld or mysqltest\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: mysqltest option
+.\" mysqltest option: mysql-test-run.pl
\fB\-\-mysqltest=\fR\fB\fIvalue\fR\fR
.sp
Extra options to pass to
-\fBmysqltest\fR. The value should consist of one or more comma\-separated
+\fBmysqltest\fR\&. The value should consist of one or more comma\-separated
\fBmysqltest\fR
-options. See
-Section\ 4.9, \(lqPassing Options from \fBmysql\-test\-run.pl\fR to \fBmysqld\fR or \fBmysqltest\fR\(rq. This option was added in MySQL 6.0.6.
-.TP 3n
-\(bu
+options\&. See
+Section\ \&4.9, \(lqPassing Options from mysql-test-run.pl to mysqld or mysqltest\(rq\&. This option was added in MySQL 6\&.0\&.6\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndb-connectstring option
+.\" ndb-connectstring option: mysql-test-run.pl
\fB\-\-ndb\-connectstring=\fR\fB\fIstr\fR\fR
.sp
Pass
\fB\-\-ndb\-connectstring=\fR\fB\fIstr\fR\fR
-to the master MySQL server. This option also prevents
-\fBmysql\-test\-run.pl\fR
-from starting a cluster. It is assumed that there is already a cluster running to which the server can connect with the given connectstring.
-.TP 3n
-\(bu
+to the master MySQL server\&. This option also prevents
+\fBmysql\-test\-run\&.pl\fR
+from starting a cluster\&. It is assumed that there is already a cluster running to which the server can connect with the given connectstring\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndb-connectstring-slave option
+.\" ndb-connectstring-slave option: mysql-test-run.pl
\fB\-\-ndb\-connectstring\-slave=\fR\fB\fIstr\fR\fR
.sp
Pass
\fB\-\-ndb\-connectstring=\fR\fB\fIstr\fR\fR
-to slave MySQL servers. This option also prevents
-\fBmysql\-test\-run.pl\fR
-from starting a cluster. It is assumed that there is already a cluster running to which the server can connect with the given connectstring.
-.TP 3n
-\(bu
+to slave MySQL servers\&. This option also prevents
+\fBmysql\-test\-run\&.pl\fR
+from starting a cluster\&. It is assumed that there is already a cluster running to which the server can connect with the given connectstring\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndb-extra-test option
+.\" ndb-extra-test option: mysql-test-run.pl
\fB\-\-ndb\-extra\-test\fR
.sp
-Unknown.
-.TP 3n
-\(bu
+Unknown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndbcluster-port option
+.\" ndbcluster-port option: mysql-test-run.pl
+.\" mysql-test-run.pl: ndbcluster_port option
+.\" ndbcluster_port option: mysql-test-run.pl
\fB\-\-ndbcluster\-port=\fR\fB\fIport_num\fR\fR,
\fB\-\-ndbcluster_port=\fR\fB\fIport_num\fR\fR
.sp
-Specify the TCP/IP port number that NDB Cluster should use.
-.TP 3n
-\(bu
+Specify the TCP/IP port number that NDB Cluster should use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndbcluster-port-slave option
+.\" ndbcluster-port-slave option: mysql-test-run.pl
\fB\-\-ndbcluster\-port\-slave=\fR\fB\fIport_num\fR\fR
.sp
-Specify the TCP/IP port number that the slave NDB Cluster should use.
-.TP 3n
-\(bu
+Specify the TCP/IP port number that the slave NDB Cluster should use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: netware option
+.\" netware option: mysql-test-run.pl
\fB\-\-netware\fR
.sp
Run
\fBmysqld\fR
-with options needed on NetWare.
-.TP 3n
-\(bu
+with options needed on NetWare\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: notimer option
+.\" notimer option: mysql-test-run.pl
\fB\-\-notimer\fR
.sp
Cause
\fBmysqltest\fR
-not to generate a timing file.
-.TP 3n
-\(bu
+not to generate a timing file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ps-protocol option
+.\" ps-protocol option: mysql-test-run.pl
\fB\-\-ps\-protocol\fR
.sp
Pass the
\fB\-\-ps\-protocol\fR
option to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: record option
+.\" record option: mysql-test-run.pl
\fB\-\-record\fR
.sp
Pass the
\fB\-\-record\fR
option to
-\fBmysqltest\fR. This option requires a specific test case to be named on the command line.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&. This option requires a specific test case to be named on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: reorder option
+.\" reorder option: mysql-test-run.pl
\fB\-\-reorder\fR
.sp
-Reorder tests to minimize the number of server restarts needed.
-.TP 3n
-\(bu
+Reorder tests to minimize the number of server restarts needed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: report-features option
+.\" report-features option: mysql-test-run.pl
\fB\-\-report\-features\fR
.sp
Display the output of
SHOW ENGINES
and
-SHOW VARIABLES. This can be used to verify that binaries are built with all required features.
+SHOW VARIABLES\&. This can be used to verify that binaries are built with all required features\&.
.sp
-This option was added in MySQL 4.1.23, 5.0.30, and 5.1.14.
-.TP 3n
-\(bu
+This option was added in MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: script-debug option
+.\" script-debug option: mysql-test-run.pl
\fB\-\-script\-debug\fR
.sp
Enable debug output for
-\fBmysql\-test\-run.pl\fR
-itself.
-.TP 3n
-\(bu
+\fBmysql\-test\-run\&.pl\fR
+itself\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-im option
+.\" skip-im option: mysql-test-run.pl
\fB\-\-skip\-im\fR
.sp
-Do not start Instance Manager; skip Instance Manager test cases.
-.TP 3n
-\(bu
+Do not start Instance Manager; skip Instance Manager test cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-master-binlog option
+.\" skip-master-binlog option: mysql-test-run.pl
\fB\-\-skip\-master\-binlog\fR
.sp
-Do not enable master server binary logging.
-.TP 3n
-\(bu
+Do not enable master server binary logging\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-ndbcluster option
+.\" skip-ndbcluster option: mysql-test-run.pl
\fB\-\-skip\-ndbcluster\fR,
+.\" mysql-test-run.pl: skip-ndb option
+.\" skip-ndb option: mysql-test-run.pl
\fB\-\-skip\-ndb\fR
.sp
-Do not start NDB Cluster; skip Cluster test cases.
-.TP 3n
-\(bu
+Do not start NDB Cluster; skip Cluster test cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-ndbcluster-slave option
+.\" skip-ndbcluster-slave option: mysql-test-run.pl
\fB\-\-skip\-ndbcluster\-slave\fR,
+.\" mysql-test-run.pl: skip-ndb-slave option
+.\" skip-ndb-slave option: mysql-test-run.pl
\fB\-\-skip\-ndb\-slave\fR
.sp
-Do not start an NDB Cluster slave.
-.TP 3n
-\(bu
+Do not start an NDB Cluster slave\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-rpl option
+.\" skip-rpl option: mysql-test-run.pl
\fB\-\-skip\-rpl\fR
.sp
-Skip replication test cases.
-.TP 3n
-\(bu
+Skip replication test cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-slave-binlog option
+.\" skip-slave-binlog option: mysql-test-run.pl
\fB\-\-skip\-slave\-binlog\fR
.sp
-Do not enable master server binary logging.
-.TP 3n
-\(bu
+Do not enable master server binary logging\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-ssl option
+.\" skip-ssl option: mysql-test-run.pl
\fB\-\-skip\-ssl\fR
.sp
Do not start
\fBmysqld\fR
-with support for SSL connections.
-.TP 3n
-\(bu
+with support for SSL connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-test option
+.\" skip-test option: mysql-test-run.pl
\fB\-\-skip\-test=\fR\fB\fIregex\fR\fR
.sp
-Specify a regular expression to be applied to test case names. Cases with names that match the expression are skipped. tests to skip.
+Specify a regular expression to be applied to test case names\&. Cases with names that match the expression are skipped\&. tests to skip\&.
.sp
-As of MySQL 5.0.54/5.1.23/6.0.5, the argument for the
+As of MySQL 5\&.0\&.54/5\&.1\&.23/6\&.0\&.5, the argument for the
\fB\-\-skip\-test\fR
-option allows more flexible specification of which tests to skip. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern. See the description of the
+option allows more flexible specification of which tests to skip\&. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern\&. See the description of the
\fB\-\-do\-test\fR
-option for details.
-.TP 3n
-\(bu
+option for details\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-\-skip\-*\fR
.sp
\fB\-\-skip\-*\fR
options not otherwise recognized by
-\fBmysql\-test\-run.pl\fR
-are passed to the master server.
-.TP 3n
-\(bu
+\fBmysql\-test\-run\&.pl\fR
+are passed to the master server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: slave-binary option
+.\" slave-binary option: mysql-test-run.pl
\fB\-\-slave\-binary=\fR\fB\fIpath\fR\fR
.sp
Specify the path of the
\fBmysqld\fR
-binary to use for slave servers.
-.TP 3n
-\(bu
+binary to use for slave servers\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: slave_port option
+.\" slave_port option: mysql-test-run.pl
\fB\-\-slave_port=\fR\fB\fIport_num\fR\fR
.sp
-Specify the TCP/IP port number for the first master server to use. Observe that the option name has an underscore and not a dash.
-.TP 3n
-\(bu
+Specify the TCP/IP port number for the first master server to use\&. Observe that the option name has an underscore and not a dash\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: sleep option
+.\" sleep option: mysql-test-run.pl
\fB\-\-sleep=\fR\fB\fIN\fR\fR
.sp
Pass
\fB\-\-sleep=\fR\fB\fIN\fR\fR
to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: small-bench option
+.\" small-bench option: mysql-test-run.pl
\fB\-\-small\-bench\fR
.sp
Run the benchmarks with the
\fB\-\-small\-tests\fR
and
\fB\-\-small\-tables\fR
-options.
-.TP 3n
-\(bu
+options\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: socket option
+.\" socket option: mysql-test-run.pl
\fB\-\-socket=\fR\fB\fIfile_name\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: sp-protocol option
+.\" sp-protocol option: mysql-test-run.pl
\fB\-\-sp\-protocol\fR
.sp
Pass the
\fB\-\-sp\-protocol\fR
option to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ssl option
+.\" ssl option: mysql-test-run.pl
\fB\-\-ssl\fR
.sp
If
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
is started with the
\fB\-\-ssl\fR
-option, it sets up a secure conection for all test cases. In this case, if
+option, it sets up a secure conection for all test cases\&. In this case, if
\fBmysqld\fR
does not support SSL,
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
exits with an error message:
-Couldn't find support for SSL
-.TP 3n
-\(bu
+Couldn\'t find support for SSL
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: start option
+.\" start option: mysql-test-run.pl
\fB\-\-start\fR
.sp
-Initialize and start servers with the startup settings for the first specified test case. For example:
+Initialize and start servers with the startup settings for the first specified test case\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcd mysql\-test\fR
-shell> \fB./mysql\-test\-run.pl \-\-start alias &\fR
+shell> \fB\&./mysql\-test\-run\&.pl \-\-start alias &\fR
.fi
+.if n \{\
+.RE
+.\}
+.sp
+This option was added in MySQL 5\&.1\&.32/6\&.0\&.11\&.
.RE
-This option was added in MySQL 5.1.32/6.0.11.
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: start-and-exit option
+.\" start-and-exit option: mysql-test-run.pl
\fB\-\-start\-and\-exit\fR
.sp
-Initialize and start servers with the startup settings for the specified test case or cases, if any, and then exit. You can use this option to start a server to which you can connect later. For example, after building a source distribution you can start a server and connect to it with the
+Initialize and start servers with the startup settings for the specified test case or cases, if any, and then exit\&. You can use this option to start a server to which you can connect later\&. For example, after building a source distribution you can start a server and connect to it with the
\fBmysql\fR
client like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcd mysql\-test\fR
-shell> \fB./mysql\-test\-run.pl \-\-start\-and\-exit\fR
-shell> \fB../mysql \-S ./var/tmp/master.sock \-h localhost \-u root\fR
+shell> \fB\&./mysql\-test\-run\&.pl \-\-start\-and\-exit\fR
+shell> \fB\&.\&./mysql \-S \&./var/tmp/master\&.sock \-h localhost \-u root\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: start-dirty option
+.\" start-dirty option: mysql-test-run.pl
\fB\-\-start\-dirty\fR
.sp
-Start servers (without initialization) for the specified test case or cases, if any, and then exit. You can then manually run the test cases.
-.TP 3n
-\(bu
+Start servers (without initialization) for the specified test case or cases, if any, and then exit\&. You can then manually run the test cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: start-from option
+.\" start-from option: mysql-test-run.pl
\fB\-\-start\-from=\fR\fB\fItest_name\fR\fR
.sp
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
sorts the list of names of the test cases to be run, and then begins with
-\fItest_name\fR.
-.TP 3n
-\(bu
+\fItest_name\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: strace-client option
+.\" strace-client option: mysql-test-run.pl
\fB\-\-strace\-client\fR
.sp
Create
\fBstrace\fR
output for
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress option
+.\" stress option: mysql-test-run.pl
\fB\-\-stress\fR
.sp
-Run the stress test. The other
+Run the stress test\&. The other
\fB\-\-stress\-\fR\fB\fIxxx\fR\fR
-options apply in this case.
-.TP 3n
-\(bu
+options apply in this case\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-init-file option
+.\" stress-init-file option: mysql-test-run.pl
\fB\-\-stress\-init\-file=\fR\fB\fIfile_name\fR\fR
.sp
\fIfile_name\fR
-is the location of the file that contains the list of tests. The default file is
-\fIstress_init.txt\fR
-in the test suite directory.
-.TP 3n
-\(bu
+is the location of the file that contains the list of tests\&. The default file is
+stress_init\&.txt
+in the test suite directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-loop-count option
+.\" stress-loop-count option: mysql-test-run.pl
\fB\-\-stress\-loop\-count=\fR\fB\fIN\fR\fR
.sp
-In sequential stress\-test mode, the number of loops to execute before exiting.
-.TP 3n
-\(bu
+In sequential stress\-test mode, the number of loops to execute before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-mode option
+.\" stress-mode option: mysql-test-run.pl
\fB\-\-stress\-mode=\fR\fB\fImode\fR\fR
.sp
-This option indicates the test order in stress\-test mode. The
+This option indicates the test order in stress\-test mode\&. The
\fImode\fR
value is either
random
to select tests in random order or
seq
-to run tests in each thread in the order specified in the test list file. The default mode is
-random.
-.TP 3n
-\(bu
+to run tests in each thread in the order specified in the test list file\&. The default mode is
+random\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-suite option
+.\" stress-suite option: mysql-test-run.pl
\fB\-\-stress\-suite=\fR\fB\fIsuite_name\fR\fR
.sp
-The name of the test suite to use for stress testing. The default suite name is
+The name of the test suite to use for stress testing\&. The default suite name is
main
(the regular test suite located in the
-\fImysql\-test\fR
-directory).
-.TP 3n
-\(bu
+mysql\-test
+directory)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-test-count option
+.\" stress-test-count option: mysql-test-run.pl
\fB\-\-stress\-test\-count=\fR\fB\fIN\fR\fR
.sp
-For stress testing, the number of tests to execute before exiting.
-.TP 3n
-\(bu
+For stress testing, the number of tests to execute before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-test-duration option
+.\" stress-test-duration option: mysql-test-run.pl
\fB\-\-stress\-test\-duration=\fR\fB\fIN\fR\fR
.sp
-For stress testing, the duration of stress testing in seconds.
-.TP 3n
-\(bu
+For stress testing, the duration of stress testing in seconds\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-test-file option
+.\" stress-test-file option: mysql-test-run.pl
\fB\-\-stress\-test\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The file that contains the list of tests to use in stress testing. The tests should be named without the
-\fI.test\fR
-extension. The default file is
-\fIstress_tests.txt\fR
-in the test suite directory.
-.TP 3n
-\(bu
+The file that contains the list of tests to use in stress testing\&. The tests should be named without the
+\&.test
+extension\&. The default file is
+stress_tests\&.txt
+in the test suite directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-threads option
+.\" stress-threads option: mysql-test-run.pl
\fB\-\-stress\-threads=\fR\fB\fIN\fR\fR
.sp
-The number of threads to use in stress testing. The default is 5.
-.TP 3n
-\(bu
+The number of threads to use in stress testing\&. The default is 5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: suite option
+.\" suite option: mysql-test-run.pl
\fB\-\-suite=\fR\fB\fIsuite_name\fR\fR
.sp
-Run the named test suite. The default name is
+Run the named test suite\&. The default name is
main
(the regular test suite located in the
-\fImysql\-test\fR
-directory).
-.TP 3n
-\(bu
+mysql\-test
+directory)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: suite-timeout option
+.\" suite-timeout option: mysql-test-run.pl
\fB\-\-suite\-timeout=\fR\fB\fIminutes\fR\fR
.sp
-Specify the maximum test suite runtime.
-.TP 3n
-\(bu
+Specify the maximum test suite runtime\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: testcase-timeout option
+.\" testcase-timeout option: mysql-test-run.pl
\fB\-\-testcase\-timeout\fR
.sp
-Specify the maximum test case runtime.
-.TP 3n
-\(bu
+Specify the maximum test case runtime\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: timer option
+.\" timer option: mysql-test-run.pl
\fB\-\-timer\fR
.sp
Cause
\fBmysqltest\fR
-to generate a timing file. The default file is named
-\fI./var/log/timer\fR.
-.TP 3n
-\(bu
+to generate a timing file\&. The default file is named
+\&./var/log/timer\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: tmpdir option
+.\" tmpdir option: mysql-test-run.pl
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR
.sp
-The directory where temporary file are stored. The default location is
-\fI./var/tmp\fR.
-.TP 3n
-\(bu
+The directory where temporary file are stored\&. The default location is
+\&./var/tmp\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: unified-diff option
+.\" unified-diff option: mysql-test-run.pl
\fB\-\-unified\-diff\fR,
\fB\-\-udiff\fR
.sp
-Use unified diff format when presenting differences between expected and actual test case results.
-.TP 3n
-\(bu
+Use unified diff format when presenting differences between expected and actual test case results\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: use-old-data option
+.\" use-old-data option: mysql-test-run.pl
\fB\-\-use\-old\-data\fR
.sp
-Do not install the test databases. (Use existing ones.)
-.TP 3n
-\(bu
+Do not install the test databases\&. (Use existing ones\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: user-test option
+.\" user-test option: mysql-test-run.pl
\fB\-\-user\-test=\fR\fB\fIval\fR\fR
.sp
-Unused.
-.TP 3n
-\(bu
+Unused\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: user option
+.\" user option: mysql-test-run.pl
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind option
+.\" valgrind option: mysql-test-run.pl
\fB\-\-valgrind\fR
.sp
Run
@@ -967,9 +1912,19 @@ Run
and
\fBmysqld\fR
with
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-all option
+.\" valgrind-all option: mysql-test-run.pl
\fB\-\-valgrind\-all\fR
.sp
Like
@@ -978,17 +1933,37 @@ Like
and
\fB\-\-show\-reachable\fR
options to
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-mysqltest option
+.\" valgrind-mysqltest option: mysql-test-run.pl
\fB\-\-valgrind\-mysqltest\fR
.sp
Run
\fBmysqltest\fR
with
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-mysqltest-all option
+.\" valgrind-mysqltest-all option: mysql-test-run.pl
\fB\-\-valgrind\-mysqltest\-all\fR
.sp
Like
@@ -997,92 +1972,217 @@ Like
and
\fB\-\-show\-reachable\fR
options to
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-options option
+.\" valgrind-options option: mysql-test-run.pl
\fB\-\-valgrind\-options=\fR\fB\fIstr\fR\fR
.sp
Extra options to pass to
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-path option
+.\" valgrind-path option: mysql-test-run.pl
\fB\-\-valgrind\-path=\fR\fB\fIpath\fR\fR
.sp
Specify the path name to the
\fBvalgrind\fR
-executable.
-.TP 3n
-\(bu
+executable\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: vardir option
+.\" vardir option: mysql-test-run.pl
\fB\-\-vardir=\fR\fB\fIpath\fR\fR
.sp
-Specify the path where files generated during the test run are stored. The default location is
-\fI./var\fR.
-.TP 3n
-\(bu
+Specify the path where files generated during the test run are stored\&. The default location is
+\&./var\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: view-protocol option
+.\" view-protocol option: mysql-test-run.pl
\fB\-\-view\-protocol\fR
.sp
Pass the
\fB\-\-view\-protocol\fR
option to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: vs-config option
+.\" vs-config option: mysql-test-run.pl
\fB\-\-vs\-config=\fR\fB\fIconfig_val\fR\fR
.sp
Specify the configuration used to build MySQL (for example,
\fB\-\-vs\-config=debug\fR
-\fB\-\-vs\-config=release\fR). This option is for Windows only. It is available as of MySQL 4.1.23, 5.0.30, and 5.1.14.
-.TP 3n
-\(bu
+\fB\-\-vs\-config=release\fR)\&. This option is for Windows only\&. It is available as of MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: wait-timeout option
+.\" wait-timeout option: mysql-test-run.pl
\fB\-\-wait\-timeout=\fR\fB\fIN\fR\fR
.sp
Unused?
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: warnings option
+.\" warnings option: mysql-test-run.pl
\fB\-\-warnings\fR
.sp
This option is a synonym for
-\fB\-\-log\-warnings\fR.
-.TP 3n
-\(bu
+\fB\-\-log\-warnings\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-ndbcluster option
+.\" with-ndbcluster option: mysql-test-run.pl
\fB\-\-with\-ndbcluster\fR
.sp
-Use NDB Cluster and enable test cases that require it.
-.TP 3n
-\(bu
+Use NDB Cluster and enable test cases that require it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-ndbcluster-all option
+.\" with-ndbcluster-all option: mysql-test-run.pl
\fB\-\-with\-ndbcluster\-all\fR
.sp
-Use NDB Cluster in all tests.
-.TP 3n
-\(bu
+Use NDB Cluster in all tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-ndbcluster-only option
+.\" with-ndbcluster-only option: mysql-test-run.pl
\fB\-\-with\-ndbcluster\-only\fR
.sp
Run only test cases that have
ndb
-in their name.
-.TP 3n
-\(bu
+in their name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-ndbcluster-slave option
+.\" with-ndbcluster-slave option: mysql-test-run.pl
\fB\-\-with\-ndbcluster\-slave\fR
.sp
-Unknown.
-.TP 3n
-\(bu
+Unknown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-openssl option
+.\" with-openssl option: mysql-test-run.pl
\fB\-\-with\-openssl\fR
.sp
This option is a synonym for
-\fB\-\-ssl\fR.
-.sp
+\fB\-\-ssl\fR\&.
.RE
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
\fBmysql\-test\-run\fR
supports the following options not supported by
-\fBmysql\-test\-run.pl\fR:
+\fBmysql\-test\-run\&.pl\fR:
\fB\-\-local\fR,
\fB\-\-local\-master\fR,
\fB\-\-ndb\-verbose\fR,
@@ -1092,10 +2192,10 @@ supports the following options not suppo
\fB\-\-old\-master\fR,
\fB\-\-purify\fR,
\fB\-\-use\-old\-data\fR,
-\fB\-\-valgrind\-mysqltest\-all\fR.
+\fB\-\-valgrind\-mysqltest\-all\fR\&.
.PP
Conversely,
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
supports the following options not supported by
\fBmysql\-test\-run\fR:
\fB\-\-benchdir\fR,
@@ -1123,23 +2223,29 @@ supports the following options not suppo
\fB\-\-unified\-diff\fR,,
\fB\-\-valgrind\-path\fR,
\fB\-\-vardir\fR,
-\fB\-\-view\-protocol\fR.
+\fB\-\-view\-protocol\fR\&.
+.sp .5v
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ Typical configure Options
-\%http://dev.mysql.com/doc/refman/5.1/en/configure\-options.html
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Typical \fBconfigure\fR Options
+.RS 4
+\%http://dev.mysql.com/doc/refman/5.1/en/configure-options.html
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql.1'
--- a/man/mysql.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql.1 2009-09-16 12:03:18 +0000
@@ -1,425 +1,851 @@
+'\" t
.\" Title: \fBmysql\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql
+.\" command-line tool
+.\" tools: command-line
+.\" scripts: SQL
+.\" SQL scripts
+.\" batch SQL files
.SH "NAME"
mysql \- the MySQL command\-line tool
.SH "SYNOPSIS"
-.HP 24
+.HP \w'\fBmysql\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIdb_name\fR\fR\ 'u
\fBmysql [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql\fR
is a simple SQL shell (with GNU
readline
-capabilities). It supports interactive and non\-interactive use. When used interactively, query results are presented in an ASCII\-table format. When used non\-interactively (for example, as a filter), the result is presented in tab\-separated format. The output format can be changed using command options.
+capabilities)\&. It supports interactive and noninteractive use\&. When used interactively, query results are presented in an ASCII\-table format\&. When used noninteractively (for example, as a filter), the result is presented in tab\-separated format\&. The output format can be changed using command options\&.
.PP
If you have problems due to insufficient memory for large result sets, use the
\fB\-\-quick\fR
-option. This forces
+option\&. This forces
\fBmysql\fR
-to retrieve results from the server a row at a time rather than retrieving the entire result set and buffering it in memory before displaying it. This is done by returning the result set using the
+to retrieve results from the server a row at a time rather than retrieving the entire result set and buffering it in memory before displaying it\&. This is done by returning the result set using the
mysql_use_result()
C API function in the client/server library rather than
-mysql_store_result().
+mysql_store_result()\&.
.PP
Using
\fBmysql\fR
-is very easy. Invoke it from the prompt of your command interpreter as follows:
+is very easy\&. Invoke it from the prompt of your command interpreter as follows:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Or:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \-\-user=\fR\fB\fIuser_name\fR\fR\fB \-\-password=\fR\fB\fIyour_password\fR\fR\fB \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Then type an SQL statement, end it with
\(lq;\(rq,
-\\g, or
-\\G
-and press Enter.
+\eg, or
+\eG
+and press Enter\&.
.PP
-As of MySQL 5.1.10, typing Control\-C causes
+As of MySQL 5\&.1\&.10, typing Control\-C causes
\fBmysql\fR
-to attempt to kill the current statement. If this cannot be done, or Control\-C is typed again before the statement is killed,
+to attempt to kill the current statement\&. If this cannot be done, or Control\-C is typed again before the statement is killed,
\fBmysql\fR
-exits. Previously, Control\-C caused
+exits\&. Previously, Control\-C caused
\fBmysql\fR
-to exit in all cases.
+to exit in all cases\&.
.PP
You can execute SQL statements in a script file (batch file) like this:
.sp
-.RS 3n
-.nf
-shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fIscript.sql\fR\fR\fB > \fR\fB\fIoutput.tab\fR\fR
-.fi
-.RE
-.SH "\fBMYSQL\fR OPTIONS"
-.PP
-\fBmysql\fR
-supports the following options:
-.TP 3n
-\(bu
+.if n \{\
+.RS 4
+.\}
+.nf
+shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fIscript\&.sql\fR\fR\fB > \fR\fB\fIoutput\&.tab\fR\fR
+.fi
+.if n \{\
+.RE
+.\}
+.SH "MYSQL OPTIONS"
+.\" mysql command options
+.\" command options: mysql
+.\" options: command-line: mysql
+.\" startup parameters: mysql
+.PP
+\fBmysql\fR
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: help option
+.\" help option: mysql
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: auto-rehash option
+.\" auto-rehash option: mysql
\fB\-\-auto\-rehash\fR
.sp
-Enable automatic rehashing. This option is on by default, which enables database, table, and column name completion. Use
+Enable automatic rehashing\&. This option is on by default, which enables database, table, and column name completion\&. Use
\fB\-\-disable\-auto\-rehash\fR
-to disable rehashing. That causes
+to disable rehashing\&. That causes
\fBmysql\fR
to start faster, but you must issue the
rehash
-command if you want to use name completion.
+command if you want to use name completion\&.
.sp
-To complete a name, enter the first part and press Tab. If the name is unambiguous,
+To complete a name, enter the first part and press Tab\&. If the name is unambiguous,
\fBmysql\fR
-completes it. Otherwise, you can press Tab again to see the possible names that begin with what you have typed so far. Completion does not occur if there is no default database.
-.TP 3n
-\(bu
+completes it\&. Otherwise, you can press Tab again to see the possible names that begin with what you have typed so far\&. Completion does not occur if there is no default database\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: batch option
+.\" batch option: mysql
\fB\-\-batch\fR,
\fB\-B\fR
.sp
-Print results using tab as the column separator, with each row on a new line. With this option,
+Print results using tab as the column separator, with each row on a new line\&. With this option,
\fBmysql\fR
-does not use the history file.
+does not use the history file\&.
.sp
-Batch mode results in non\-tabular output format and escaping of special characters. Escaping may be disabled by using raw mode; see the description for the
+Batch mode results in nontabular output format and escaping of special characters\&. Escaping may be disabled by using raw mode; see the description for the
\fB\-\-raw\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: character-sets-dir option
+.\" character-sets-dir option: mysql
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: column-names option
+.\" column-names option: mysql
\fB\-\-column\-names\fR
.sp
-Write column names in results.
-.TP 3n
-\(bu
+Write column names in results\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: column-type-info option
+.\" column-type-info option: mysql
\fB\-\-column\-type\-info\fR,
\fB\-m\fR
.sp
-Display result set metadata. This option was added in MySQL 5.1.14. (Before that, use
-\fB\-\-debug\-info\fR.) The
+Display result set metadata\&. This option was added in MySQL 5\&.1\&.14\&. (Before that, use
+\fB\-\-debug\-info\fR\&.) The
\fB\-m\fR
-short option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+short option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: comments option
+.\" comments option: mysql
\fB\-\-comments\fR,
\fB\-c\fR
.sp
-Whether to preserve comments in statements sent to the server. The default is \-\-skip\-comments (discard comments), enable with \-\-comments (preserve comments). This option was added in MySQL 5.1.23.
-.TP 3n
-\(bu
+Whether to preserve comments in statements sent to the server\&. The default is \-\-skip\-comments (discard comments), enable with \-\-comments (preserve comments)\&. This option was added in MySQL 5\&.1\&.23\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: compress option
+.\" compress option: mysql
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: database option
+.\" database option: mysql
\fB\-\-database=\fR\fB\fIdb_name\fR\fR,
\fB\-D \fR\fB\fIdb_name\fR\fR
.sp
-The database to use. This is useful primarily in an option file.
-.TP 3n
-\(bu
+The database to use\&. This is useful primarily in an option file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: debug option
+.\" debug option: mysql
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'. The default is
-\'d:t:o,/tmp/mysql.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/mysql\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: debug-check option
+.\" debug-check option: mysql
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: debug-info option
+.\" debug-info option: mysql
\fB\-\-debug\-info\fR,
\fB\-T\fR
.sp
-Before MySQL 5.1.14, this option prints debugging information and memory and CPU usage statistics when the program exits, and also causes display of result set metadata during execution. As of MySQL 5.1.14, use
+Before MySQL 5\&.1\&.14, this option prints debugging information and memory and CPU usage statistics when the program exits, and also causes display of result set metadata during execution\&. As of MySQL 5\&.1\&.14, use
\fB\-\-column\-type\-info\fR
-to display result set metadata.
-.TP 3n
-\(bu
+to display result set metadata\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: default-character-set option
+.\" default-character-set option: mysql
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: delimiter option
+.\" delimiter option: mysql
\fB\-\-delimiter=\fR\fB\fIstr\fR\fR
.sp
-Set the statement delimiter. The default is the semicolon character (\(lq;\(rq).
-.TP 3n
-\(bu
+Set the statement delimiter\&. The default is the semicolon character (\(lq;\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: disable named commands
+.\" disable named command: mysql
\fB\-\-disable\-named\-commands\fR
.sp
-Disable named commands. Use the
-\\*
-form only, or use named commands only at the beginning of a line ending with a semicolon (\(lq;\(rq).
+Disable named commands\&. Use the
+\e*
+form only, or use named commands only at the beginning of a line ending with a semicolon (\(lq;\(rq)\&.
\fBmysql\fR
starts with this option
\fIenabled\fR
-by default. However, even with this option, long\-format commands still work from the first line. See
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq.
-.TP 3n
-\(bu
+by default\&. However, even with this option, long\-format commands still work from the first line\&. See
+the section called \(lqMYSQL COMMANDS\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: execute option
+.\" execute option: mysql
\fB\-\-execute=\fR\fB\fIstatement\fR\fR,
\fB\-e \fR\fB\fIstatement\fR\fR
.sp
-Execute the statement and quit. The default output format is like that produced with
-\fB\-\-batch\fR. See
-Section\ 4.2.3.1, \(lqUsing Options on the Command Line\(rq, for some examples.
-.TP 3n
-\(bu
+Execute the statement and quit\&. The default output format is like that produced with
+\fB\-\-batch\fR\&. See
+Section\ \&4.2.3.1, \(lqUsing Options on the Command Line\(rq, for some examples\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: force option
+.\" force option: mysql
\fB\-\-force\fR,
\fB\-f\fR
.sp
-Continue even if an SQL error occurs.
-.TP 3n
-\(bu
+Continue even if an SQL error occurs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: host option
+.\" host option: mysql
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: html option
+.\" html option: mysql
\fB\-\-html\fR,
\fB\-H\fR
.sp
-Produce HTML output.
-.TP 3n
-\(bu
+Produce HTML output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: ignore-spaces option
+.\" ignore-spaces option: mysql
\fB\-\-ignore\-spaces\fR,
\fB\-i\fR
.sp
-Ignore spaces after function names. The effect of this is described in the discussion for the
+Ignore spaces after function names\&. The effect of this is described in the discussion for the
IGNORE_SPACE
SQL mode (see
-Section\ 5.1.7, \(lqServer SQL Modes\(rq).
-.TP 3n
-\(bu
+Section\ \&5.1.8, \(lqServer SQL Modes\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: line-numbers option
+.\" line-numbers option: mysql
\fB\-\-line\-numbers\fR
.sp
-Write line numbers for errors. Disable this with
-\fB\-\-skip\-line\-numbers\fR.
-.TP 3n
-\(bu
+Write line numbers for errors\&. Disable this with
+\fB\-\-skip\-line\-numbers\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: local-infile option
+.\" local-infile option: mysql
\fB\-\-local\-infile[={0|1}]\fR
.sp
Enable or disable
LOCAL
capability for
-LOAD DATA INFILE. With no value, the option enables
-LOCAL. The option may be given as
+LOAD DATA INFILE\&. With no value, the option enables
+LOCAL\&. The option may be given as
\fB\-\-local\-infile=0\fR
or
\fB\-\-local\-infile=1\fR
to explicitly disable or enable
-LOCAL. Enabling
+LOCAL\&. Enabling
LOCAL
-has no effect if the server does not also support it.
-.TP 3n
-\(bu
+has no effect if the server does not also support it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: named-commands option
+.\" named-commands option: mysql
\fB\-\-named\-commands\fR,
\fB\-G\fR
.sp
Enable named
\fBmysql\fR
-commands. Long\-format commands are allowed, not just short\-format commands. For example,
+commands\&. Long\-format commands are allowed, not just short\-format commands\&. For example,
quit
and
-\\q
-both are recognized. Use
+\eq
+both are recognized\&. Use
\fB\-\-skip\-named\-commands\fR
-to disable named commands. See
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq.
-.TP 3n
-\(bu
+to disable named commands\&. See
+the section called \(lqMYSQL COMMANDS\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-auto-rehash option
+.\" no-auto-rehash option: mysql
\fB\-\-no\-auto\-rehash\fR,
\fB\-A\fR
.sp
Deprecated form of
-\fB\-skip\-auto\-rehash\fR. Use
+\fB\-skip\-auto\-rehash\fR\&. Use
\fB\-\-disable\-auto\-rehash\fR
-instead. See the description for
-\fB\-\-auto\-rehash\fR.
-.TP 3n
-\(bu
+instead\&. See the description for
+\fB\-\-auto\-rehash\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-beep option
+.\" no-beep option: mysql
\fB\-\-no\-beep\fR,
\fB\-b\fR
.sp
-Do not beep when errors occur.
-.TP 3n
-\(bu
+Do not beep when errors occur\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-named-commands option
+.\" no-named-commands option: mysql
\fB\-\-no\-named\-commands\fR,
\fB\-g\fR
.sp
Deprecated, use
\fB\-\-disable\-named\-commands\fR
-instead.
-.TP 3n
-\(bu
+instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-pager option
+.\" no-pager option: mysql
\fB\-\-no\-pager\fR
.sp
Deprecated form of
-\fB\-\-skip\-pager\fR. See the
+\fB\-\-skip\-pager\fR\&. See the
\fB\-\-pager\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-tee option
+.\" no-tee option: mysql
\fB\-\-no\-tee\fR
.sp
-Do not copy output to a file.
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq, discusses tee files further.
-.TP 3n
-\(bu
+Do not copy output to a file\&.
+the section called \(lqMYSQL COMMANDS\(rq, discusses tee files further\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: one-database option
+.\" one-database option: mysql
\fB\-\-one\-database\fR,
\fB\-o\fR
.sp
-Ignore statements except those for the default database named on the command line. This is useful for skipping updates to other databases in the binary log.
-.TP 3n
-\(bu
+Ignore statements except those for the default database named on the command line\&. This is useful for skipping updates to other databases in the binary log\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: pager option
+.\" pager option: mysql
\fB\-\-pager[=\fR\fB\fIcommand\fR\fR\fB]\fR
.sp
-Use the given command for paging query output. If the command is omitted, the default pager is the value of your
+Use the given command for paging query output\&. If the command is omitted, the default pager is the value of your
PAGER
-environment variable. Valid pagers are
+environment variable\&. Valid pagers are
\fBless\fR,
\fBmore\fR,
-\fBcat [> filename]\fR, and so forth. This option works only on Unix. It does not work in batch mode. To disable paging, use
-\fB\-\-skip\-pager\fR.
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq, discusses output paging further.
-.TP 3n
-\(bu
+\fBcat [> filename]\fR, and so forth\&. This option works only on Unix\&. It does not work in batch mode\&. To disable paging, use
+\fB\-\-skip\-pager\fR\&.
+the section called \(lqMYSQL COMMANDS\(rq, discusses output paging further\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: password option
+.\" password option: mysql
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: pipe option
+.\" pipe option: mysql
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: port option
+.\" port option: mysql
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: prompt option
+.\" prompt option: mysql
\fB\-\-prompt=\fR\fB\fIformat_str\fR\fR
.sp
-Set the prompt to the specified format. The default is
-mysql>. The special sequences that the prompt can contain are described in
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq.
-.TP 3n
-\(bu
+Set the prompt to the specified format\&. The default is
+mysql>\&. The special sequences that the prompt can contain are described in
+the section called \(lqMYSQL COMMANDS\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: protocol option
+.\" protocol option: mysql
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: quick option
+.\" quick option: mysql
\fB\-\-quick\fR,
\fB\-q\fR
.sp
-Do not cache each query result, print each row as it is received. This may slow down the server if the output is suspended. With this option,
+Do not cache each query result, print each row as it is received\&. This may slow down the server if the output is suspended\&. With this option,
\fBmysql\fR
-does not use the history file.
-.TP 3n
-\(bu
+does not use the history file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: raw option
+.\" raw option: mysql
\fB\-\-raw\fR,
\fB\-r\fR
.sp
For tabular output, the
\(lqboxing\(rq
-around columns enables one column value to be distinguished from another. For non\-tabular output (such as is produced in batch mode or when the
+around columns enables one column value to be distinguished from another\&. For nontabular output (such as is produced in batch mode or when the
\fB\-\-batch\fR
or
\fB\-\-silent\fR
-option is given), special characters are escaped in the output so they can be identified easily. Newline, tab,
+option is given), special characters are escaped in the output so they can be identified easily\&. Newline, tab,
NUL, and backslash are written as
-\\n,
-\\t,
-\\0, and
-\\\\. The
+\en,
+\et,
+\e0, and
+\e\e\&. The
\fB\-\-raw\fR
-option disables this character escaping.
+option disables this character escaping\&.
.sp
-The following example demonstrates tabular versus non\-tabular output and the use of raw mode to disable escaping:
+The following example demonstrates tabular versus nontabular output and the use of raw mode to disable escaping:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
% \fBmysql\fR
mysql> SELECT CHAR(92);
+\-\-\-\-\-\-\-\-\-\-+
| CHAR(92) |
+\-\-\-\-\-\-\-\-\-\-+
-| \\ |
+| \e |
+\-\-\-\-\-\-\-\-\-\-+
% \fBmysql \-s\fR
mysql> SELECT CHAR(92);
CHAR(92)
-\\\\
+\e\e
% \fBmysql \-s \-r\fR
mysql> SELECT CHAR(92);
CHAR(92)
-\\
+\e
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: reconnect option
+.\" reconnect option: mysql
\fB\-\-reconnect\fR
.sp
-If the connection to the server is lost, automatically try to reconnect. A single reconnect attempt is made each time the connection is lost. To suppress reconnection behavior, use
-\fB\-\-skip\-reconnect\fR.
-.TP 3n
-\(bu
+If the connection to the server is lost, automatically try to reconnect\&. A single reconnect attempt is made each time the connection is lost\&. To suppress reconnection behavior, use
+\fB\-\-skip\-reconnect\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: safe-updates option
+.\" safe-updates option: mysql
+.\" mysql: i-am-a-dummy option
+.\" i-am-a-dummy option: mysql
\fB\-\-safe\-updates\fR,
\fB\-\-i\-am\-a\-dummy\fR,
\fB\-U\fR
@@ -428,160 +854,345 @@ Allow only those
UPDATE
and
DELETE
-statements that specify which rows to modify by using key values. If you have set this option in an option file, you can override it by using
+statements that specify which rows to modify by using key values\&. If you have set this option in an option file, you can override it by using
\fB\-\-safe\-updates\fR
-on the command line. See
-the section called \(lq\fBMYSQL\fR TIPS\(rq, for more information about this option.
-.TP 3n
-\(bu
+on the command line\&. See
+the section called \(lqMYSQL TIPS\(rq, for more information about this option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: secure-auth option
+.\" secure-auth option: mysql
\fB\-\-secure\-auth\fR
.sp
-Do not send passwords to the server in old (pre\-4.1.1) format. This prevents connections except for servers that use the newer password format.
-.TP 3n
-\(bu
+Do not send passwords to the server in old (pre\-4\&.1\&.1) format\&. This prevents connections except for servers that use the newer password format\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: show-warnings option
+.\" show-warnings option: mysql
\fB\-\-show\-warnings\fR
.sp
-Cause warnings to be shown after each statement if there are any. This option applies to interactive and batch mode.
-.TP 3n
-\(bu
+Cause warnings to be shown after each statement if there are any\&. This option applies to interactive and batch mode\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: sigint-ignore option
+.\" sigint-ignore option: mysql
\fB\-\-sigint\-ignore\fR
.sp
Ignore
SIGINT
-signals (typically the result of typing Control\-C).
-.TP 3n
-\(bu
+signals (typically the result of typing Control\-C)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: silent option
+.\" silent option: mysql
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Produce less output. This option can be given multiple times to produce less and less output.
+Silent mode\&. Produce less output\&. This option can be given multiple times to produce less and less output\&.
.sp
-This option results in non\-tabular output format and escaping of special characters. Escaping may be disabled by using raw mode; see the description for the
+This option results in nontabular output format and escaping of special characters\&. Escaping may be disabled by using raw mode; see the description for the
\fB\-\-raw\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: skip-column-names option
+.\" skip-column-names option: mysql
\fB\-\-skip\-column\-names\fR,
\fB\-N\fR
.sp
-Do not write column names in results. The short format,
+Do not write column names in results\&. The short format,
\fB\-N\fR
-is deprecated, use the long format instead.
-.TP 3n
-\(bu
+is deprecated, use the long format instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: skip-line-numbers option
+.\" skip-line-numbers option: mysql
\fB\-\-skip\-line\-numbers\fR,
\fB\-L\fR
.sp
-Do not write line numbers for errors. Useful when you want to compare result files that include error messages. The short format,
+Do not write line numbers for errors\&. Useful when you want to compare result files that include error messages\&. The short format,
\fB\-L\fR
-is deprecated, use the long format instead.
-.TP 3n
-\(bu
+is deprecated, use the long format instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: socket option
+.\" socket option: mysql
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: SSL options
+.\" SSL options: mysql
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: table option
+.\" table option: mysql
\fB\-\-table\fR,
\fB\-t\fR
.sp
-Display output in table format. This is the default for interactive use, but can be used to produce table output in batch mode.
-.TP 3n
-\(bu
+Display output in table format\&. This is the default for interactive use, but can be used to produce table output in batch mode\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: tee option
+.\" tee option: mysql
\fB\-\-tee=\fR\fB\fIfile_name\fR\fR
.sp
-Append a copy of output to the given file. This option does not work in batch mode.
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq, discusses tee files further.
-.TP 3n
-\(bu
+Append a copy of output to the given file\&. This option does not work in batch mode\&.
+the section called \(lqMYSQL COMMANDS\(rq, discusses tee files further\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: unbuffered option
+.\" unbuffered option: mysql
\fB\-\-unbuffered\fR,
\fB\-n\fR
.sp
-Flush the buffer after each query.
-.TP 3n
-\(bu
+Flush the buffer after each query\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: user option
+.\" user option: mysql
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: verbose option
+.\" verbose option: mysql
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Produce more output about what the program does. This option can be given multiple times to produce more and more output. (For example,
+Verbose mode\&. Produce more output about what the program does\&. This option can be given multiple times to produce more and more output\&. (For example,
\fB\-v \-v \-v\fR
-produces table output format even in batch mode.)
-.TP 3n
-\(bu
+produces table output format even in batch mode\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: version option
+.\" version option: mysql
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: vertical option
+.\" vertical option: mysql
\fB\-\-vertical\fR,
\fB\-E\fR
.sp
-Print query output rows vertically (one line per column value). Without this option, you can specify vertical output for individual statements by terminating them with
-\\G.
-.TP 3n
-\(bu
+Print query output rows vertically (one line per column value)\&. Without this option, you can specify vertical output for individual statements by terminating them with
+\eG\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: wait option
+.\" wait option: mysql
\fB\-\-wait\fR,
\fB\-w\fR
.sp
-If the connection cannot be established, wait and retry instead of aborting.
-.TP 3n
-\(bu
+If the connection cannot be established, wait and retry instead of aborting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: xml option
+.\" xml option: mysql
\fB\-\-xml\fR,
\fB\-X\fR
.sp
-Produce XML output.
+Produce XML output\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
-Prior to MySQL 5.1.12, there was no differentiation in the output when using this option between columns containing the
+.ps -1
+.br
+Prior to MySQL 5\&.1\&.12, there was no differentiation in the output when using this option between columns containing the
NULL
value and columns containing the string literal
-\'NULL'; both were represented as
+\'NULL\'; both were represented as
+.sp .5v
+.RE
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
<field name="\fIcolumn_name\fR">NULL</field>
.fi
+.if n \{\
.RE
-Beginning with MySQL 5.1.12, the output when
+.\}
+.sp
+Beginning with MySQL 5\&.1\&.12, the output when
\fB\-\-xml\fR
is used with
\fBmysql\fR
matches that of
-\fBmysqldump \fR\fB\fB\-\-xml\fR\fR. See
+\fBmysqldump \fR\fB\fB\-\-xml\fR\fR\&. See
\fBmysqldump\fR(1)
-for details.
+for details\&.
.sp
-Beginning with MySQL 5.1.18, the XML output also uses an XML namespace, as shown here:
+Beginning with MySQL 5\&.1\&.18, the XML output also uses an XML namespace, as shown here:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-\-xml \-uroot \-e "SHOW VARIABLES LIKE 'version%'"\fR
-<?xml version="1.0"?>
-<resultset statement="SHOW VARIABLES LIKE 'version%'" xmlns:xsi="http://www.w3.org/2001/XMLSchema\-instance">
+shell> \fBmysql \-\-xml \-uroot \-e "SHOW VARIABLES LIKE \'version%\'"\fR
+<?xml version="1\&.0"?>
+<resultset statement="SHOW VARIABLES LIKE \'version%\'" xmlns:xsi="http://www\&.w3\&.org/2001/XMLSchema\-instance">
<row>
<field name="Variable_name">version</field>
-<field name="Value">5.0.40\-debug</field>
+<field name="Value">5\&.0\&.40\-debug</field>
</row>
<row>
<field name="Variable_name">version_comment</field>
@@ -597,440 +1208,776 @@ shell> \fBmysql \-\-xml \-uroot \-e "SHO
</row>
</resultset>
.fi
+.if n \{\
.RE
+.\}
.sp
(See
-[1]\&\fIBug#25946\fR.)
-.sp
+\m[blue]\fBBug#25946\fR\m[]\&\s-2\u[1]\d\s+2\&.)
.RE
.PP
You can also set the following variables by using
-\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR. The
+\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR\&. The
\fB\-\-set\-variable\fR
-format is deprecated.
-.TP 3n
-\(bu
+format is deprecated\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" timeout: connect_timeout variable
+.\" connect_timeout variable
connect_timeout
.sp
-The number of seconds before connection timeout. (Default value is
-0.)
-.TP 3n
-\(bu
+The number of seconds before connection timeout\&. (Default value is
+0\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" max_allowed_packet variable
max_allowed_packet
.sp
-The maximum packet length to send to or receive from the server. (Default value is 16MB.)
-.TP 3n
-\(bu
+The maximum packet length to send to or receive from the server\&. (Default value is 16MB\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" max_join_size variable
max_join_size
.sp
The automatic limit for rows in a join when using
-\fB\-\-safe\-updates\fR. (Default value is 1,000,000.)
-.TP 3n
-\(bu
+\fB\-\-safe\-updates\fR\&. (Default value is 1,000,000\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" net_buffer_length variable
net_buffer_length
.sp
-The buffer size for TCP/IP and socket communication. (Default value is 16KB.)
-.TP 3n
-\(bu
+The buffer size for TCP/IP and socket communication\&. (Default value is 16KB\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" select_limit variable
select_limit
.sp
The automatic limit for
SELECT
statements when using
-\fB\-\-safe\-updates\fR. (Default value is 1,000.)
-.sp
+\fB\-\-safe\-updates\fR\&. (Default value is 1,000\&.)
.RE
+.\" MYSQL_HISTFILE environment variable
+.\" environment variable: MYSQL_HISTFILE
+.\" HOME environment variable
+.\" environment variable: HOME
+.\" mysql history file
+.\" command-line history: mysql
+.\" .mysql_history file
.PP
On Unix, the
\fBmysql\fR
-client writes a record of executed statements to a history file. By default, this file is named
-\fI.mysql_history\fR
-and is created in your home directory. To specify a different file, set the value of the
+client writes a record of executed statements to a history file\&. By default, this file is named
+\&.mysql_history
+and is created in your home directory\&. To specify a different file, set the value of the
MYSQL_HISTFILE
-environment variable.
+environment variable\&.
.PP
The
-\fI.mysql_history\fR
-should be protected with a restrictive access mode because sensitive information might be written to it, such as the text of SQL statements that contain passwords. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
+\&.mysql_history
+should be protected with a restrictive access mode because sensitive information might be written to it, such as the text of SQL statements that contain passwords\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
.PP
If you do not want to maintain a history file, first remove
-\fI.mysql_history\fR
+\&.mysql_history
if it exists, and then use either of the following techniques:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Set the
MYSQL_HISTFILE
variable to
-\fI/dev/null\fR. To cause this setting to take effect each time you log in, put the setting in one of your shell's startup files.
-.TP 3n
-\(bu
+/dev/null\&. To cause this setting to take effect each time you log in, put the setting in one of your shell\'s startup files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Create
-\fI.mysql_history\fR
+\&.mysql_history
as a symbolic link to
-\fI/dev/null\fR:
+/dev/null:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBln \-s /dev/null $HOME/.mysql_history\fR
+shell> \fBln \-s /dev/null $HOME/\&.mysql_history\fR
.fi
+.if n \{\
.RE
-You need do this only once.
-.SH "\fBMYSQL\fR COMMANDS"
+.\}
+.sp
+You need do this only once\&.
+.RE
+.SH "MYSQL COMMANDS"
.PP
\fBmysql\fR
-sends each SQL statement that you issue to the server to be executed. There is also a set of commands that
+sends each SQL statement that you issue to the server to be executed\&. There is also a set of commands that
\fBmysql\fR
-itself interprets. For a list of these commands, type
+itself interprets\&. For a list of these commands, type
help
or
-\\h
+\eh
at the
mysql>
prompt:
+.\" mysql commands: list of
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp\fR
List of all MySQL commands:
-Note that all text commands must be first on line and end with ';'
-? (\\?) Synonym for `help'.
-clear (\\c) Clear command.
-connect (\\r) Reconnect to the server. Optional arguments are db and host.
-delimiter (\\d) Set statement delimiter.
-edit (\\e) Edit command with $EDITOR.
-ego (\\G) Send command to mysql server, display result vertically.
-exit (\\q) Exit mysql. Same as quit.
-go (\\g) Send command to mysql server.
-help (\\h) Display this help.
-nopager (\\n) Disable pager, print to stdout.
-notee (\\t) Don't write into outfile.
-pager (\\P) Set PAGER [to_pager]. Print the query results via PAGER.
-print (\\p) Print current command.
-prompt (\\R) Change your mysql prompt.
-quit (\\q) Quit mysql.
-rehash (\\#) Rebuild completion hash.
-source (\\.) Execute an SQL script file. Takes a file name as an argument.
-status (\\s) Get status information from the server.
-system (\\!) Execute a system shell command.
-tee (\\T) Set outfile [to_outfile]. Append everything into given
- outfile.
-use (\\u) Use another database. Takes database name as argument.
-charset (\\C) Switch to another charset. Might be needed for processing
- binlog with multi\-byte charsets.
-warnings (\\W) Show warnings after every statement.
-nowarning (\\w) Don't show warnings after every statement.
-For server side help, type 'help contents'
+Note that all text commands must be first on line and end with \';\'
+? (\e?) Synonym for `help\'\&.
+clear (\ec) Clear command\&.
+connect (\er) Reconnect to the server\&. Optional arguments are db and host\&.
+delimiter (\ed) Set statement delimiter\&.
+edit (\ee) Edit command with $EDITOR\&.
+ego (\eG) Send command to mysql server, display result vertically\&.
+exit (\eq) Exit mysql\&. Same as quit\&.
+go (\eg) Send command to mysql server\&.
+help (\eh) Display this help\&.
+nopager (\en) Disable pager, print to stdout\&.
+notee (\et) Don\'t write into outfile\&.
+pager (\eP) Set PAGER [to_pager]\&. Print the query results via PAGER\&.
+print (\ep) Print current command\&.
+prompt (\eR) Change your mysql prompt\&.
+quit (\eq) Quit mysql\&.
+rehash (\e#) Rebuild completion hash\&.
+source (\e\&.) Execute an SQL script file\&. Takes a file name as an argument\&.
+status (\es) Get status information from the server\&.
+system (\e!) Execute a system shell command\&.
+tee (\eT) Set outfile [to_outfile]\&. Append everything into given
+ outfile\&.
+use (\eu) Use another database\&. Takes database name as argument\&.
+charset (\eC) Switch to another charset\&. Might be needed for processing
+ binlog with multi\-byte charsets\&.
+warnings (\eW) Show warnings after every statement\&.
+nowarning (\ew) Don\'t show warnings after every statement\&.
+For server side help, type \'help contents\'
.fi
+.if n \{\
.RE
+.\}
.PP
-Each command has both a long and short form. The long form is not case sensitive; the short form is. The long form can be followed by an optional semicolon terminator, but the short form should not.
+Each command has both a long and short form\&. The long form is not case sensitive; the short form is\&. The long form can be followed by an optional semicolon terminator, but the short form should not\&.
.PP
The use of short\-form commands within multi\-line
-/* ... */
-comments is not supported.
-.TP 3n
-\(bu
+/* \&.\&.\&. */
+comments is not supported\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: help command
+.\" help command: mysql
\fBhelp [\fR\fB\fIarg\fR\fR\fB]\fR,
-\fB\\h [\fR\fB\fIarg\fR\fR\fB]\fR,
-\fB\\? [\fR\fB\fIarg\fR\fR\fB]\fR,
+\fB\eh [\fR\fB\fIarg\fR\fR\fB]\fR,
+\fB\e? [\fR\fB\fIarg\fR\fR\fB]\fR,
\fB? [\fR\fB\fIarg\fR\fR\fB]\fR
.sp
-Displays a help message listing the available
+Display a help message listing the available
\fBmysql\fR
-commands.
+commands\&.
.sp
If you provide an argument to the
help
command,
\fBmysql\fR
-uses it as a search string to access server\-side help from the contents of the MySQL Reference Manual. For more information, see
-the section called \(lq\fBMYSQL\fR SERVER\-SIDE HELP\(rq.
-.TP 3n
-\(bu
+uses it as a search string to access server\-side help from the contents of the MySQL Reference Manual\&. For more information, see
+the section called \(lqMYSQL SERVER-SIDE HELP\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: charset command
+.\" charset command: mysql
\fBcharset \fR\fB\fIcharset_name\fR\fR,
-\fB\\C \fR\fB\fIcharset_name\fR\fR
+\fB\eC \fR\fB\fIcharset_name\fR\fR
.sp
-The
-charset
-command changes the default character set and issues a
+Change the default character set and issue a
SET NAMES
-statement. This enables the character set to remain synchronized on the client and server if
+statement\&. This enables the character set to remain synchronized on the client and server if
\fBmysql\fR
-is run with auto\-reconnect enabled (which is not recommended), because the specified character set is used for reconnects. This command was added in MySQL 5.1.7.
-.TP 3n
-\(bu
+is run with auto\-reconnect enabled (which is not recommended), because the specified character set is used for reconnects\&. This command was added in MySQL 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: clear command
+.\" clear command: mysql
\fBclear\fR,
-\fB\\c\fR
+\fB\ec\fR
+.sp
+Clear the current input\&. Use this if you change your mind about executing the statement that you are entering\&.
+.RE
.sp
-Clears the current input. Use this if you change your mind about executing the statement that you are entering.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: connect command
+.\" connect command: mysql
\fBconnect [\fR\fB\fIdb_name\fR\fR\fB \fR\fB\fIhost_name\fR\fR\fB]]\fR,
-\fB\\r [\fR\fB\fIdb_name\fR\fR\fB \fR\fB\fIhost_name\fR\fR\fB]]\fR
+\fB\er [\fR\fB\fIdb_name\fR\fR\fB \fR\fB\fIhost_name\fR\fR\fB]]\fR
.sp
-Reconnects to the server. The optional database name and host name arguments may be given to specify the default database or the host where the server is running. If omitted, the current values are used.
-.TP 3n
-\(bu
+Reconnect to the server\&. The optional database name and host name arguments may be given to specify the default database or the host where the server is running\&. If omitted, the current values are used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: delimiter command
+.\" delimiter command: mysql
\fBdelimiter \fR\fB\fIstr\fR\fR,
-\fB\\d \fR\fB\fIstr\fR\fR
+\fB\ed \fR\fB\fIstr\fR\fR
.sp
-The
-delimiter
-command changes the string that
+Change the string that
\fBmysql\fR
-interprets as the separator between SQL statements. The default is the semicolon character (\(lq;\(rq).
+interprets as the separator between SQL statements\&. The default is the semicolon character (\(lq;\(rq)\&.
.sp
-The delimiter can be specified as an unquoted or quoted argument. Quoting can be done with either single quote (') or douple quote (") characters. To include a quote within a quoted string, either quote the string with the other quote character or escape the quote with a backslash (\(lq\\\(rq) character. Backslash should be avoided outside of quoted strings because it is the escape character for MySQL. For an unquoted argument, the delmiter is read up to the first space or end of line. For a quoted argument, the delimiter is read up to the matching quote on the line.
+The delimiter can be specified as an unquoted or quoted argument\&. Quoting can be done with either single quote (\') or douple quote (") characters\&. To include a quote within a quoted string, either quote the string with the other quote character or escape the quote with a backslash (\(lq\e\(rq) character\&. Backslash should be avoided outside of quoted strings because it is the escape character for MySQL\&. For an unquoted argument, the delmiter is read up to the first space or end of line\&. For a quoted argument, the delimiter is read up to the matching quote on the line\&.
.sp
When the delimiter recognized by
\fBmysql\fR
is set to something other than the default of
-\(lq;\(rq, instances of that character are sent to the server without interpretation. However, the server itself still interprets
+\(lq;\(rq, instances of that character are sent to the server without interpretation\&. However, the server itself still interprets
\(lq;\(rq
-as a statement delimiter and processes statements accordingly. This behavior on the server side comes into play for multiple\-statement execution (see
-Section\ 21.10.12, \(lqC API Support for Multiple Statement Execution\(rq), and for parsing the body of stored procedures and functions, triggers, and events (see
-Section\ 19.1, \(lqDefining Stored Programs\(rq).
-.TP 3n
-\(bu
+as a statement delimiter and processes statements accordingly\&. This behavior on the server side comes into play for multiple\-statement execution (see
+Section\ \&21.10.12, \(lqC API Support for Multiple Statement Execution\(rq), and for parsing the body of stored procedures and functions, triggers, and events (see
+Section\ \&19.1, \(lqDefining Stored Programs\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: edit command
+.\" edit command: mysql
\fBedit\fR,
-\fB\\e\fR
+\fB\ee\fR
.sp
-Edits the current input statement.
+Edit the current input statement\&.
\fBmysql\fR
checks the values of the
EDITOR
and
VISUAL
-environment variables to determine which editor to use. The default editor is
+environment variables to determine which editor to use\&. The default editor is
\fBvi\fR
-if neither variable is set.
+if neither variable is set\&.
.sp
The
\fBedit\fR
-command works only in Unix.
-.TP 3n
-\(bu
+command works only in Unix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: ego command
+.\" ego command: mysql
\fBego\fR,
-\fB\\G\fR
+\fB\eG\fR
.sp
-Sends the current statement to the server to be executed and displays the result using vertical format.
-.TP 3n
-\(bu
+Send the current statement to the server to be executed and display the result using vertical format\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: exit command
+.\" exit command: mysql
\fBexit\fR,
-\fB\\q\fR
+\fB\eq\fR
+.sp
+Exit
+\fBmysql\fR\&.
+.RE
.sp
-Exits
-\fBmysql\fR.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: go command
+.\" go command: mysql
\fBgo\fR,
-\fB\\g\fR
+\fB\eg\fR
+.sp
+Send the current statement to the server to be executed\&.
+.RE
.sp
-Sends the current statement to the server to be executed.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: nopager command
+.\" nopager command: mysql
\fBnopager\fR,
-\fB\\n\fR
+\fB\en\fR
.sp
-Disables output paging. See the description for
-\fBpager\fR.
+Disable output paging\&. See the description for
+\fBpager\fR\&.
.sp
The
\fBnopager\fR
-command works only in Unix.
-.TP 3n
-\(bu
+command works only in Unix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: notee command
+.\" notee command: mysql
\fBnotee\fR,
-\fB\\t\fR
+\fB\et\fR
+.sp
+Disable output copying to the tee file\&. See the description for
+\fBtee\fR\&.
+.RE
.sp
-Disables output copying to the tee file. See the description for
-\fBtee\fR.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: nowarning command
+.\" nowarning command: mysql
\fBnowarning\fR,
-\fB\\w\fR
+\fB\ew\fR
+.sp
+Enable display of warnings after each statement\&.
+.RE
.sp
-Enables display of warnings after each statement.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: pager command
+.\" pager command: mysql
\fBpager [\fR\fB\fIcommand\fR\fR\fB]\fR,
-\fB\\P [\fR\fB\fIcommand\fR\fR\fB]\fR
+\fB\eP [\fR\fB\fIcommand\fR\fR\fB]\fR
.sp
-By using the
+Enable output paging\&. By using the
\fB\-\-pager\fR
option when you invoke
\fBmysql\fR, it is possible to browse or search query results in interactive mode with Unix programs such as
\fBless\fR,
-\fBmore\fR, or any other similar program. If you specify no value for the option,
+\fBmore\fR, or any other similar program\&. If you specify no value for the option,
\fBmysql\fR
checks the value of the
PAGER
-environment variable and sets the pager to that.
+environment variable and sets the pager to that\&.
.sp
Output paging can be enabled interactively with the
\fBpager\fR
command and disabled with
-\fBnopager\fR. The command takes an optional argument; if given, the paging program is set to that. With no argument, the pager is set to the pager that was set on the command line, or
+\fBnopager\fR\&. The command takes an optional argument; if given, the paging program is set to that\&. With no argument, the pager is set to the pager that was set on the command line, or
stdout
-if no pager was specified.
+if no pager was specified\&.
.sp
Output paging works only in Unix because it uses the
popen()
-function, which does not exist on Windows. For Windows, the
+function, which does not exist on Windows\&. For Windows, the
\fBtee\fR
option can be used instead to save query output, although it is not as convenient as
\fBpager\fR
-for browsing output in some situations.
-.TP 3n
-\(bu
+for browsing output in some situations\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: print command
+.\" print command: mysql
\fBprint\fR,
-\fB\\p\fR
+\fB\ep\fR
+.sp
+Print the current input statement without executing it\&.
+.RE
.sp
-Prints the current input statement without executing it.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: prompt command
+.\" prompt command: mysql
\fBprompt [\fR\fB\fIstr\fR\fR\fB]\fR,
-\fB\\R [\fR\fB\fIstr\fR\fR\fB]\fR
+\fB\eR [\fR\fB\fIstr\fR\fR\fB]\fR
.sp
-Reconfigures the
+Reconfigure the
\fBmysql\fR
-prompt to the given string. The special character sequences that can be used in the prompt are described later in this section.
+prompt to the given string\&. The special character sequences that can be used in the prompt are described later in this section\&.
.sp
If you specify the
prompt
command with no argument,
\fBmysql\fR
resets the prompt to the default of
-mysql>.
-.TP 3n
-\(bu
+mysql>\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: quit command
+.\" quit command: mysql
\fBquit\fR,
-\fB\\q\fR
+\fB\eq\fR
.sp
-Exits
-\fBmysql\fR.
-.TP 3n
-\(bu
+Exit
+\fBmysql\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: rehash command
+.\" rehash command: mysql
\fBrehash\fR,
-\fB\\#\fR
+\fB\e#\fR
.sp
-Rebuilds the completion hash that enables database, table, and column name completion while you are entering statements. (See the description for the
+Rebuild the completion hash that enables database, table, and column name completion while you are entering statements\&. (See the description for the
\fB\-\-auto\-rehash\fR
-option.)
-.TP 3n
-\(bu
+option\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: source command
+.\" source command: mysql
\fBsource \fR\fB\fIfile_name\fR\fR,
-\fB\\. \fR\fB\fIfile_name\fR\fR
+\fB\e\&. \fR\fB\fIfile_name\fR\fR
.sp
-Reads the named file and executes the statements contained therein. On Windows, you can specify path name separators as
+Read the named file and executes the statements contained therein\&. On Windows, you can specify path name separators as
/
or
-\\\\.
-.TP 3n
-\(bu
+\e\e\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: status command
+.\" status command: mysql
\fBstatus\fR,
-\fB\\s\fR
+\fB\es\fR
.sp
-The
-status
-command provides some information about the connection and the server you are using. If you are running in
+Provide status information about the connection and the server you are using\&. If you are running in
\fB\-\-safe\-updates\fR
mode,
status
also prints the values for the
\fBmysql\fR
-variables that affect your queries.
-.TP 3n
-\(bu
+variables that affect your queries\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: system command
+.\" system command: mysql
\fBsystem \fR\fB\fIcommand\fR\fR,
-\fB\\! \fR\fB\fIcommand\fR\fR
+\fB\e! \fR\fB\fIcommand\fR\fR
.sp
-Executes the given command using your default command interpreter.
+Execute the given command using your default command interpreter\&.
.sp
The
\fBsystem\fR
-command works only in Unix.
-.TP 3n
-\(bu
+command works only in Unix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: tee command
+.\" tee command: mysql
\fBtee [\fR\fB\fIfile_name\fR\fR\fB]\fR,
-\fB\\T [\fR\fB\fIfile_name\fR\fR\fB]\fR
+\fB\eT [\fR\fB\fIfile_name\fR\fR\fB]\fR
.sp
By using the
\fB\-\-tee\fR
option when you invoke
-\fBmysql\fR, you can log statements and their output. All the data displayed on the screen is appended into a given file. This can be very useful for debugging purposes also.
+\fBmysql\fR, you can log statements and their output\&. All the data displayed on the screen is appended into a given file\&. This can be very useful for debugging purposes also\&.
\fBmysql\fR
-flushes results to the file after each statement, just before it prints its next prompt.
+flushes results to the file after each statement, just before it prints its next prompt\&.
.sp
You can enable this feature interactively with the
\fBtee\fR
-command. Without a parameter, the previous file is used. The
+command\&. Without a parameter, the previous file is used\&. The
\fBtee\fR
file can be disabled with the
\fBnotee\fR
-command. Executing
+command\&. Executing
\fBtee\fR
-again re\-enables logging.
-.TP 3n
-\(bu
+again re\-enables logging\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: use command
+.\" use command: mysql
\fBuse \fR\fB\fIdb_name\fR\fR,
-\fB\\u \fR\fB\fIdb_name\fR\fR
+\fB\eu \fR\fB\fIdb_name\fR\fR
.sp
-Uses
+Use
\fIdb_name\fR
-as the default database.
-.TP 3n
-\(bu
-\fBwarnings\fR,
-\fB\\W\fR
+as the default database\&.
+.RE
.sp
-Enables display of warnings after each statement (if there are any).
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: warnings command
+.\" warnings command: mysql
+\fBwarnings\fR,
+\fB\eW\fR
.sp
+Enable display of warnings after each statement (if there are any)\&.
.RE
.PP
Here are a few tips about the
\fBpager\fR
command:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can use it to write to a file and the results go only to the file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBpager cat > /tmp/log.txt\fR
+mysql> \fBpager cat > /tmp/log\&.txt\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
You can also pass any options for the program that you want to use as your pager:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBpager less \-n \-i \-S\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
In the preceding example, note the
\fB\-S\fR
-option. You may find it very useful for browsing wide query results. Sometimes a very wide result set is difficult to read on the screen. The
+option\&. You may find it very useful for browsing wide query results\&. Sometimes a very wide result set is difficult to read on the screen\&. The
\fB\-S\fR
option to
\fBless\fR
-can make the result set much more readable because you can scroll it horizontally using the left\-arrow and right\-arrow keys. You can also use
+can make the result set much more readable because you can scroll it horizontally using the left\-arrow and right\-arrow keys\&. You can also use
\fB\-S\fR
interactively within
\fBless\fR
-to switch the horizontal\-browse mode on and off. For more information, read the
+to switch the horizontal\-browse mode on and off\&. For more information, read the
\fBless\fR
manual page:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBman less\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The
\fB\-F\fR
and
@@ -1039,41 +1986,57 @@ options may be used with
\fBless\fR
to cause it to exit if output fits on one screen, which is convenient when no scrolling is necessary:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBpager less \-n \-i \-S \-F \-X\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can specify very complex pager commands for handling query output:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBpager cat | tee /dr1/tmp/res.txt \\\fR
- \fB| tee /dr2/tmp/res2.txt | less \-n \-i \-S\fR
+mysql> \fBpager cat | tee /dr1/tmp/res\&.txt \e\fR
+ \fB| tee /dr2/tmp/res2\&.txt | less \-n \-i \-S\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
In this example, the command would send query results to two files in two different directories on two different file systems mounted on
-\fI/dr1\fR
+/dr1
and
-\fI/dr2\fR, yet still display the results onscreen via
-\fBless\fR.
-.sp
+/dr2, yet still display the results onscreen via
+\fBless\fR\&.
.RE
.PP
You can also combine the
\fBtee\fR
and
\fBpager\fR
-functions. Have a
+functions\&. Have a
\fBtee\fR
file enabled and
\fBpager\fR
set to
\fBless\fR, and you are able to browse the results using the
\fBless\fR
-program and still have everything appended into a file the same time. The difference between the Unix
+program and still have everything appended into a file the same time\&. The difference between the Unix
\fBtee\fR
used with the
\fBpager\fR
@@ -1085,22 +2048,23 @@ command is that the built\-in
\fBtee\fR
works even if you do not have the Unix
\fBtee\fR
-available. The built\-in
+available\&. The built\-in
\fBtee\fR
also logs everything that is printed on the screen, whereas the Unix
\fBtee\fR
used with
\fBpager\fR
-does not log quite that much. Additionally,
+does not log quite that much\&. Additionally,
\fBtee\fR
file logging can be turned on and off interactively from within
-\fBmysql\fR. This is useful when you want to log some queries to a file, but not others.
+\fBmysql\fR\&. This is useful when you want to log some queries to a file, but not others\&.
+.\" mysql prompt command
.PP
The
\fBprompt\fR
command reconfigures the default
mysql>
-prompt. The string for defining the prompt can contain the following special sequences.
+prompt\&. The string for defining the prompt can contain the following special sequences\&.
.TS
allbox tab(:);
l l
@@ -1138,267 +2102,332 @@ T}:T{
\fBDescription\fR
T}
T{
-\\o
+\ec
T}:T{
-The current month in numeric format
+A counter that increments for each statement you issue
T}
T{
-\\P
+\eD
T}:T{
-am/pm
+The full current date
T}
T{
-\\p
+\ed
T}:T{
-The current TCP/IP port or socket file
+The default database
T}
T{
-\\R
+\eh
T}:T{
-The current time, in 24\-hour military time (0\-23)
+The server host
T}
T{
-\\r
+\el
T}:T{
-The current time, standard 12\-hour time (1\-12)
+The current delimiter (new in 5\&.1\&.12)
T}
T{
-\\S
+\em
T}:T{
-Semicolon
+Minutes of the current time
T}
T{
-\\s
+\en
T}:T{
-Seconds of the current time
+A newline character
T}
T{
-\\t
+\eO
T}:T{
-A tab character
+The current month in three\-letter format (Jan, Feb, \&...)
T}
T{
-\\U
+\eo
T}:T{
-Your full
- \fIuser_name\fR@\fIhost_name\fR
- account name
+The current month in numeric format
T}
T{
-\\u
+\eP
T}:T{
-Your user name
+am/pm
T}
T{
-\\c
+\ep
T}:T{
-A counter that increments for each statement you issue
+The current TCP/IP port or socket file
T}
T{
-\\v
+\eR
T}:T{
-The server version
+The current time, in 24\-hour military time (0\(en23)
T}
T{
-\\w
+\er
T}:T{
-The current day of the week in three\-letter format (Mon, Tue, \&...)
+The current time, standard 12\-hour time (1\(en12)
T}
T{
-\\Y
+\eS
T}:T{
-The current year, four digits
+Semicolon
T}
T{
-\\y
+\es
T}:T{
-The current year, two digits
+Seconds of the current time
T}
T{
-\\_
+\et
T}:T{
-A space
+A tab character
T}
T{
-\\\
+\eU
T}:T{
-A space (a space follows the backslash)
+.PP
+Your full
+\fIuser_name\fR@\fIhost_name\fR
+account name
T}
T{
-\\'
+\eu
T}:T{
-Single quote
+Your user name
T}
T{
-\\"
+\ev
T}:T{
-Double quote
+The server version
T}
T{
-\\\\
+\ew
T}:T{
-A literal \(lq\\\(rq backslash character
+The current day of the week in three\-letter format (Mon, Tue, \&...)
T}
T{
-\\\fIx\fR
+\eY
T}:T{
-\fIx\fR, for any
- \(lq\fIx\fR\(rq not listed
- above
+The current year, four digits
T}
T{
-\\D
+\ey
T}:T{
-The full current date
+The current year, two digits
T}
T{
-\\d
+\e_
T}:T{
-The default database
+A space
T}
T{
-\\h
+\e\ \&
T}:T{
-The server host
+A space (a space follows the backslash)
T}
T{
-\\l
+\e\'
T}:T{
-The current delimiter (new in 5.1.12)
+Single quote
T}
T{
-\\m
+\e"
T}:T{
-Minutes of the current time
+Double quote
T}
T{
-\\n
+\e\e
T}:T{
-A newline character
+A literal \(lq\e\(rq backslash character
T}
T{
-\\O
+\e\fIx\fR
T}:T{
-The current month in three\-letter format (Jan, Feb, \&...)
+.PP
+\fIx\fR, for any
+\(lq\fIx\fR\(rq
+not listed above
T}
.TE
-.sp
+.sp 1
.PP
You can set the prompt in several ways:
-.TP 3n
-\(bu
-\fIUse an environment variable.\fR
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIUse an environment variable\&.\fR
You can set the
MYSQL_PS1
-environment variable to a prompt string. For example:
+environment variable to a prompt string\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBexport MYSQL_PS1="(\\u@\\h) [\\d]> "\fR
+shell> \fBexport MYSQL_PS1="(\eu@\eh) [\ed]> "\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
-\fIUse a command\-line option.\fR
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIUse a command\-line option\&.\fR
You can set the
\fB\-\-prompt\fR
option on the command line to
-\fBmysql\fR. For example:
+\fBmysql\fR\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-\-prompt="(\\u@\\h) [\\d]> "\fR
+shell> \fBmysql \-\-prompt="(\eu@\eh) [\ed]> "\fR
(user@host) [database]>
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
-\fIUse an option file.\fR
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIUse an option file\&.\fR
You can set the
prompt
option in the
[mysql]
group of any MySQL option file, such as
-\fI/etc/my.cnf\fR
+/etc/my\&.cnf
or the
-\fI.my.cnf\fR
-file in your home directory. For example:
+\&.my\&.cnf
+file in your home directory\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysql]
-prompt=(\\\\u@\\\\h) [\\\\d]>\\\\_
+prompt=(\e\eu@\e\eh) [\e\ed]>\e\e_
.fi
+.if n \{\
.RE
-In this example, note that the backslashes are doubled. If you set the prompt using the
+.\}
+.sp
+In this example, note that the backslashes are doubled\&. If you set the prompt using the
prompt
-option in an option file, it is advisable to double the backslashes when using the special prompt options. There is some overlap in the set of allowable prompt options and the set of special escape sequences that are recognized in option files. (These sequences are listed in
-Section\ 4.2.3.2, \(lqUsing Option Files\(rq.) The overlap may cause you problems if you use single backslashes. For example,
-\\s
-is interpreted as a space rather than as the current seconds value. The following example shows how to define a prompt within an option file to include the current time in
+option in an option file, it is advisable to double the backslashes when using the special prompt options\&. There is some overlap in the set of allowable prompt options and the set of special escape sequences that are recognized in option files\&. (These sequences are listed in
+Section\ \&4.2.3.3, \(lqUsing Option Files\(rq\&.) The overlap may cause you problems if you use single backslashes\&. For example,
+\es
+is interpreted as a space rather than as the current seconds value\&. The following example shows how to define a prompt within an option file to include the current time in
HH:MM:SS>
format:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysql]
-prompt="\\\\r:\\\\m:\\\\s> "
+prompt="\e\er:\e\em:\e\es> "
.fi
+.if n \{\
.RE
-.TP 3n
-\(bu
-\fISet the prompt interactively.\fR
+.\}
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fISet the prompt interactively\&.\fR
You can change your prompt interactively by using the
prompt
(or
-\\R) command. For example:
+\eR) command\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBprompt (\\u@\\h) [\\d]>\\_\fR
-PROMPT set to '(\\u@\\h) [\\d]>\\_'
+mysql> \fBprompt (\eu@\eh) [\ed]>\e_\fR
+PROMPT set to \'(\eu@\eh) [\ed]>\e_\'
(\fIuser\fR@\fIhost\fR) [\fIdatabase\fR]>
(\fIuser\fR@\fIhost\fR) [\fIdatabase\fR]> prompt
Returning to default PROMPT of mysql>
mysql>
.fi
+.if n \{\
.RE
-.SH "\fBMYSQL\fR SERVER\-SIDE HELP"
+.\}
+.RE
+.SH "MYSQL SERVER-SIDE HELP"
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp \fR\fB\fIsearch_string\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you provide an argument to the
help
command,
\fBmysql\fR
-uses it as a search string to access server\-side help from the contents of the MySQL Reference Manual. The proper operation of this command requires that the help tables in the
+uses it as a search string to access server\-side help from the contents of the MySQL Reference Manual\&. The proper operation of this command requires that the help tables in the
mysql
database be initialized with help topic information (see
-Section\ 5.1.8, \(lqServer\-Side Help\(rq).
+Section\ \&5.1.9, \(lqServer-Side Help\(rq)\&.
.PP
If there is no match for the search string, the search fails:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp me\fR
Nothing found
-Please try to run 'help contents' for a list of all accessible topics
+Please try to run \'help contents\' for a list of all accessible topics
.fi
+.if n \{\
.RE
+.\}
.PP
Use
\fBhelp contents\fR
to see a list of the help categories:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp contents\fR
You asked for help about help category: "Contents"
-For more information, type 'help <item>', where <item> is one of the
+For more information, type \'help <item>\', where <item> is one of the
following categories:
Account Management
Administration
@@ -1416,163 +2445,206 @@ following categories:
Transactions
Triggers
.fi
+.if n \{\
.RE
+.\}
.PP
If the search string matches multiple items,
\fBmysql\fR
shows a list of matching topics:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp logs\fR
-Many help items for your request exist.
-To make a more specific request, please type 'help <item>',
+Many help items for your request exist\&.
+To make a more specific request, please type \'help <item>\',
where <item> is one of the following topics:
SHOW
SHOW BINARY LOGS
SHOW ENGINE
SHOW LOGS
.fi
+.if n \{\
.RE
+.\}
.PP
Use a topic as the search string to see the help entry for that topic:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp show binary logs\fR
-Name: 'SHOW BINARY LOGS'
+Name: \'SHOW BINARY LOGS\'
Description:
Syntax:
SHOW BINARY LOGS
SHOW MASTER LOGS
-Lists the binary log files on the server. This statement is used as
+Lists the binary log files on the server\&. This statement is used as
part of the procedure described in [purge\-binary\-logs], that shows how
-to determine which logs can be purged.
+to determine which logs can be purged\&.
mysql> SHOW BINARY LOGS;
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+
| Log_name | File_size |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+
-| binlog.000015 | 724935 |
-| binlog.000016 | 733481 |
+| binlog\&.000015 | 724935 |
+| binlog\&.000016 | 733481 |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
.RE
+.\}
.SH "EXECUTING SQL STATEMENTS FROM A TEXT FILE"
+.\" executing SQL statements from text files
+.\" importing: data
+.\" data: importing
+.\" files: text
+.\" text files: importing
+.\" source (mysql client command)
+.\" \. (mysql client command)
+.\" mysql source (command for reading from text files)
+.\" mysql \. (command for reading from text files)
.PP
The
\fBmysql\fR
client typically is used interactively, like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
However, it is also possible to put your SQL statements in a file and then tell
\fBmysql\fR
-to read its input from that file. To do so, create a text file
+to read its input from that file\&. To do so, create a text file
\fItext_file\fR
-that contains the statements you wish to execute. Then invoke
+that contains the statements you wish to execute\&. Then invoke
\fBmysql\fR
as shown here:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fItext_file\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you place a
USE \fIdb_name\fR
statement as the first statement in the file, it is unnecessary to specify the database name on the command line:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql < text_file\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you are already running
\fBmysql\fR, you can execute an SQL script file using the
source
command or
-\\.
+\e\&.
command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBsource \fR\fB\fIfile_name\fR\fR
-mysql> \fB\\. \fR\fB\fIfile_name\fR\fR
+mysql> \fB\e\&. \fR\fB\fIfile_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Sometimes you may want your script to display progress information to the user. For this you can insert statements like this:
+Sometimes you may want your script to display progress information to the user\&. For this you can insert statements like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-SELECT '<info_to_display>' AS ' ';
+SELECT \'<info_to_display>\' AS \' \';
.fi
+.if n \{\
.RE
+.\}
.PP
The statement shown outputs
-<info_to_display>.
+<info_to_display>\&.
.PP
-As of MySQL 5.1.23,
+As of MySQL 5\&.1\&.23,
\fBmysql\fR
-ignores Unicode byte order mark (BOM) characters at the beginning of input files. Previously, it read them and sent them to the server, resulting in a syntax error. Presence of a BOM does not cause
+ignores Unicode byte order mark (BOM) characters at the beginning of input files\&. Previously, it read them and sent them to the server, resulting in a syntax error\&. Presence of a BOM does not cause
\fBmysql\fR
-to change its default character set. To do that, invoke
+to change its default character set\&. To do that, invoke
\fBmysql\fR
with an option such as
-\fB\-\-default\-character\-set=utf8\fR.
+\fB\-\-default\-character\-set=utf8\fR\&.
.PP
For more information about batch mode, see
-Section\ 3.5, \(lqUsing \fBmysql\fR in Batch Mode\(rq.
-.SH "\fBMYSQL\fR TIPS"
+Section\ \&3.5, \(lqUsing mysql in Batch Mode\(rq\&.
+.SH "MYSQL TIPS"
.PP
This section describes some techniques that can help you use
\fBmysql\fR
-more effectively.
+more effectively\&.
.SS "Displaying Query Results Vertically"
.PP
-Some query results are much more readable when displayed vertically, instead of in the usual horizontal table format. Queries can be displayed vertically by terminating the query with \\G instead of a semicolon. For example, longer text values that include newlines often are much easier to read with vertical output:
+Some query results are much more readable when displayed vertically, instead of in the usual horizontal table format\&. Queries can be displayed vertically by terminating the query with \eG instead of a semicolon\&. For example, longer text values that include newlines often are much easier to read with vertical output:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBSELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\\G\fR
-*************************** 1. row ***************************
+mysql> \fBSELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\eG\fR
+*************************** 1\&. row ***************************
msg_nro: 3068
date: 2000\-03\-01 23:29:50
time_zone: +0200
mail_from: Monty
- reply: monty(a)no.spam.com
- mail_to: "Thimble Smith" <tim(a)no.spam.com>
+ reply: monty(a)no\&.spam\&.com
+ mail_to: "Thimble Smith" <tim(a)no\&.spam\&.com>
sbj: UTF\-8
txt: >>>>> "Thimble" == Thimble Smith writes:
-Thimble> Hi. I think this is a good idea. Is anyone familiar
-Thimble> with UTF\-8 or Unicode? Otherwise, I'll put this on my
-Thimble> TODO list and see what happens.
-Yes, please do that.
+Thimble> Hi\&. I think this is a good idea\&. Is anyone familiar
+Thimble> with UTF\-8 or Unicode? Otherwise, I\'ll put this on my
+Thimble> TODO list and see what happens\&.
+Yes, please do that\&.
Regards,
Monty
file: inbox\-jani\-1
hash: 190402944
-1 row in set (0.09 sec)
+1 row in set (0\&.09 sec)
.fi
+.if n \{\
.RE
-.\" end of SS subsection "Displaying Query Results Vertically"
+.\}
.SS "Using the \-\-safe\-updates Option"
+.\" safe-updates option
.PP
For beginners, a useful startup option is
\fB\-\-safe\-updates\fR
(or
-\fB\-\-i\-am\-a\-dummy\fR, which has the same effect). It is helpful for cases when you might have issued a
+\fB\-\-i\-am\-a\-dummy\fR, which has the same effect)\&. It is helpful for cases when you might have issued a
DELETE FROM \fItbl_name\fR
statement but forgotten the
WHERE
-clause. Normally, such a statement deletes all rows from the table. With
-\fB\-\-safe\-updates\fR, you can delete rows only by specifying the key values that identify them. This helps prevent accidents.
+clause\&. Normally, such a statement deletes all rows from the table\&. With
+\fB\-\-safe\-updates\fR, you can delete rows only by specifying the key values that identify them\&. This helps prevent accidents\&.
.PP
When you use the
\fB\-\-safe\-updates\fR
@@ -1580,20 +2652,31 @@ option,
\fBmysql\fR
issues the following statement when it connects to the MySQL server:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;
.fi
+.if n \{\
.RE
+.\}
.PP
See
-Section\ 5.1.4, \(lqSession System Variables\(rq.
+Section\ \&5.1.5, \(lqSession System Variables\(rq\&.
.PP
The
SET
statement has the following effects:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You are not allowed to execute an
UPDATE
or
@@ -1602,27 +2685,46 @@ statement unless you specify a key const
WHERE
clause or provide a
LIMIT
-clause (or both). For example:
+clause (or both)\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
UPDATE \fItbl_name\fR SET \fInot_key_column\fR=\fIval\fR WHERE \fIkey_column\fR=\fIval\fR;
UPDATE \fItbl_name\fR SET \fInot_key_column\fR=\fIval\fR LIMIT 1;
.fi
+.if n \{\
.RE
-.TP 3n
-\(bu
+.\}
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The server limits all large
SELECT
results to 1,000 rows unless the statement includes a
LIMIT
-clause.
-.TP 3n
-\(bu
+clause\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The server aborts multiple\-table
SELECT
-statements that probably need to examine more than 1,000,000 row combinations.
-.sp
+statements that probably need to examine more than 1,000,000 row combinations\&.
.RE
.PP
To specify limits different from 1,000 and 1,000,000, you can override the defaults by using the
@@ -1631,69 +2733,79 @@ and
\fB\-\-max_join_size\fR
options:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \-\-safe\-updates \-\-select_limit=500 \-\-max_join_size=10000\fR
.fi
+.if n \{\
.RE
-.\" end of SS subsection "Using the \-\-safe\-updates Option"
+.\}
.SS "Disabling mysql Auto\-Reconnect"
.PP
If the
\fBmysql\fR
-client loses its connection to the server while sending a statement, it immediately and automatically tries to reconnect once to the server and send the statement again. However, even if
+client loses its connection to the server while sending a statement, it immediately and automatically tries to reconnect once to the server and send the statement again\&. However, even if
\fBmysql\fR
-succeeds in reconnecting, your first connection has ended and all your previous session objects and settings are lost: temporary tables, the autocommit mode, and user\-defined and session variables. Also, any current transaction rolls back. This behavior may be dangerous for you, as in the following example where the server was shut down and restarted between the first and second statements without you knowing it:
+succeeds in reconnecting, your first connection has ended and all your previous session objects and settings are lost: temporary tables, the autocommit mode, and user\-defined and session variables\&. Also, any current transaction rolls back\&. This behavior may be dangerous for you, as in the following example where the server was shut down and restarted between the first and second statements without you knowing it:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSET @a=1;\fR
-Query OK, 0 rows affected (0.05 sec)
+Query OK, 0 rows affected (0\&.05 sec)
mysql> \fBINSERT INTO t VALUES(@a);\fR
ERROR 2006: MySQL server has gone away
-No connection. Trying to reconnect...
+No connection\&. Trying to reconnect\&.\&.\&.
Connection id: 1
Current database: test
-Query OK, 1 row affected (1.30 sec)
+Query OK, 1 row affected (1\&.30 sec)
mysql> \fBSELECT * FROM t;\fR
+\-\-\-\-\-\-+
| a |
+\-\-\-\-\-\-+
| NULL |
+\-\-\-\-\-\-+
-1 row in set (0.05 sec)
+1 row in set (0\&.05 sec)
.fi
+.if n \{\
.RE
+.\}
.PP
The
@a
-user variable has been lost with the connection, and after the reconnection it is undefined. If it is important to have
+user variable has been lost with the connection, and after the reconnection it is undefined\&. If it is important to have
\fBmysql\fR
terminate with an error if the connection has been lost, you can start the
\fBmysql\fR
client with the
\fB\-\-skip\-reconnect\fR
-option.
+option\&.
.PP
For more information about auto\-reconnect and its effect on state information when a reconnection occurs, see
-Section\ 21.10.11, \(lqControlling Automatic Reconnection Behavior\(rq.
-.\" end of SS subsection "Disabling mysql Auto\-Reconnect"
+Section\ \&21.10.11, \(lqControlling Automatic Reconnection Behavior\(rq\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ Bug#25946
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#25946
+.RS 4
\%http://bugs.mysql.com/25946
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql.server.1'
--- a/man/mysql.server.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql.server.1 2009-09-16 12:03:18 +0000
@@ -1,111 +1,192 @@
+'\" t
.\" Title: \fBmysql.server\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL.SERVER\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL\&.SERVER\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql.server
.SH "NAME"
mysql.server \- MySQL server startup script
.SH "SYNOPSIS"
-.HP 19
+.HP \w'\fBmysql\ {start|stop}\fR\ 'u
\fBmysql {start|stop}\fR
.SH "DESCRIPTION"
.PP
MySQL distributions on Unix include a script named
-\fBmysql.server\fR. It can be used on systems such as Linux and Solaris that use System V\-style run directories to start and stop system services. It is also used by the Mac OS X Startup Item for MySQL.
+\fBmysql\&.server\fR\&. It can be used on systems such as Linux and Solaris that use System V\-style run directories to start and stop system services\&. It is also used by the Mac OS X Startup Item for MySQL\&.
.PP
-\fBmysql.server\fR
+\fBmysql\&.server\fR
can be found in the
-\fIsupport\-files\fR
-directory under your MySQL installation directory or in a MySQL source distribution.
+support\-files
+directory under your MySQL installation directory or in a MySQL source distribution\&.
.PP
-If you use the Linux server RPM package (MySQL\-server\-\fIVERSION\fR.rpm), the
-\fBmysql.server\fR
+If you use the Linux server RPM package (MySQL\-server\-\fIVERSION\fR\&.rpm), the
+\fBmysql\&.server\fR
script will be installed in the
-\fI/etc/init.d\fR
+/etc/init\&.d
directory with the name
-\fImysql\fR. You need not install it manually. See
-Section\ 2.4, \(lqInstalling MySQL from RPM Packages on Linux\(rq, for more information on the Linux RPM packages.
+mysql\&. You need not install it manually\&. See
+Section\ \&2.4, \(lqInstalling MySQL from RPM Packages on Linux\(rq, for more information on the Linux RPM packages\&.
.PP
Some vendors provide RPM packages that install a startup script under a different name such as
-\fBmysqld\fR.
+\fBmysqld\fR\&.
.PP
If you install MySQL from a source distribution or using a binary distribution format that does not install
-\fBmysql.server\fR
-automatically, you can install it manually. Instructions are provided in
-Section\ 2.11.2.2, \(lqStarting and Stopping MySQL Automatically\(rq.
+\fBmysql\&.server\fR
+automatically, you can install it manually\&. Instructions are provided in
+Section\ \&2.11.2.2, \(lqStarting and Stopping MySQL Automatically\(rq\&.
.PP
-\fBmysql.server\fR
+\fBmysql\&.server\fR
reads options from the
-[mysql.server]
+[mysql\&.server]
and
[mysqld]
-sections of option files. For backward compatibility, it also reads
+sections of option files\&. For backward compatibility, it also reads
[mysql_server]
sections, although you should rename such sections to
-[mysql.server]
-when using MySQL 5.1.
+[mysql\&.server]
+when using MySQL 5\&.1\&.
.PP
-\fBmysql.server\fR
-understands the following options:
-.TP 3n
-\(bu
+\fBmysql\&.server\fR
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: basedir option
+.\" basedir option: mysql.server
\fB\-\-basedir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL installation directory.
-.TP 3n
-\(bu
+The path to the MySQL installation directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: datadir option
+.\" datadir option: mysql.server
\fB\-\-datadir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL data directory.
-.TP 3n
-\(bu
+The path to the MySQL data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: pid-file option
+.\" pid-file option: mysql.server
\fB\-\-pid\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The path name of the file in which the server should write its process ID.
-.TP 3n
-\(bu
+The path name of the file in which the server should write its process ID\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: service-startup-timeout option
+.\" service-startup-timeout option: mysql.server
\fB\-\-service\-startup\-timeout=\fR\fB\fIfile_name\fR\fR
.sp
-How long in seconds to wait for confirmation of server startup. If the server does not start within this time,
-\fBmysql.server\fR
-exits with an error. The default value is 900. A value of 0 means not to wait at all for startup. Negative values mean to wait forever (no timeout). This option was added in MySQL 5.1.17. Before that, a value of 900 is always used.
-.TP 3n
-\(bu
+How long in seconds to wait for confirmation of server startup\&. If the server does not start within this time,
+\fBmysql\&.server\fR
+exits with an error\&. The default value is 900\&. A value of 0 means not to wait at all for startup\&. Negative values mean to wait forever (no timeout)\&. This option was added in MySQL 5\&.1\&.17\&. Before that, a value of 900 is always used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: use-mysqld_safe option
+.\" use-mysqld_safe option: mysql.server
\fB\-\-use\-mysqld_safe\fR
.sp
Use
\fBmysqld_safe\fR
-to start the server. This is the default.
-.TP 3n
-\(bu
+to start the server\&. This is the default\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: use-manager option
+.\" use-manager option: mysql.server
\fB\-\-use\-manager\fR
.sp
-Use Instance Manager to start the server.
-.TP 3n
-\(bu
+Use Instance Manager to start the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: user option
+.\" user option: mysql.server
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
The login user name to use for running
-\fBmysqld\fR.
+\fBmysqld\fR\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_client_test.1'
--- a/man/mysql_client_test.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_client_test.1 2009-09-16 12:03:18 +0000
@@ -1,166 +1,336 @@
+'\" t
.\" Title: \fBmysql_client_test\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/27/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/08/2009
.\" Manual: MySQL Database System
.\" Source: MySQL
+.\" Language: English
.\"
-.TH "\fBMYSQL_CLIENT_TEST" "1" "03/27/2009" "MySQL" "MySQL Database System"
+.TH "\FBMYSQL_CLIENT_TEST" "1" "08/08/2009" "MySQL" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_client_test
+.\" mysql_client_test_embedded
.SH "NAME"
mysql_client_test \- test client API
.br
mysql_client_test_embedded \- test client API for embedded server
.SH "SYNOPSIS"
-.HP 44
-\fBmysql_client_test [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] ...\fR
-.HP 53
-\fBmysql_client_test_embedded [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] ...\fR
+.HP \w'\fBmysql_client_test\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fItest_name\fR\fR\fB]\ \&.\&.\&.\fR\ 'u
+\fBmysql_client_test [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] \&.\&.\&.\fR
+.HP \w'\fBmysql_client_test_embedded\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fItest_name\fR\fR\fB]\ \&.\&.\&.\fR\ 'u
+\fBmysql_client_test_embedded [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBmysql_client_test\fR
program is used for testing aspects of the MySQL client API that cannot be tested using
\fBmysqltest\fR
-and its test language.
+and its test language\&.
\fBmysql_client_test_embedded\fR
-is similar but used for testing the embedded server. Both programs are run as part of the test suite.
+is similar but used for testing the embedded server\&. Both programs are run as part of the test suite\&.
.PP
The source code for the programs can be found in in
-\fItest/mysql_client_test.c\fR
-in a source distribution. The program serves as a good source of examples illustrating how to use various features of the client API.
+test/mysql_client_test\&.c
+in a source distribution\&. The program serves as a good source of examples illustrating how to use various features of the client API\&.
.PP
\fBmysql_client_test\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: help option
+.\" help option: mysql_client_test
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-b \fR\fB\fIdir_name\fR\fR,
+.\" mysql_client_test: basedir option
+.\" basedir option: mysql_client_test
\fB\-\-basedir=\fR\fB\fIdir_name\fR\fR
.sp
-The base directory for the tests.
-.TP 3n
-\(bu
+The base directory for the tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-t \fR\fB\fIcount\fR\fR,
+.\" mysql_client_test: count option
+.\" count option: mysql_client_test
\fB\-\-count=\fR\fB\fIcount\fR\fR
.sp
-The number of times to execute the tests.
-.TP 3n
-\(bu
+The number of times to execute the tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: database option
+.\" database option: mysql_client_test
\fB\-\-database=\fR\fB\fIdb_name\fR\fR,
\fB\-D \fR\fB\fIdb_name\fR\fR
.sp
-The database to use.
-.TP 3n
-\(bu
+The database to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: debug option
+.\" debug option: mysql_client_test
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-#[\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log if MySQL is built with debugging support. The default
+Write a debugging log if MySQL is built with debugging support\&. The default
\fIdebug_options\fR
value is
-\'d:t:o,/tmp/mysql_client_test.trace'.
-.TP 3n
-\(bu
+\'d:t:o,/tmp/mysql_client_test\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-g \fR\fB\fIoption\fR\fR,
+.\" mysql_client_test: getopt-ll-test option
+.\" getopt-ll-test option: mysql_client_test
\fB\-\-getopt\-ll\-test=\fR\fB\fIoption\fR\fR
.sp
Option to use for testing bugs in the
getopt
-library.
-.TP 3n
-\(bu
+library\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: host option
+.\" host option: mysql_client_test
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: password option
+.\" password option: mysql_client_test
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
+.\" mysql_client_test: password option
+.\" password option: mysql_client_test
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
-.TP 3n
-\(bu
+option on the command line, you are prompted for one\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: port option
+.\" port option: mysql_client_test
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-A \fR\fB\fIarg\fR\fR,
+.\" mysql_client_test: server-arg option
+.\" server-arg option: mysql_client_test
\fB\-\-server\-arg=\fR\fB\fIarg\fR\fR
.sp
-Argument to send to the embedded server.
-.TP 3n
-\(bu
+Argument to send to the embedded server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-T\fR,
\fB\-\-show\-tests\fR
.sp
-Show all test names.
-.TP 3n
-\(bu
+Show all test names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: silent option
+.\" silent option: mysql_client_test
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Be more silent.
-.TP 3n
-\(bu
+Be more silent\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: socket option
+.\" socket option: mysql_client_test
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
The socket file to use when connecting to
localhost
-(which is the default host).
-.TP 3n
-\(bu
+(which is the default host)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-c\fR,
\fB\-\-testcase\fR
.sp
The option may disable some code when run as a
-\fBmysql\-test\-run.pl\fR
-test case.
-.TP 3n
-\(bu
+\fBmysql\-test\-run\&.pl\fR
+test case\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: user option
+.\" user option: mysql_client_test
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-v \fR\fB\fIdir_name\fR\fR,
+.\" mysql_client_test: vardir option
+.\" vardir option: mysql_client_test
\fB\-\-vardir=\fR\fB\fIdir_name\fR\fR
.sp
-The data directory for tests. The default is
-\fImysql\-test/var\fR.
+The data directory for tests\&. The default is
+mysql\-test/var\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_config.1'
--- a/man/mysql_config.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_config.1 2009-09-16 12:03:18 +0000
@@ -1,85 +1,186 @@
+'\" t
.\" Title: \fBmysql_config\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_CONFIG\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_CONFIG\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_config
.SH "NAME"
mysql_config \- get compile options for compiling clients
.SH "SYNOPSIS"
-.HP 21
+.HP \w'\fBmysql_config\ \fR\fB\fIoptions\fR\fR\ 'u
\fBmysql_config \fR\fB\fIoptions\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql_config\fR
-provides you with useful information for compiling your MySQL client and connecting it to MySQL.
+provides you with useful information for compiling your MySQL client and connecting it to MySQL\&.
.PP
\fBmysql_config\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: cflags option
+.\" cflags option: mysql_config
\fB\-\-cflags\fR
.sp
Compiler flags to find include files and critical compiler flags and defines used when compiling the
libmysqlclient
-library. The options returned are tied to the specific compiler that was used when the library was created and might clash with the settings for your own compiler. Use
+library\&. The options returned are tied to the specific compiler that was used when the library was created and might clash with the settings for your own compiler\&. Use
\fB\-\-include\fR
-for more portable options that contain only include paths.
-.TP 3n
-\(bu
+for more portable options that contain only include paths\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: include option
+.\" include option: mysql_config
\fB\-\-include\fR
.sp
-Compiler options to find MySQL include files.
-.TP 3n
-\(bu
+Compiler options to find MySQL include files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: libmysqld-libs option
+.\" libmysqld-libs option: mysql_config
+.\" mysql_config: embedded option
+.\" embedded option: mysql_config
\fB\-\-libmysqld\-libs\fR,
\fB\-\-embedded\fR
.sp
-Libraries and options required to link with the MySQL embedded server.
-.TP 3n
-\(bu
+Libraries and options required to link with the MySQL embedded server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: libs option
+.\" libs option: mysql_config
\fB\-\-libs\fR
.sp
-Libraries and options required to link with the MySQL client library.
-.TP 3n
-\(bu
+Libraries and options required to link with the MySQL client library\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: libs_r option
+.\" libs_r option: mysql_config
\fB\-\-libs_r\fR
.sp
-Libraries and options required to link with the thread\-safe MySQL client library.
-.TP 3n
-\(bu
+Libraries and options required to link with the thread\-safe MySQL client library\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: plugindir option
+.\" plugindir option: mysql_config
\fB\-\-plugindir\fR
.sp
-The default plugin directory path name, defined when configuring MySQL. This option was added in MySQL 5.1.24.
-.TP 3n
-\(bu
+The default plugin directory path name, defined when configuring MySQL\&. This option was added in MySQL 5\&.1\&.24\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: port option
+.\" port option: mysql_config
\fB\-\-port\fR
.sp
-The default TCP/IP port number, defined when configuring MySQL.
-.TP 3n
-\(bu
+The default TCP/IP port number, defined when configuring MySQL\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: socket option
+.\" socket option: mysql_config
\fB\-\-socket\fR
.sp
-The default Unix socket file, defined when configuring MySQL.
-.TP 3n
-\(bu
-\fB\-\-version\fR
+The default Unix socket file, defined when configuring MySQL\&.
+.RE
.sp
-Version number for the MySQL distribution.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: version option
+.\" version option: mysql_config
+\fB\-\-version\fR
.sp
+Version number for the MySQL distribution\&.
.RE
.PP
If you invoke
\fBmysql_config\fR
with no options, it displays a list of all options that it supports, and their values:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_config\fR
Usage: /usr/local/mysql/bin/mysql_config [options]
@@ -90,42 +191,50 @@ Options:
\-lcrypt \-lnsl \-lm \-L/usr/lib \-lssl \-lcrypto]
\-\-libs_r [\-L/usr/local/mysql/lib/mysql \-lmysqlclient_r
\-lpthread \-lz \-lcrypt \-lnsl \-lm \-lpthread]
- \-\-socket [/tmp/mysql.sock]
+ \-\-socket [/tmp/mysql\&.sock]
\-\-port [3306]
- \-\-version [4.0.16]
+ \-\-version [4\&.0\&.16]
\-\-libmysqld\-libs [\-L/usr/local/mysql/lib/mysql \-lmysqld \-lpthread \-lz
\-lcrypt \-lnsl \-lm \-lpthread \-lrt]
.fi
+.if n \{\
.RE
+.\}
.PP
You can use
\fBmysql_config\fR
-within a command line to include the value that it displays for a particular option. For example, to compile a MySQL client program, use
+within a command line to include the value that it displays for a particular option\&. For example, to compile a MySQL client program, use
\fBmysql_config\fR
as follows:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBCFG=/usr/local/mysql/bin/mysql_config\fR
-shell> \fBsh \-c "gcc \-o progname `$CFG \-\-include` progname.c `$CFG \-\-libs`"\fR
+shell> \fBsh \-c "gcc \-o progname `$CFG \-\-include` progname\&.c `$CFG \-\-libs`"\fR
.fi
+.if n \{\
.RE
+.\}
.PP
When you use
\fBmysql_config\fR
-this way, be sure to invoke it within backtick (\(lq`\(rq) characters. That tells the shell to execute it and substitute its output into the surrounding command.
+this way, be sure to invoke it within backtick (\(lq`\(rq) characters\&. That tells the shell to execute it and substitute its output into the surrounding command\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_convert_table_format.1'
--- a/man/mysql_convert_table_format.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_convert_table_format.1 2009-09-16 12:03:18 +0000
@@ -1,117 +1,232 @@
+'\" t
.\" Title: \fBmysql_convert_table_format\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_CONVERT_TAB" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_CONVERT_TAB" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_convert_table_format
.SH "NAME"
mysql_convert_table_format \- convert tables to use a given storage engine
.SH "SYNOPSIS"
-.HP 45
+.HP \w'\fBmysql_convert_table_format\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIdb_name\fR\fR\ 'u
\fBmysql_convert_table_format [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql_convert_table_format\fR
converts the tables in a database to use a particular storage engine (MyISAM
-by default).
+by default)\&.
\fBmysql_convert_table_format\fR
is written in Perl and requires that the
DBI
and
DBD::mysql
Perl modules be installed (see
-Section\ 2.15, \(lqPerl Installation Notes\(rq).
+Section\ \&2.15, \(lqPerl Installation Notes\(rq)\&.
.PP
Invoke
\fBmysql_convert_table_format\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_convert_table_format [\fR\fB\fIoptions\fR\fR\fB]\fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fIdb_name\fR
-argument indicates the database containing the tables to be converted.
+argument indicates the database containing the tables to be converted\&.
.PP
\fBmysql_convert_table_format\fR
-understands the options described in the following list.
-.TP 3n
-\(bu
+supports the options described in the following list\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: help option
+.\" help option: mysql_convert_table_format
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: force option
+.\" force option: mysql_convert_table_format
\fB\-\-force\fR
.sp
-Continue even if errors occur.
-.TP 3n
-\(bu
+Continue even if errors occur\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: host option
+.\" host option: mysql_convert_table_format
\fB\-\-host=\fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: password option
+.\" password option: mysql_convert_table_format
\fB\-\-password=\fR\fB\fIpassword\fR\fR
.sp
-The password to use when connecting to the server. Note that the password value is not optional for this option, unlike for other MySQL programs. You can use an option file to avoid giving the password on the command line.
+The password to use when connecting to the server\&. Note that the password value is not optional for this option, unlike for other MySQL programs\&. You can use an option file to avoid giving the password on the command line\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: port option
+.\" port option: mysql_convert_table_format
\fB\-\-port=\fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: socket option
+.\" socket option: mysql_convert_table_format
\fB\-\-socket=\fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: type option
+.\" type option: mysql_convert_table_format
\fB\-\-type=\fR\fB\fIengine_name\fR\fR
.sp
-Specify the storage engine that the tables should be converted to use. The default is
+Specify the storage engine that the tables should be converted to use\&. The default is
MyISAM
-if this option is not given.
-.TP 3n
-\(bu
+if this option is not given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: user option
+.\" user option: mysql_convert_table_format
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: verbose option
+.\" verbose option: mysql_convert_table_format
\fB\-\-verbose\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: version option
+.\" version option: mysql_convert_table_format
\fB\-\-version\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_find_rows.1'
--- a/man/mysql_find_rows.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_find_rows.1 2009-09-16 12:03:18 +0000
@@ -1,20 +1,29 @@
+'\" t
.\" Title: \fBmysql_find_rows\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_FIND_ROWS\\F" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_FIND_ROWS\F" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_find_rows
.SH "NAME"
mysql_find_rows \- extract SQL statements from files
.SH "SYNOPSIS"
-.HP 42
-\fBmysql_find_rows [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIfile_name\fR\fR\fB ...]\fR
+.HP \w'\fBmysql_find_rows\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIfile_name\fR\fR\fB\ \&.\&.\&.]\fR\ 'u
+\fBmysql_find_rows [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIfile_name\fR\fR\fB \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
\fBmysql_find_rows\fR
@@ -22,77 +31,137 @@ reads files containing SQL statements an
USE \fIdb_name\fR
or
SET
-statements. The utility was written for use with update log files (as used prior to MySQL 5.0) and as such expects statements to be terminated with semicolon (;) characters. It may be useful with other files that contain SQL statements as long as statements are terminated with semicolons.
+statements\&. The utility was written for use with update log files (as used prior to MySQL 5\&.0) and as such expects statements to be terminated with semicolon (;) characters\&. It may be useful with other files that contain SQL statements as long as statements are terminated with semicolons\&.
.PP
Invoke
\fBmysql_find_rows\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql_find_rows [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIfile_name\fR\fR\fB ...]\fR
+shell> \fBmysql_find_rows [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIfile_name\fR\fR\fB \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Each
\fIfile_name\fR
-argument should be the name of file containing SQL statements. If no file names are given,
+argument should be the name of file containing SQL statements\&. If no file names are given,
\fBmysql_find_rows\fR
-reads the standard input.
+reads the standard input\&.
.PP
Examples:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql_find_rows \-\-regexp=problem_table \-\-rows=20 < update.log
-mysql_find_rows \-\-regexp=problem_table update\-log.1 update\-log.2
+mysql_find_rows \-\-regexp=problem_table \-\-rows=20 < update\&.log
+mysql_find_rows \-\-regexp=problem_table update\-log\&.1 update\-log\&.2
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysql_find_rows\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: help option
+.\" help option: mysql_find_rows
\fB\-\-help\fR,
\fB\-\-Information\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: regexp option
+.\" regexp option: mysql_find_rows
\fB\-\-regexp=\fR\fB\fIpattern\fR\fR
.sp
-Display queries that match the pattern.
-.TP 3n
-\(bu
+Display queries that match the pattern\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: rows option
+.\" rows option: mysql_find_rows
\fB\-\-rows=\fR\fB\fIN\fR\fR
.sp
Quit after displaying
\fIN\fR
-queries.
-.TP 3n
-\(bu
+queries\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: skip-use-db option
+.\" skip-use-db option: mysql_find_rows
\fB\-\-skip\-use\-db\fR
.sp
Do not include
USE \fIdb_name\fR
-statements in the output.
-.TP 3n
-\(bu
+statements in the output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: start_row option
+.\" start_row option: mysql_find_rows
\fB\-\-start_row=\fR\fB\fIN\fR\fR
.sp
-Start output from this row.
+Start output from this row\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_fix_extensions.1'
--- a/man/mysql_fix_extensions.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_fix_extensions.1 2009-09-16 12:03:18 +0000
@@ -1,19 +1,28 @@
+'\" t
.\" Title: \fBmysql_fix_extensions\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_FIX_EXTENSI" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_FIX_EXTENSI" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_fix_extensions
.SH "NAME"
mysql_fix_extensions \- normalize table file name extensions
.SH "SYNOPSIS"
-.HP 30
+.HP \w'\fBmysql_fix_extensions\ \fR\fB\fIdata_dir\fR\fR\ 'u
\fBmysql_fix_extensions \fR\fB\fIdata_dir\fR\fR
.SH "DESCRIPTION"
.PP
@@ -21,42 +30,48 @@ mysql_fix_extensions \- normalize table
converts the extensions for
MyISAM
(or
-ISAM) table files to their canonical forms. It looks for files with extensions matching any lettercase variant of
-\fI.frm\fR,
-\fI.myd\fR,
-\fI.myi\fR,
-\fI.isd\fR, and
-\fI.ism\fR
+ISAM) table files to their canonical forms\&. It looks for files with extensions matching any lettercase variant of
+\&.frm,
+\&.myd,
+\&.myi,
+\&.isd, and
+\&.ism
and renames them to have extensions of
-\fI.frm\fR,
-\fI.MYD\fR,
-\fI.MYI\fR,
-\fI.ISD\fR, and
-\fI.ISM\fR, respectively. This can be useful after transferring the files from a system with case\-insensitive file names (such as Windows) to a system with case\-sensitive file names.
+\&.frm,
+\&.MYD,
+\&.MYI,
+\&.ISD, and
+\&.ISM, respectively\&. This can be useful after transferring the files from a system with case\-insensitive file names (such as Windows) to a system with case\-sensitive file names\&.
.PP
Invoke
\fBmysql_fix_extensions\fR
like this, where
\fIdata_dir\fR
-is the path name to the MySQL data directory.
+is the path name to the MySQL data directory\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_fix_extensions \fR\fB\fIdata_dir\fR\fR
.fi
+.if n \{\
.RE
+.\}
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_fix_privilege_tables.1'
--- a/man/mysql_fix_privilege_tables.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_fix_privilege_tables.1 2009-09-16 12:03:18 +0000
@@ -1,123 +1,173 @@
+'\" t
.\" Title: \fBmysql_fix_privilege_tables\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_FIX_PRIVILE" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_FIX_PRIVILE" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_fix_privilege_tables
+.\" upgrading: grant tables
+.\" grant tables: upgrading
.SH "NAME"
mysql_fix_privilege_tables \- upgrade MySQL system tables
.SH "SYNOPSIS"
-.HP 52
+.HP \w'\fBmysql_fix_privilege_tables\ \-\-password=\fR\fB\fIroot_password\fR\fR\ 'u
\fBmysql_fix_privilege_tables \-\-password=\fR\fB\fIroot_password\fR\fR
.SH "DESCRIPTION"
-.PP
-Some releases of MySQL introduce changes to the structure of the system tables in the
-mysql
-database to add new privileges or support new features. When you update to a new version of MySQL, you should update your system tables as well to make sure that their structure is up to date. Otherwise, there might be capabilities that you cannot take advantage of. First, make a backup of your
-mysql
-database, and then use the following procedure.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-As of MySQL 5.1.7,
+In MySQL 5\&.1\&.7,
\fBmysql_fix_privilege_tables\fR
-is superseded by
-\fBmysql_upgrade\fR, which should be used instead. See
-\fBmysql_upgrade\fR(1).
+was superseded by
+\fBmysql_upgrade\fR, which should be used instead\&. See
+\fBmysql_upgrade\fR(1)\&.
+.sp .5v
+.RE
+.PP
+Some releases of MySQL introduce changes to the structure of the system tables in the
+mysql
+database to add new privileges or support new features\&. When you update to a new version of MySQL, you should update your system tables as well to make sure that their structure is up to date\&. Otherwise, there might be capabilities that you cannot take advantage of\&.
+.PP
+\fBmysql_fix_privilege_tables\fR
+is an older script that previously was used to uprade the system tables in the
+mysql
+database after a MySQL upgrade\&.
+.PP
+Before running
+\fBmysql_fix_privilege_tables\fR, make a backup of your
+mysql
+database\&.
.PP
On Unix or Unix\-like systems, update the system tables by running the
\fBmysql_fix_privilege_tables\fR
script:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_fix_privilege_tables\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-You must run this script while the server is running. It attempts to connect to the server running on the local host as
-root. If your
+You must run this script while the server is running\&. It attempts to connect to the server running on the local host as
+root\&. If your
root
account requires a password, indicate the password on the command line like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_fix_privilege_tables \-\-password=\fR\fB\fIroot_password\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fBmysql_fix_privilege_tables\fR
-script performs any actions necessary to convert your system tables to the current format. You might see some
+script performs any actions necessary to convert your system tables to the current format\&. You might see some
Duplicate column name
-warnings as it runs; you can ignore them.
+warnings as it runs; you can ignore them\&.
.PP
-After running the script, stop the server and restart it so that it uses any changes that were made to the system tables.
+After running the script, stop the server and restart it so that any changes made to the system tables take effect\&.
.PP
On Windows systems, MySQL distributions include a
-\fImysql_fix_privilege_tables.sql\fR
+mysql_fix_privilege_tables\&.sql
SQL script that you can run using the
\fBmysql\fR
-client. For example, if your MySQL installation is located at
-\fIC:\\Program Files\\MySQL\\MySQL Server 5.1\fR, the commands look like this:
+client\&. For example, if your MySQL installation is located at
+C:\eProgram Files\eMySQL\eMySQL Server 5\&.1, the commands look like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-C:\\> \fBcd "C:\\Program Files\\MySQL\\MySQL Server 5.1"\fR
-C:\\> \fBbin\\mysql \-u root \-p mysql\fR
-mysql> \fBSOURCE share/mysql_fix_privilege_tables.sql\fR
+C:\e> \fBcd "C:\eProgram Files\eMySQL\eMySQL Server 5\&.1"\fR
+C:\e> \fBbin\emysql \-u root \-p mysql\fR
+mysql> \fBSOURCE share/mysql_fix_privilege_tables\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-Prior to version 5.1.17, this script is found in the
-\fIscripts\fR
-directory.
+Prior to version 5\&.1\&.17, this script is found in the
+scripts
+directory\&.
+.sp .5v
+.RE
.PP
The
\fBmysql\fR
command will prompt you for the
root
-password; enter it when prompted.
+password; enter it when prompted\&.
.PP
-If your installation is located in some other directory, adjust the path names appropriately.
+If your installation is located in some other directory, adjust the path names appropriately\&.
.PP
As with the Unix procedure, you might see some
Duplicate column name
warnings as
\fBmysql\fR
processes the statements in the
-\fImysql_fix_privilege_tables.sql\fR
-script; you can ignore them.
+mysql_fix_privilege_tables\&.sql
+script; you can ignore them\&.
.PP
-After running the script, stop the server and restart it.
+After running the script, stop the server and restart it\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_install_db.1'
--- a/man/mysql_install_db.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_install_db.1 2009-09-16 12:03:18 +0000
@@ -1,33 +1,46 @@
+'\" t
.\" Title: \fBmysql_install_db\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_INSTALL_DB\\" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_INSTALL_DB\" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_install_db
.SH "NAME"
mysql_install_db \- initialize MySQL data directory
.SH "SYNOPSIS"
-.HP 27
+.HP \w'\fBmysql_install_db\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysql_install_db [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysql_install_db\fR
-initializes the MySQL data directory and creates the system tables that it contains, if they do not exist.
+initializes the MySQL data directory and creates the system tables that it contains, if they do not exist\&.
.PP
To invoke
\fBmysql_install_db\fR, use the following syntax:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_install_db [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Because the MySQL server,
\fBmysqld\fR, needs to access the data directory when it runs later, you should either run
@@ -40,21 +53,25 @@ and use the
\fB\-\-user\fR
option to indicate the user name that
\fBmysqld\fR
-will run as. It might be necessary to specify other options such as
+will run as\&. It might be necessary to specify other options such as
\fB\-\-basedir\fR
or
\fB\-\-datadir\fR
if
\fBmysql_install_db\fR
-does not use the correct locations for the installation directory or data directory. For example:
+does not use the correct locations for the installation directory or data directory\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBbin/mysql_install_db \-\-user=mysql \\\fR
- \fB\-\-basedir=/opt/mysql/mysql \\\fR
+shell> \fBbin/mysql_install_db \-\-user=mysql \e\fR
+ \fB\-\-basedir=/opt/mysql/mysql \e\fR
\fB\-\-datadir=/opt/mysql/mysql/data\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysql_install_db\fR
needs to invoke
@@ -64,90 +81,184 @@ with the
and
\fB\-\-skip\-grant\-tables\fR
options (see
-Section\ 2.10.2, \(lqTypical \fBconfigure\fR Options\(rq). If MySQL was configured with the
+Section\ \&2.10.2, \(lqTypical configure Options\(rq)\&. If MySQL was configured with the
\fB\-\-disable\-grant\-options\fR
option,
\fB\-\-bootstrap\fR
and
\fB\-\-skip\-grant\-tables\fR
-will be disabled. To handle this, set the
+will be disabled\&. To handle this, set the
MYSQLD_BOOTSTRAP
-environment variable to the full path name of a server that has all options enabled.
+environment variable to the full path name of a server that has all options enabled\&.
\fBmysql_install_db\fR
-will use that server.
+will use that server\&.
.PP
\fBmysql_install_db\fR
-supports the options in the following list. It also reads option files and supports the options for processing them described at
-Section\ 4.2.3.2.1, \(lqCommand\-Line Options that Affect Option\-File Handling\(rq.
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: basedir option
+.\" basedir option: mysql_install_db
\fB\-\-basedir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL installation directory.
-.TP 3n
-\(bu
+The path to the MySQL installation directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: force option
+.\" force option: mysql_install_db
\fB\-\-force\fR
.sp
-Causes
+Cause
\fBmysql_install_db\fR
-to run even if DNS does not work. In that case, grant table entries that normally use host names will use IP addresses.
-.TP 3n
-\(bu
+to run even if DNS does not work\&. In that case, grant table entries that normally use host names will use IP addresses\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: datadir option
+.\" datadir option: mysql_install_db
+.\" mysql_install_db: ldata option
+.\" ldata option: mysql_install_db
\fB\-\-datadir=\fR\fB\fIpath\fR\fR,
\fB\-\-ldata=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL data directory.
-.TP 3n
-\(bu
+The path to the MySQL data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: rpm option
+.\" rpm option: mysql_install_db
\fB\-\-rpm\fR
.sp
-For internal use. This option is used by RPM files during the MySQL installation process.
-.TP 3n
-\(bu
+For internal use\&. This option is used by RPM files during the MySQL installation process\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: skip-name-resolve option
+.\" skip-name-resolve option: mysql_install_db
\fB\-\-skip\-name\-resolve\fR
.sp
-Use IP addresses rather than host names when creating grant table entries. This option can be useful if your DNS does not work.
-.TP 3n
-\(bu
+Use IP addresses rather than host names when creating grant table entries\&. This option can be useful if your DNS does not work\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: srcdir option
+.\" srcdir option: mysql_install_db
\fB\-\-srcdir=\fR\fB\fIpath\fR\fR
.sp
-For internal use. The directory under which
+For internal use\&. The directory under which
\fBmysql_install_db\fR
-looks for support files such as the error message file and the file for populating the help tables. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+looks for support files such as the error message file and the file for populating the help tables\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: user option
+.\" user option: mysql_install_db
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
The login user name to use for running
-\fBmysqld\fR. Files and directories created by
+\fBmysqld\fR\&. Files and directories created by
\fBmysqld\fR
-will be owned by this user. You must be
+will be owned by this user\&. You must be
root
-to use this option. By default,
+to use this option\&. By default,
\fBmysqld\fR
-runs using your current login name and files and directories that it creates will be owned by you.
-.TP 3n
-\(bu
+runs using your current login name and files and directories that it creates will be owned by you\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: verbose option
+.\" verbose option: mysql_install_db
\fB\-\-verbose\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: windows option
+.\" windows option: mysql_install_db
\fB\-\-windows\fR
.sp
-For internal use. This option is used for creating Windows distributions.
+For internal use\&. This option is used for creating Windows distributions\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_secure_installation.1'
--- a/man/mysql_secure_installation.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_secure_installation.1 2009-09-16 12:03:18 +0000
@@ -1,67 +1,112 @@
+'\" t
.\" Title: \fBmysql_secure_installation\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_SECURE_INST" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_SECURE_INST" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_secure_installation
.SH "NAME"
mysql_secure_installation \- improve MySQL installation security
.SH "SYNOPSIS"
-.HP 26
+.HP \w'\fBmysql_secure_installation\fR\ 'u
\fBmysql_secure_installation\fR
.SH "DESCRIPTION"
.PP
This program enables you to improve the security of your MySQL installation in the following ways:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can set a password for
root
-accounts.
-.TP 3n
-\(bu
+accounts\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can remove
root
-accounts that are accessible from outside the local host.
-.TP 3n
-\(bu
-You can remove anonymous\-user accounts.
-.TP 3n
-\(bu
+accounts that are accessible from outside the local host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+You can remove anonymous\-user accounts\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can remove the
test
-database, which by default can be accessed by anonymous users.
-.sp
+database, which by default can be accessed by anonymous users\&.
.RE
.PP
Invoke
\fBmysql_secure_installation\fR
without arguments:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_secure_installation\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-The script will prompt you to determine which actions to perform.
+The script will prompt you to determine which actions to perform\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_setpermission.1'
--- a/man/mysql_setpermission.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_setpermission.1 2009-09-16 12:03:18 +0000
@@ -1,46 +1,59 @@
+'\" t
.\" Title: \fBmysql_setpermission\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_SETPERMISSI" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_SETPERMISSI" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_setpermission
.SH "NAME"
mysql_setpermission \- interactively set permissions in grant tables
.SH "SYNOPSIS"
-.HP 30
+.HP \w'\fBmysql_setpermission\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysql_setpermission [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysql_setpermission\fR
-is a Perl script that was originally written and contributed by Luuk de Boer. It interactively sets permissions in the MySQL grant tables.
+is a Perl script that was originally written and contributed by Luuk de Boer\&. It interactively sets permissions in the MySQL grant tables\&.
\fBmysql_setpermission\fR
is written in Perl and requires that the
DBI
and
DBD::mysql
Perl modules be installed (see
-Section\ 2.15, \(lqPerl Installation Notes\(rq).
+Section\ \&2.15, \(lqPerl Installation Notes\(rq)\&.
.PP
Invoke
\fBmysql_setpermission\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_setpermission [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fIoptions\fR
should be either
\fB\-\-help\fR
-to display the help message, or options that indicate how to connect to the MySQL server. The account used when you connect determines which permissions you have when attempting to modify existing permissions in the grant tables.
+to display the help message, or options that indicate how to connect to the MySQL server\&. The account used when you connect determines which permissions you have when attempting to modify existing permissions in the grant tables\&.
.PP
\fBmysql_setpermissions\fR
also reads options from the
@@ -48,57 +61,119 @@ also reads options from the
and
[perl]
groups in the
-\fI.my.cnf\fR
-file in your home directory, if the file exists.
+\&.my\&.cnf
+file in your home directory, if the file exists\&.
.PP
\fBmysql_setpermission\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: help option
+.\" help option: mysql_setpermission
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: host option
+.\" host option: mysql_setpermission
\fB\-\-host=\fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: password option
+.\" password option: mysql_setpermission
\fB\-\-password=\fR\fB\fIpassword\fR\fR
.sp
-The password to use when connecting to the server. Note that the password value is not optional for this option, unlike for other MySQL programs. You can use an option file to avoid giving the password on the command line.
+The password to use when connecting to the server\&. Note that the password value is not optional for this option, unlike for other MySQL programs\&. You can use an option file to avoid giving the password on the command line\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: port option
+.\" port option: mysql_setpermission
\fB\-\-port=\fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: socket option
+.\" socket option: mysql_setpermission
\fB\-\-socket=\fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: user option
+.\" user option: mysql_setpermission
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
+The MySQL user name to use when connecting to the server\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_tzinfo_to_sql.1'
--- a/man/mysql_tzinfo_to_sql.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_tzinfo_to_sql.1 2009-09-16 12:03:18 +0000
@@ -1,19 +1,29 @@
+'\" t
.\" Title: \fBmysql_tzinfo_to_sql\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_TZINFO_TO_S" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_TZINFO_TO_S" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_tzinfo_to_sql
+.\" time zone tables
.SH "NAME"
mysql_tzinfo_to_sql \- load the time zone tables
.SH "SYNOPSIS"
-.HP 30
+.HP \w'\fBmysql_tzinfo_to_sql\ \fR\fB\fIarguments\fR\fR\ 'u
\fBmysql_tzinfo_to_sql \fR\fB\fIarguments\fR\fR
.SH "DESCRIPTION"
.PP
@@ -21,41 +31,49 @@ The
\fBmysql_tzinfo_to_sql\fR
program loads the time zone tables in the
mysql
-database. It is used on systems that have a
+database\&. It is used on systems that have a
zoneinfo
-database (the set of files describing time zones). Examples of such systems are Linux, FreeBSD, Sun Solaris, and Mac OS X. One likely location for these files is the
-\fI/usr/share/zoneinfo\fR
-directory (\fI/usr/share/lib/zoneinfo\fR
-on Solaris). If your system does not have a zoneinfo database, you can use the downloadable package described in
-Section\ 9.7, \(lqMySQL Server Time Zone Support\(rq.
+database (the set of files describing time zones)\&. Examples of such systems are Linux, FreeBSD, Sun Solaris, and Mac OS X\&. One likely location for these files is the
+/usr/share/zoneinfo
+directory (/usr/share/lib/zoneinfo
+on Solaris)\&. If your system does not have a zoneinfo database, you can use the downloadable package described in
+Section\ \&9.7, \(lqMySQL Server Time Zone Support\(rq\&.
.PP
\fBmysql_tzinfo_to_sql\fR
can be invoked several ways:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_tzinfo_to_sql \fR\fB\fItz_dir\fR\fR
shell> \fBmysql_tzinfo_to_sql \fR\fB\fItz_file tz_name\fR\fR
shell> \fBmysql_tzinfo_to_sql \-\-leap \fR\fB\fItz_file\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For the first invocation syntax, pass the zoneinfo directory path name to
\fBmysql_tzinfo_to_sql\fR
and send the output into the
\fBmysql\fR
-program. For example:
+program\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_tzinfo_to_sql /usr/share/zoneinfo | mysql \-u root mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysql_tzinfo_to_sql\fR
-reads your system's time zone files and generates SQL statements from them.
+reads your system\'s time zone files and generates SQL statements from them\&.
\fBmysql\fR
-processes those statements to load the time zone tables.
+processes those statements to load the time zone tables\&.
.PP
The second syntax causes
\fBmysql_tzinfo_to_sql\fR
@@ -64,38 +82,48 @@ to load a single time zone file
that corresponds to a time zone name
\fItz_name\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_tzinfo_to_sql \fR\fB\fItz_file\fR\fR\fB \fR\fB\fItz_name\fR\fR\fB | mysql \-u root mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If your time zone needs to account for leap seconds, invoke
\fBmysql_tzinfo_to_sql\fR
-using the third syntax, which initializes the leap second information.
+using the third syntax, which initializes the leap second information\&.
\fItz_file\fR
is the name of your time zone file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_tzinfo_to_sql \-\-leap \fR\fB\fItz_file\fR\fR\fB | mysql \-u root mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
After running
-\fBmysql_tzinfo_to_sql\fR, it is best to restart the server so that it does not continue to use any previously cached time zone data.
+\fBmysql_tzinfo_to_sql\fR, it is best to restart the server so that it does not continue to use any previously cached time zone data\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_upgrade.1'
--- a/man/mysql_upgrade.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_upgrade.1 2009-09-16 12:03:18 +0000
@@ -1,190 +1,371 @@
+'\" t
.\" Title: \fBmysql_upgrade\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_UPGRADE\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_UPGRADE\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_upgrade
+.\" upgrading MySQL
+.\" MySQL: upgrading
.SH "NAME"
mysql_upgrade \- check tables for MySQL upgrade
.SH "SYNOPSIS"
-.HP 24
+.HP \w'\fBmysql_upgrade\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysql_upgrade [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysql_upgrade\fR
-should be executed each time you upgrade MySQL. It checks all tables in all databases for incompatibilities with the current version of MySQL Server. If a table is found to have a possible incompatibility, it is checked. If any problems are found, the table is repaired.
+examines all tables in all databases for incompatibilities with the current version of MySQL Server\&.
\fBmysql_upgrade\fR
-also upgrades the system tables so that you can take advantage of new privileges or capabilities that might have been added.
+also upgrades the system tables so that you can take advantage of new privileges or capabilities that might have been added\&.
.PP
-All checked and repaired tables are marked with the current MySQL version number. This ensures that next time you run
\fBmysql_upgrade\fR
-with the same version of the server, it can tell whether there is any need to check or repair the table again.
+should be executed each time you upgrade MySQL\&. It supersedes the older
+\fBmysql_fix_privilege_tables\fR
+script, which should no longer be used\&.
.PP
+If a table is found to have a possible incompatibility,
\fBmysql_upgrade\fR
-also saves the MySQL version number in a file named
-\fImysql_upgrade_info\fR
-in the data directory. This is used to quickly check if all tables have been checked for this release so that table\-checking can be skipped. To ignore this file, use the
-\fB\-\-force\fR
-option.
+performs a table check\&. If any problems are found, a table repair is attempted\&. If the table cannot be repaired, see
+Section\ \&2.12.4, \(lqRebuilding or Repairing Tables or Indexes\(rq
+for manual table repair strategies\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBCaution\fR
+.ps -1
+.br
.PP
-Some upgrade incompatibilities may require special handling
+You should always back up your current MySQL installation
\fIbefore\fR
-you upgrade your MySQL installation and run
-\fBmysql_upgrade\fR. See
-Section\ 2.12.1, \(lqUpgrading MySQL\(rq, for instructions on determining whether any such incompatibilities apply to your installation and how to handle them.
+performing an upgrade\&. See
+Section\ \&6.1, \(lqDatabase Backups\(rq\&.
+.PP
+Some upgrade incompatibilities may require special handling before you upgrade your MySQL installation and run
+\fBmysql_upgrade\fR\&. See
+Section\ \&2.12.1, \(lqUpgrading MySQL\(rq, for instructions on determining whether any such incompatibilities apply to your installation and how to handle them\&.
+.sp .5v
+.RE
+.PP
+To use
+\fBmysql_upgrade\fR, make sure that the server is running, and then invoke it like this:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+shell> \fBmysql_upgrade [\fR\fB\fIoptions\fR\fR\fB]\fR
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+After running
+\fBmysql_upgrade\fR, stop the server and restart it so that any changes made to the system tables take effect\&.
.PP
-To check and repair tables and to upgrade the system tables,
\fBmysql_upgrade\fR
-executes the following commands:
+executes the following commands to check and repair tables and to upgrade the system tables:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlcheck \-\-check\-upgrade \-\-all\-databases \-\-auto\-repair
-mysql_fix_privilege_tables
+mysqlcheck \-\-all\-databases \-\-check\-upgrade \-\-auto\-repair
+mysql < \fIfix_priv_tables\fR
mysqlcheck \-\-all\-databases \-\-check\-upgrade \-\-fix\-db\-names \-\-fix\-table\-names
.fi
+.if n \{\
.RE
-.sp
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-\fBNote\fR
+.\}
.PP
-Prior to MySQL 5.1.31,
+Notes about the preceding commands:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Because
+\fBmysql_upgrade\fR
+invokes
+\fBmysqlcheck\fR
+with the
+\fB\-\-all\-databases\fR
+option, it processes all tables in all databases, which might take a long time to complete\&. Each table is locked and therefore unavailable to other sessions while it is being processed\&. Check and repair operations can be time\-consuming, particularly for large tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+For details about what checks the
+\fB\-\-check\-upgrade\fR
+option entails, see the description of the
+FOR UPGRADE
+option of the
+CHECK TABLE
+statement (see
+Section\ \&12.5.2.3, \(lqCHECK TABLE Syntax\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIfix_priv_tables\fR
+represents a script generated interally by
+\fBmysql_upgrade\fR
+that contains SQL statements to upgrade the tables in the
+mysql
+database\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Prior to MySQL 5\&.1\&.31,
\fBmysql_upgrade\fR
-does not run the third command, which is necessary to re\-encode database or table names that contain non\-alphanumeric characters. (They still appear after the upgrade with the
+does not run the second
+\fBmysqlcheck\fR
+command, which is necessary to re\-encode database or table names that contain nonalphanumeric characters\&. (They still appear after the upgrade with the
#mysql50#
prefix described in
-Section\ 8.2.3, \(lqMapping of Identifiers to File Names\(rq.) If you have such database or table names, execute the third command manually after executing
-\fBmysql_upgrade\fR.
+Section\ \&8.2.3, \(lqMapping of Identifiers to File Names\(rq\&.) If you have such database or table names, execute the second
+\fBmysqlcheck\fR
+command manually after executing
+\fBmysql_upgrade\fR\&.
+.RE
.PP
+All checked and repaired tables are marked with the current MySQL version number\&. This ensures that next time you run
\fBmysql_upgrade\fR
-supersedes the older
-\fBmysql_fix_privilege_tables\fR
-script. In MySQL 5.1.7,
-\fBmysql_upgrade \fR
-was added as a shell script and worked only for Unix systems. As of MySQL 5.1.10,
+with the same version of the server, it can tell whether there is any need to check or repair the table again\&.
+.\" mysql_upgrade_info file: mysql_upgrade
+.\" mysql_upgrade: mysql_upgrade_info file
+.PP
\fBmysql_upgrade\fR
-is an executable binary and is available on all systems. On systems older than those supporting
-\fBmysql_upgrade\fR, you can execute the
-\fBmysqlcheck\fR
-command manually, and then upgrade your system tables as described in
-\fBmysql_fix_privilege_tables\fR(1).
+also saves the MySQL version number in a file named
+mysql_upgrade_info
+in the data directory\&. This is used to quickly check whether all tables have been checked for this release so that table\-checking can be skipped\&. To ignore this file and perform the check regardless, use the
+\fB\-\-force\fR
+option\&.
.PP
-If you install MySQL from RPM packages on Linux, you must install the server and client RPMs.
+If you install MySQL from RPM packages on Linux, you must install the server and client RPMs\&.
\fBmysql_upgrade\fR
is included in the server RPM but requires the client RPM because the latter includes
-\fBmysqlcheck\fR. (See
-Section\ 2.4, \(lqInstalling MySQL from RPM Packages on Linux\(rq.)
-.PP
-For details about what is checked, see the description of the
-FOR UPGRADE
-option of the
-CHECK TABLE
-statement (see
-Section\ 12.5.2.3, \(lqCHECK TABLE Syntax\(rq).
-.PP
-To use
-\fBmysql_upgrade\fR, make sure that the server is running, and then invoke it like this:
-.sp
-.RS 3n
-.nf
-shell> \fBmysql_upgrade [\fR\fB\fIoptions\fR\fR\fB]\fR
-.fi
-.RE
+\fBmysqlcheck\fR\&. (See
+Section\ \&2.4, \(lqInstalling MySQL from RPM Packages on Linux\(rq\&.)
.PP
-After running
-\fBmysql_upgrade\fR, stop the server and restart it so that it uses any changes that were made to the system tables.
+In MySQL 5\&.1\&.7,
+\fBmysql_upgrade \fR
+was added as a shell script and worked only for Unix systems\&. As of MySQL 5\&.1\&.10,
+\fBmysql_upgrade\fR
+is an executable binary and is available on all systems\&.
.PP
\fBmysql_upgrade\fR
-reads options from the command line and from the
+supports the options in the following list\&. It also reads option files (the
[mysql_upgrade]
-group in option files. It supports the options in the following list. Other options are passed to
-\fBmysqlcheck\fR
-and to
-\fBmysql_fix_privilege_tables\fR. For example, it might be necessary to specify the
+and
+[client]
+groups) and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&. Other options are passed to
+\fBmysqlcheck\fR\&. For example, it might be necessary to specify the
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: help option
+.\" help option: mysql_upgrade
\fB\-\-help\fR
.sp
-Display a short help message and exit.
-.TP 3n
-\(bu
+Display a short help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: basedir option
+.\" basedir option: mysql_upgrade
\fB\-\-basedir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL installation directory.
-.TP 3n
-\(bu
+The path to the MySQL installation directory\&. This option is accepted for backward compatibility but ignored\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: datadir option
+.\" datadir option: mysql_upgrade
\fB\-\-datadir=\fR\fB\fIpath\fR\fR
.sp
-The path to the data directory.
-.TP 3n
-\(bu
+The path to the data directory\&. This option is accepted for backward compatibility but ignored\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: debug-check option
+.\" debug-check option: mysql_upgrade
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: debug-info option
+.\" debug-info option: mysql_upgrade
\fB\-\-debug\-info\fR,
\fB\-T\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: force option
+.\" force option: mysql_upgrade
\fB\-\-force\fR
.sp
-Force execution of
+Ignore the
+mysql_upgrade_info
+file and force execution of
\fBmysqlcheck\fR
even if
\fBmysql_upgrade\fR
-has already been executed for the current version of MySQL. (In other words, this option causes the
-\fImysql_upgrade_info\fR
-file to be ignored.)
-.TP 3n
-\(bu
+has already been executed for the current version of MySQL\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: tmpdir option
+.\" tmpdir option: mysql_upgrade
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR,
\fB\-t \fR\fB\fIpath\fR\fR
.sp
-The path name of the directory to use for creating temporary files. This option was added in MySQL 5.1.25.
-.TP 3n
-\(bu
+The path name of the directory to use for creating temporary files\&. This option was added in MySQL 5\&.1\&.25\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: user option
+.\" user option: mysql_upgrade
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server. The default user name is
-root.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&. The default user name is
+root\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: verbose option
+.\" verbose option: mysql_upgrade
\fB\-\-verbose\fR
.sp
-Verbose mode. Print more information about what the program does.
+Verbose mode\&. Print more information about what the program does\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_waitpid.1'
--- a/man/mysql_waitpid.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_waitpid.1 2009-09-16 12:03:18 +0000
@@ -1,91 +1,136 @@
+'\" t
.\" Title: \fBmysql_waitpid\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_WAITPID\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_WAITPID\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_waitpid
.SH "NAME"
mysql_waitpid \- kill process and wait for its termination
.SH "SYNOPSIS"
-.HP 38
+.HP \w'\fBmysql_waitpid\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIpid\fR\fR\fB\ \fR\fB\fIwait_time\fR\fR\ 'u
\fBmysql_waitpid [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpid\fR\fR\fB \fR\fB\fIwait_time\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql_waitpid\fR
-signals a process to terminate and waits for the process to exit. It uses the
+signals a process to terminate and waits for the process to exit\&. It uses the
kill()
-system call and Unix signals, so it runs on Unix and Unix\-like systems.
+system call and Unix signals, so it runs on Unix and Unix\-like systems\&.
.PP
Invoke
\fBmysql_waitpid\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_waitpid [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpid\fR\fR\fB \fR\fB\fIwait_time\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysql_waitpid\fR
sends signal 0 to the process identified by
\fIpid\fR
and waits up to
\fIwait_time\fR
-seconds for the process to terminate.
+seconds for the process to terminate\&.
\fIpid\fR
and
\fIwait_time\fR
-must be positive integers.
+must be positive integers\&.
.PP
If process termination occurs within the wait time or the process does not exist,
\fBmysql_waitpid\fR
-returns 0. Otherwise, it returns 1.
+returns 0\&. Otherwise, it returns 1\&.
.PP
If the
kill()
system call cannot handle signal 0,
\fBmysql_waitpid()\fR
-uses signal 1 instead.
+uses signal 1 instead\&.
.PP
\fBmysql_waitpid\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_waitpid: help option
+.\" help option: mysql_waitpid
\fB\-\-help\fR,
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_waitpid: verbose option
+.\" verbose option: mysql_waitpid
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Display a warning if signal 0 could not be used and signal 1 is used instead.
-.TP 3n
-\(bu
+Verbose mode\&. Display a warning if signal 0 could not be used and signal 1 is used instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_waitpid: version option
+.\" version option: mysql_waitpid
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_zap.1'
--- a/man/mysql_zap.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_zap.1 2009-09-16 12:03:18 +0000
@@ -1,93 +1,132 @@
+'\" t
.\" Title: \fBmysql_zap\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_ZAP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_ZAP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_zap
.SH "NAME"
mysql_zap \- kill processes that match a pattern
.SH "SYNOPSIS"
-.HP 36
+.HP \w'\fBmysql_zap\ [\-\fR\fB\fIsignal\fR\fR\fB]\ [\-?Ift]\ \fR\fB\fIpattern\fR\fR\ 'u
\fBmysql_zap [\-\fR\fB\fIsignal\fR\fR\fB] [\-?Ift] \fR\fB\fIpattern\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql_zap\fR
-kills processes that match a pattern. It uses the
+kills processes that match a pattern\&. It uses the
\fBps\fR
-command and Unix signals, so it runs on Unix and Unix\-like systems.
+command and Unix signals, so it runs on Unix and Unix\-like systems\&.
.PP
Invoke
\fBmysql_zap\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_zap [\-\fR\fB\fIsignal\fR\fR\fB] [\-?Ift] \fR\fB\fIpattern\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
A process matches if its output line from the
\fBps\fR
-command contains the pattern. By default,
+command contains the pattern\&. By default,
\fBmysql_zap\fR
-asks for confirmation for each process. Respond
+asks for confirmation for each process\&. Respond
y
to kill the process, or
q
to exit
-\fBmysql_zap\fR. For any other response,
+\fBmysql_zap\fR\&. For any other response,
\fBmysql_zap\fR
-does not attempt to kill the process.
+does not attempt to kill the process\&.
.PP
If the
\fB\-\fR\fB\fIsignal\fR\fR
-option is given, it specifies the name or number of the signal to send to each process. Otherwise,
+option is given, it specifies the name or number of the signal to send to each process\&. Otherwise,
\fBmysql_zap\fR
tries first with
TERM
(signal 15) and then with
KILL
-(signal 9).
+(signal 9)\&.
.PP
\fBmysql_zap\fR
-understands the following additional options:
-.TP 3n
-\(bu
+supports the following additional options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-\-help\fR,
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-f\fR
.sp
-Force mode.
+Force mode\&.
\fBmysql_zap\fR
-attempts to kill each process without confirmation.
-.TP 3n
-\(bu
+attempts to kill each process without confirmation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-t\fR
.sp
-Test mode. Display information about each process but do not kill it.
+Test mode\&. Display information about each process but do not kill it\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlaccess.1'
--- a/man/mysqlaccess.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlaccess.1 2009-09-16 12:03:18 +0000
@@ -1,218 +1,435 @@
+'\" t
.\" Title: \fBmysqlaccess\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLACCESS\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLACCESS\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlaccess
.SH "NAME"
mysqlaccess \- client for checking access privileges
.SH "SYNOPSIS"
-.HP 56
+.HP \w'\fBmysqlaccess\ [\fR\fB\fIhost_name\fR\fR\fB\ [\fR\fB\fIuser_name\fR\fR\fB\ [\fR\fB\fIdb_name\fR\fR\fB]]]\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysqlaccess [\fR\fB\fIhost_name\fR\fR\fB [\fR\fB\fIuser_name\fR\fR\fB [\fR\fB\fIdb_name\fR\fR\fB]]] [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysqlaccess\fR
-is a diagnostic tool that Yves Carlier has provided for the MySQL distribution. It checks the access privileges for a host name, user name, and database combination. Note that
+is a diagnostic tool that Yves Carlier has provided for the MySQL distribution\&. It checks the access privileges for a host name, user name, and database combination\&. Note that
\fBmysqlaccess\fR
checks access using only the
user,
db, and
host
-tables. It does not check table, column, or routine privileges specified in the
+tables\&. It does not check table, column, or routine privileges specified in the
tables_priv,
columns_priv, or
procs_priv
-tables.
+tables\&.
.PP
Invoke
\fBmysqlaccess\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlaccess [\fR\fB\fIhost_name\fR\fR\fB [\fR\fB\fIuser_name\fR\fR\fB [\fR\fB\fIdb_name\fR\fR\fB]]] [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqlaccess\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: help option
+.\" help option: mysqlaccess
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: brief option
+.\" brief option: mysqlaccess
\fB\-\-brief\fR,
\fB\-b\fR
.sp
-Generate reports in single\-line tabular format.
-.TP 3n
-\(bu
+Generate reports in single\-line tabular format\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: commit option
+.\" commit option: mysqlaccess
\fB\-\-commit\fR
.sp
-Copy the new access privileges from the temporary tables to the original grant tables. The grant tables must be flushed for the new privileges to take effect. (For example, execute a
+Copy the new access privileges from the temporary tables to the original grant tables\&. The grant tables must be flushed for the new privileges to take effect\&. (For example, execute a
\fBmysqladmin reload\fR
-command.)
-.TP 3n
-\(bu
+command\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: copy option
+.\" copy option: mysqlaccess
\fB\-\-copy\fR
.sp
-Reload the temporary grant tables from original ones.
-.TP 3n
-\(bu
+Reload the temporary grant tables from original ones\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: db option
+.\" db option: mysqlaccess
\fB\-\-db=\fR\fB\fIdb_name\fR\fR,
\fB\-d \fR\fB\fIdb_name\fR\fR
.sp
-Specify the database name.
-.TP 3n
-\(bu
+Specify the database name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: debug option
+.\" debug option: mysqlaccess
\fB\-\-debug=\fR\fB\fIN\fR\fR
.sp
-Specify the debug level.
+Specify the debug level\&.
\fIN\fR
-can be an integer from 0 to 3.
-.TP 3n
-\(bu
+can be an integer from 0 to 3\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: host option
+.\" host option: mysqlaccess
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-The host name to use in the access privileges.
-.TP 3n
-\(bu
+The host name to use in the access privileges\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: howto option
+.\" howto option: mysqlaccess
\fB\-\-howto\fR
.sp
Display some examples that show how to use
-\fBmysqlaccess\fR.
-.TP 3n
-\(bu
+\fBmysqlaccess\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: old_server option
+.\" old_server option: mysqlaccess
\fB\-\-old_server\fR
.sp
-Assume that the server is an old MySQL server (before MySQL 3.21) that does not yet know how to handle full
+Assume that the server is an old MySQL server (before MySQL 3\&.21) that does not yet know how to handle full
WHERE
-clauses.
-.TP 3n
-\(bu
+clauses\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: password option
+.\" password option: mysqlaccess
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you omit the
+The password to use when connecting to the server\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: plan option
+.\" plan option: mysqlaccess
\fB\-\-plan\fR
.sp
-Display suggestions and ideas for future releases.
-.TP 3n
-\(bu
+Display suggestions and ideas for future releases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: preview option
+.\" preview option: mysqlaccess
\fB\-\-preview\fR
.sp
-Show the privilege differences after making changes to the temporary grant tables.
-.TP 3n
-\(bu
+Show the privilege differences after making changes to the temporary grant tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: relnotes option
+.\" relnotes option: mysqlaccess
\fB\-\-relnotes\fR
.sp
-Display the release notes.
-.TP 3n
-\(bu
+Display the release notes\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: rhost option
+.\" rhost option: mysqlaccess
\fB\-\-rhost=\fR\fB\fIhost_name\fR\fR,
\fB\-H \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: rollback option
+.\" rollback option: mysqlaccess
\fB\-\-rollback\fR
.sp
-Undo the most recent changes to the temporary grant tables.
-.TP 3n
-\(bu
+Undo the most recent changes to the temporary grant tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: spassword option
+.\" spassword option: mysqlaccess
\fB\-\-spassword[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-P[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server as the superuser. If you omit the
+The password to use when connecting to the server as the superuser\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: superuser option
+.\" superuser option: mysqlaccess
\fB\-\-superuser=\fR\fB\fIuser_name\fR\fR,
\fB\-U \fR\fB\fIuser_name\fR\fR
.sp
-Specify the user name for connecting as the superuser.
-.TP 3n
-\(bu
+Specify the user name for connecting as the superuser\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: table option
+.\" table option: mysqlaccess
\fB\-\-table\fR,
\fB\-t\fR
.sp
-Generate reports in table format.
-.TP 3n
-\(bu
+Generate reports in table format\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: user option
+.\" user option: mysqlaccess
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The user name to use in the access privileges.
-.TP 3n
-\(bu
+The user name to use in the access privileges\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: version option
+.\" version option: mysqlaccess
\fB\-\-version\fR,
\fB\-v\fR
.sp
-Display version information and exit.
-.sp
+Display version information and exit\&.
.RE
.PP
-If your MySQL distribution is installed in some non\-standard location, you must change the location where
+If your MySQL distribution is installed in some nonstandard location, you must change the location where
\fBmysqlaccess\fR
expects to find the
\fBmysql\fR
-client. Edit the
-\fImysqlaccess\fR
-script at approximately line 18. Search for a line that looks like this:
-.sp
-.RS 3n
+client\&. Edit the
+mysqlaccess
+script at approximately line 18\&. Search for a line that looks like this:
+.sp
+.if n \{\
+.RS 4
+.\}
.nf
-$MYSQL = '/usr/local/bin/mysql'; # path to mysql executable
+$MYSQL = \'/usr/local/bin/mysql\'; # path to mysql executable
.fi
+.if n \{\
.RE
+.\}
.PP
Change the path to reflect the location where
\fBmysql\fR
-actually is stored on your system. If you do not do this, a
+actually is stored on your system\&. If you do not do this, a
Broken pipe
error will occur when you run
-\fBmysqlaccess\fR.
+\fBmysqlaccess\fR\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqladmin.1'
--- a/man/mysqladmin.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqladmin.1 2009-09-16 12:03:18 +0000
@@ -1,210 +1,421 @@
+'\" t
.\" Title: \fBmysqladmin\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLADMIN\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLADMIN\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqladmin
+.\" administration: server
+.\" server administration
.SH "NAME"
mysqladmin \- client for administering a MySQL server
.SH "SYNOPSIS"
-.HP 79
-\fBmysqladmin [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-options\fR\fR\fB] [\fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-options\fR\fR\fB]] ...\fR
+.HP \w'\fBmysqladmin\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIcommand\fR\fR\fB\ [\fR\fB\fIcommand\-options\fR\fR\fB]\ [\fR\fB\fIcommand\fR\fR\fB\ [\fR\fB\fIcommand\-options\fR\fR\fB]]\ \&.\&.\&.\fR\ 'u
+\fBmysqladmin [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-options\fR\fR\fB] [\fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-options\fR\fR\fB]] \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
\fBmysqladmin\fR
-is a client for performing administrative operations. You can use it to check the server's configuration and current status, to create and drop databases, and more.
+is a client for performing administrative operations\&. You can use it to check the server\'s configuration and current status, to create and drop databases, and more\&.
.PP
Invoke
\fBmysqladmin\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqladmin [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-arg\fR\fR\fB] [\fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-arg\fR\fR\fB]] ...\fR
+shell> \fBmysqladmin [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-arg\fR\fR\fB] [\fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-arg\fR\fR\fB]] \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqladmin\fR
-supports the commands described in the following list. Some of the commands take an argument following the command name.
-.TP 3n
-\(bu
+supports the commands described in the following list\&. Some of the commands take an argument following the command name\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
create \fIdb_name\fR
.sp
Create a new database named
-\fIdb_name\fR.
-.TP 3n
-\(bu
+\fIdb_name\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
debug
.sp
-Tell the server to write debug information to the error log.
+Tell the server to write debug information to the error log\&.
+.sp
+Beginning with MySQL 5\&.1\&.12, this includes information about the Event Scheduler\&. See
+Section\ \&19.4.5, \(lqEvent Scheduler Status\(rq\&.
+.RE
.sp
-Beginning with MySQL 5.1.12, this includes information about the Event Scheduler. See
-Section\ 19.4.5, \(lqEvent Scheduler Status\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
drop \fIdb_name\fR
.sp
Delete the database named
\fIdb_name\fR
-and all its tables.
-.TP 3n
-\(bu
+and all its tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
extended\-status
.sp
-Display the server status variables and their values.
-.TP 3n
-\(bu
+Display the server status variables and their values\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-hosts
.sp
-Flush all information in the host cache.
-.TP 3n
-\(bu
+Flush all information in the host cache\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-logs
.sp
-Flush all logs.
-.TP 3n
-\(bu
+Flush all logs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-privileges
.sp
Reload the grant tables (same as
-reload).
-.TP 3n
-\(bu
+reload)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-status
.sp
-Clear status variables.
-.TP 3n
-\(bu
+Clear status variables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-tables
.sp
-Flush all tables.
-.TP 3n
-\(bu
+Flush all tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-threads
.sp
-Flush the thread cache.
-.TP 3n
-\(bu
-kill \fIid\fR,\fIid\fR,...
-.sp
-Kill server threads. If multiple thread ID values are given, there must be no spaces in the list.
-.TP 3n
-\(bu
+Flush the thread cache\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+kill \fIid\fR,\fIid\fR,\&.\&.\&.
+.sp
+Kill server threads\&. If multiple thread ID values are given, there must be no spaces in the list\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
old\-password \fInew\-password\fR
.sp
This is like the
password
-command but stores the password using the old (pre\-4.1) password\-hashing format. (See
-Section\ 5.5.6.3, \(lqPassword Hashing in MySQL\(rq.)
-.TP 3n
-\(bu
+command but stores the password using the old (pre\-4\&.1) password\-hashing format\&. (See
+Section\ \&5.5.6.3, \(lqPassword Hashing in MySQL\(rq\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
password \fInew\-password\fR
.sp
-Set a new password. This changes the password to
+Set a new password\&. This changes the password to
\fInew\-password\fR
for the account that you use with
\fBmysqladmin\fR
-for connecting to the server. Thus, the next time you invoke
+for connecting to the server\&. Thus, the next time you invoke
\fBmysqladmin\fR
-(or any other client program) using the same account, you will need to specify the new password.
+(or any other client program) using the same account, you will need to specify the new password\&.
.sp
If the
\fInew\-password\fR
-value contains spaces or other characters that are special to your command interpreter, you need to enclose it within quotes. On Windows, be sure to use double quotes rather than single quotes; single quotes are not stripped from the password, but rather are interpreted as part of the password. For example:
+value contains spaces or other characters that are special to your command interpreter, you need to enclose it within quotes\&. On Windows, be sure to use double quotes rather than single quotes; single quotes are not stripped from the password, but rather are interpreted as part of the password\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqladmin password "my new password"\fR
.fi
+.if n \{\
.RE
+.\}
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBCaution\fR
+.ps -1
+.br
Do not use this command used if the server was started with the
\fB\-\-skip\-grant\-tables\fR
-option. No password change will be applied. This is true even if you precede the
+option\&. No password change will be applied\&. This is true even if you precede the
password
command with
flush\-privileges
-on the same command line to re\-enable the grant tables because the flush operation occurs after you connect. However, you can use
+on the same command line to re\-enable the grant tables because the flush operation occurs after you connect\&. However, you can use
\fBmysqladmin flush\-privileges\fR
to re\-enable the grant table and then use a separate
\fBmysqladmin password\fR
-command to change the password.
-.TP 3n
-\(bu
+command to change the password\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
ping
.sp
-Check whether the server is alive. The return status from
+Check whether the server is alive\&. The return status from
\fBmysqladmin\fR
-is 0 if the server is running, 1 if it is not. This is 0 even in case of an error such as
-Access denied, because this means that the server is running but refused the connection, which is different from the server not running.
-.TP 3n
-\(bu
+is 0 if the server is running, 1 if it is not\&. This is 0 even in case of an error such as
+Access denied, because this means that the server is running but refused the connection, which is different from the server not running\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
processlist
.sp
-Show a list of active server threads. This is like the output of the
+Show a list of active server threads\&. This is like the output of the
SHOW PROCESSLIST
-statement. If the
+statement\&. If the
\fB\-\-verbose\fR
option is given, the output is like that of
-SHOW FULL PROCESSLIST. (See
-Section\ 12.5.5.31, \(lqSHOW PROCESSLIST Syntax\(rq.)
-.TP 3n
-\(bu
+SHOW FULL PROCESSLIST\&. (See
+Section\ \&12.5.5.31, \(lqSHOW PROCESSLIST Syntax\(rq\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
reload
.sp
-Reload the grant tables.
-.TP 3n
-\(bu
+Reload the grant tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
refresh
.sp
-Flush all tables and close and open log files.
-.TP 3n
-\(bu
+Flush all tables and close and open log files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
shutdown
.sp
-Stop the server.
-.TP 3n
-\(bu
+Stop the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
start\-slave
.sp
-Start replication on a slave server.
-.TP 3n
-\(bu
+Start replication on a slave server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
status
.sp
-Display a short server status message.
-.TP 3n
-\(bu
+Display a short server status message\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
stop\-slave
.sp
-Stop replication on a slave server.
-.TP 3n
-\(bu
+Stop replication on a slave server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
variables
.sp
-Display the server system variables and their values.
-.TP 3n
-\(bu
-version
+Display the server system variables and their values\&.
+.RE
.sp
-Display version information from the server.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+version
.sp
+Display version information from the server\&.
.RE
.PP
-All commands can be shortened to any unique prefix. For example:
+All commands can be shortened to any unique prefix\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqladmin proc stat\fR
+\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
@@ -212,299 +423,658 @@ shell> \fBmysqladmin proc stat\fR
+\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
| 51 | monty | localhost | | Query | 0 | | show processlist |
+\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
-Uptime: 1473624 Threads: 1 Questions: 39487
-Slow queries: 0 Opens: 541 Flush tables: 1
-Open tables: 19 Queries per second avg: 0.0268
+Uptime: 1473624 Threads: 1 Questions: 39487
+Slow queries: 0 Opens: 541 Flush tables: 1
+Open tables: 19 Queries per second avg: 0\&.0268
.fi
+.if n \{\
.RE
+.\}
+.sp
+.\" status command: results
.PP
The
\fBmysqladmin status\fR
command result displays the following values:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" uptime
Uptime
.sp
-The number of seconds the MySQL server has been running.
-.TP 3n
-\(bu
+The number of seconds the MySQL server has been running\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" threads
Threads
.sp
-The number of active threads (clients).
-.TP 3n
-\(bu
+The number of active threads (clients)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" questions
Questions
.sp
-The number of questions (queries) from clients since the server was started.
-.TP 3n
-\(bu
+The number of questions (queries) from clients since the server was started\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" slow queries
Slow queries
.sp
The number of queries that have taken more than
long_query_time
-seconds. See
-Section\ 5.2.5, \(lqThe Slow Query Log\(rq.
-.TP 3n
-\(bu
+seconds\&. See
+Section\ \&5.2.5, \(lqThe Slow Query Log\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" opens
Opens
.sp
-The number of tables the server has opened.
-.TP 3n
-\(bu
+The number of tables the server has opened\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" flush tables
+.\" tables: flush
Flush tables
.sp
The number of
flush\-*,
refresh, and
reload
-commands the server has executed.
-.TP 3n
-\(bu
+commands the server has executed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" open tables
Open tables
.sp
-The number of tables that currently are open.
-.TP 3n
-\(bu
+The number of tables that currently are open\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" memory use
Memory in use
.sp
The amount of memory allocated directly by
-\fBmysqld\fR. This value is displayed only when MySQL has been compiled with
-\fB\-\-with\-debug=full\fR.
-.TP 3n
-\(bu
+\fBmysqld\fR\&. This value is displayed only when MySQL has been compiled with
+\fB\-\-with\-debug=full\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" maximum memory used
Maximum memory used
.sp
The maximum amount of memory allocated directly by
-\fBmysqld\fR. This value is displayed only when MySQL has been compiled with
-\fB\-\-with\-debug=full\fR.
-.sp
+\fBmysqld\fR\&. This value is displayed only when MySQL has been compiled with
+\fB\-\-with\-debug=full\fR\&.
.RE
.PP
If you execute
\fBmysqladmin shutdown\fR
when connecting to a local server using a Unix socket file,
\fBmysqladmin\fR
-waits until the server's process ID file has been removed, to ensure that the server has stopped properly.
+waits until the server\'s process ID file has been removed, to ensure that the server has stopped properly\&.
+.\" mysqladmin command options
+.\" command options: mysqladmin
+.\" options: command-line: mysqladmin
+.\" startup parameters: mysqladmin
.PP
\fBmysqladmin\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: help option
+.\" help option: mysqladmin
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: character-sets-dir option
+.\" character-sets-dir option: mysqladmin
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: compress option
+.\" compress option: mysqladmin
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: count option
+.\" count option: mysqladmin
\fB\-\-count=\fR\fB\fIN\fR\fR,
\fB\-c \fR\fB\fIN\fR\fR
.sp
The number of iterations to make for repeated command execution if the
\fB\-\-sleep\fR
-option is given.
-.TP 3n
-\(bu
+option is given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: debug option
+.\" debug option: mysqladmin
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'. The default is
-\'d:t:o,/tmp/mysqladmin.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/mysqladmin\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: debug-check option
+.\" debug-check option: mysqladmin
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: debug-info option
+.\" debug-info option: mysqladmin
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: default-character-set option
+.\" default-character-set option: mysqladmin
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: force option
+.\" force option: mysqladmin
\fB\-\-force\fR,
\fB\-f\fR
.sp
Do not ask for confirmation for the
drop \fIdb_name\fR
-command. With multiple commands, continue even if an error occurs.
-.TP 3n
-\(bu
+command\&. With multiple commands, continue even if an error occurs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: host option
+.\" host option: mysqladmin
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: no-beep option
+.\" no-beep option: mysqladmin
\fB\-\-no\-beep\fR,
\fB\-b\fR
.sp
-Suppress the warning beep that is emitted by default for errors such as a failure to connect to the server. This option was added in MySQL 5.1.17.
-.TP 3n
-\(bu
+Suppress the warning beep that is emitted by default for errors such as a failure to connect to the server\&. This option was added in MySQL 5\&.1\&.17\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: password option
+.\" password option: mysqladmin
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: pipe option
+.\" pipe option: mysqladmin
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: port option
+.\" port option: mysqladmin
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: protocol option
+.\" protocol option: mysqladmin
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: relative option
+.\" relative option: mysqladmin
\fB\-\-relative\fR,
\fB\-r\fR
.sp
Show the difference between the current and previous values when used with the
\fB\-\-sleep\fR
-option. Currently, this option works only with the
+option\&. Currently, this option works only with the
extended\-status
-command.
-.TP 3n
-\(bu
+command\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: silent option
+.\" silent option: mysqladmin
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Exit silently if a connection to the server cannot be established.
-.TP 3n
-\(bu
+Exit silently if a connection to the server cannot be established\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: sleep option
+.\" sleep option: mysqladmin
\fB\-\-sleep=\fR\fB\fIdelay\fR\fR,
\fB\-i \fR\fB\fIdelay\fR\fR
.sp
Execute commands repeatedly, sleeping for
\fIdelay\fR
-seconds in between. The
+seconds in between\&. The
\fB\-\-count\fR
-option determines the number of iterations. If
+option determines the number of iterations\&. If
\fB\-\-count\fR
is not given,
\fBmysqladmin\fR
-executes commands indefinitely until interrupted.
-.TP 3n
-\(bu
+executes commands indefinitely until interrupted\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: socket option
+.\" socket option: mysqladmin
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: SSL options
+.\" SSL options: mysqladmin
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: user option
+.\" user option: mysqladmin
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: verbose option
+.\" verbose option: mysqladmin
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: version option
+.\" version option: mysqladmin
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: vertical option
+.\" vertical option: mysqladmin
\fB\-\-vertical\fR,
\fB\-E\fR
.sp
-Print output vertically. This is similar to
-\fB\-\-relative\fR, but prints output vertically.
-.TP 3n
-\(bu
+Print output vertically\&. This is similar to
+\fB\-\-relative\fR, but prints output vertically\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: wait option
+.\" wait option: mysqladmin
\fB\-\-wait[=\fR\fB\fIcount\fR\fR\fB]\fR,
\fB\-w[\fR\fB\fIcount\fR\fR\fB]\fR
.sp
-If the connection cannot be established, wait and retry instead of aborting. If a
+If the connection cannot be established, wait and retry instead of aborting\&. If a
\fIcount\fR
-value is given, it indicates the number of times to retry. The default is one time.
-.sp
+value is given, it indicates the number of times to retry\&. The default is one time\&.
.RE
.PP
You can also set the following variables by using
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
The
\fB\-\-set\-variable\fR
-format is deprecated. syntax:
-.TP 3n
-\(bu
+format is deprecated\&. syntax:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" connect_timeout variable
+.\" timeout: connect_timeout variable
connect_timeout
.sp
-The maximum number of seconds before connection timeout. The default value is 43200 (12 hours).
-.TP 3n
-\(bu
+The maximum number of seconds before connection timeout\&. The default value is 43200 (12 hours)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" shutdown_timeout variable
+.\" timeout: shutdown_timeout variable
shutdown_timeout
.sp
-The maximum number of seconds to wait for server shutdown. The default value is 3600 (1 hour).
+The maximum number of seconds to wait for server shutdown\&. The default value is 3600 (1 hour)\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlbinlog.1'
--- a/man/mysqlbinlog.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlbinlog.1 2009-09-16 12:03:18 +0000
@@ -1,64 +1,81 @@
+'\" t
.\" Title: \fBmysqlbinlog\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLBINLOG\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLBINLOG\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlbinlog
.SH "NAME"
mysqlbinlog \- utility for processing binary log files
.SH "SYNOPSIS"
-.HP 35
-\fBmysqlbinlog [\fR\fBoptions\fR\fB] \fR\fB\fIlog_file\fR\fR\fB ...\fR
+.HP \w'\fBmysqlbinlog\ [\fR\fBoptions\fR\fB]\ \fR\fB\fIlog_file\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmysqlbinlog [\fR\fBoptions\fR\fB] \fR\fB\fIlog_file\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
-The server's binary log consists of files containing
+The server\'s binary log consists of files containing
\(lqevents\(rq
-that describe modifications to database contents. The server writes these files in binary format. To display their contents in text format, use the
+that describe modifications to database contents\&. The server writes these files in binary format\&. To display their contents in text format, use the
\fBmysqlbinlog\fR
-utility. You can also use
+utility\&. You can also use
\fBmysqlbinlog\fR
-to display the contents of relay log files written by a slave server in a replication setup because relay logs have the same format as binary logs. The binary log and relay log are discussed further in
-Section\ 5.2.4, \(lqThe Binary Log\(rq, and
-Section\ 16.4.2, \(lqReplication Relay and Status Files\(rq.
+to display the contents of relay log files written by a slave server in a replication setup because relay logs have the same format as binary logs\&. The binary log and relay log are discussed further in
+Section\ \&5.2.4, \(lqThe Binary Log\(rq, and
+Section\ \&16.4.2, \(lqReplication Relay and Status Files\(rq\&.
.PP
Invoke
\fBmysqlbinlog\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIlog_file\fR\fR\fB ...\fR
+shell> \fBmysqlbinlog [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIlog_file\fR\fR\fB \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For example, to display the contents of the binary log file named
-\fIbinlog.000003\fR, use this command:
+binlog\&.000003, use this command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.0000003\fR
+shell> \fBmysqlbinlog binlog\&.0000003\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The output includes events contained in
-\fIbinlog.000003\fR. Event information includes the statement, the ID of the server on which it was executed, the timestamp when the statement was executed, how much time it took, and so forth.
+binlog\&.000003\&. Event information includes the statement, the ID of the server on which it was executed, the timestamp when the statement was executed, how much time it took, and so forth\&.
.PP
The output from
\fBmysqlbinlog\fR
can be re\-executed (for example, by using it as input to
-\fBmysql\fR) to reapply the statements in the log. This is useful for recovery operations after a server crash. For other usage examples, see the discussion later in this section.
+\fBmysql\fR) to reapply the statements in the log\&. This is useful for recovery operations after a server crash\&. For other usage examples, see the discussion later in this section\&.
.PP
Normally, you use
\fBmysqlbinlog\fR
-to read binary log files directly and apply them to the local MySQL server. It is also possible to read binary logs from a remote server by using the
+to read binary log files directly and apply them to the local MySQL server\&. It is also possible to read binary logs from a remote server by using the
\fB\-\-read\-from\-remote\-server\fR
-option. When you read remote binary logs, the connection parameter options can be given to indicate how to connect to the server. These options are
+option\&. When you read remote binary logs, the connection parameter options can be given to indicate how to connect to the server\&. These options are
\fB\-\-host\fR,
\fB\-\-password\fR,
\fB\-\-port\fR,
@@ -66,357 +83,738 @@ option. When you read remote binary logs
\fB\-\-socket\fR, and
\fB\-\-user\fR; they are ignored except when you also use the
\fB\-\-read\-from\-remote\-server\fR
-option.
+option\&.
.PP
\fBmysqlbinlog\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the following options\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: help option
+.\" help option: mysqlbinlog
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: base64-output option
+.\" base64-output option: mysqlbinlog
\fB\-\-base64\-output[=\fR\fB\fIvalue\fR\fR\fB]\fR
.sp
This option determines when events should be displayed encoded as base\-64 strings using
BINLOG
-statements. The option has these allowable values (not case sensitive):
-.RS 3n
-.TP 3n
-\(bu
+statements\&. The option has these allowable values (not case sensitive):
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
AUTO
("automatic") or
UNSPEC
("unspecified") displays
BINLOG
-statements automatically when necessary (that is, for format description events and row events). This is the default if no
+statements automatically when necessary (that is, for format description events and row events)\&. This is the default if no
\fB\-\-base64\-output\fR
-option is given.
+option is given\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
Automatic
BINLOG
display is the only safe behavior if you intend to use the output of
\fBmysqlbinlog\fR
-to re\-execute binary log file contents. The other option values are intended only for debugging or testing purposes because they may produce output that does not include all events in executable form.
-.TP 3n
-\(bu
+to re\-execute binary log file contents\&. The other option values are intended only for debugging or testing purposes because they may produce output that does not include all events in executable form\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
ALWAYS
displays
BINLOG
-statements whenever possible. This is the implied value if the option is given as
+statements whenever possible\&. This is the implied value if the option is given as
\fB\-\-base64\-output\fR
-without a value.
-.TP 3n
-\(bu
+without a value\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
NEVER
causes
BINLOG
-statements not to be displayed.
+statements not to be displayed\&.
\fBmysqlbinlog\fR
exits with an error if a row event is found that must be displayed using
-BINLOG.
-.TP 3n
-\(bu
+BINLOG\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
DECODE\-ROWS
specifies to
\fBmysqlbinlog\fR
that you intend for row events to be decoded and displayed as commented SQL statements by also specifying the
\fB\-\-verbose\fR
-option. Like
+option\&. Like
NEVER,
DECODE\-ROWS
suppresses display of
BINLOG
statements, but unlike
-NEVER, it does not exit with an error if a row event is found.
+NEVER, it does not exit with an error if a row event is found\&.
.RE
-.IP "" 3n
+.RS 4
The
\fB\-\-base64\-output\fR
-option was introduced in MySQL 5.1.5, to be given as
+option was introduced in MySQL 5\&.1\&.5, to be given as
\fB\-\-base64\-output\fR
or
\fB\-\-skip\-base64\-output\fR
(with the sense of
AUTO
or
-NEVER). The option values described in the preceding list may be used as of MySQL 5.1.24, with the exception of
+NEVER)\&. The option values described in the preceding list may be used as of MySQL 5\&.1\&.24, with the exception of
UNSPEC
and
-DECODE\-ROWS, which are available as of MySQL 5.1.28.
+DECODE\-ROWS, which are available as of MySQL 5\&.1\&.28\&.
.sp
For examples that show the effect of
\fB\-\-base64\-output\fR
and
\fB\-\-verbose\fR
on row event output, see
-the section called \(lq\fBMYSQLBINLOG\fR ROW EVENT DISPLAY\(rq.
-.TP 3n
-\(bu
+the section called \(lqMYSQLBINLOG ROW EVENT DISPLAY\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: character-sets-dir option
+.\" character-sets-dir option: mysqlbinlog
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: database option
+.\" database option: mysqlbinlog
\fB\-\-database=\fR\fB\fIdb_name\fR\fR,
\fB\-d \fR\fB\fIdb_name\fR\fR
.sp
-List entries for just this database (local log only). You can only specify one database with this option \- if you specify multiple
+List entries for just this database (local log only)\&. You can only specify one database with this option \- if you specify multiple
\fB\-\-database\fR
-options, only the last one is used. This option forces
+options, only the last one is used\&. This option forces
\fBmysqlbinlog\fR
to output entries from the binary log where the default database (that is, the one selected by
USE) is
-\fIdb_name\fR. Note that this does not replicate cross\-database statements such as
-UPDATE \fIsome_db.some_table\fR SET foo='bar'
-while having selected a different database or no database.
-.TP 3n
-\(bu
+\fIdb_name\fR\&. Note that this does not replicate cross\-database statements such as
+UPDATE \fIsome_db\&.some_table\fR SET foo=\'bar\'
+while having selected a different database or no database\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBNote\fR
+.ps -1
+.br
+This option did not work correctly for
+\fBmysqlbinlog\fR
+with row\-based logging prior to MySQL 5\&.1\&.37\&. (\m[blue]\fBBug#42941\fR\m[]\&\s-2\u[1]\d\s+2)
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: debug option
+.\" debug option: mysqlbinlog
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. A typical
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string is often
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/mysqlbinlog\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: debug-check option
+.\" debug-check option: mysqlbinlog
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: debug-info option
+.\" debug-info option: mysqlbinlog
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: disable-log-bin option
+.\" disable-log-bin option: mysqlbinlog
\fB\-\-disable\-log\-bin\fR,
\fB\-D\fR
.sp
-Disable binary logging. This is useful for avoiding an endless loop if you use the
+Disable binary logging\&. This is useful for avoiding an endless loop if you use the
\fB\-\-to\-last\-log\fR
-option and are sending the output to the same MySQL server. This option also is useful when restoring after a crash to avoid duplication of the statements you have logged.
+option and are sending the output to the same MySQL server\&. This option also is useful when restoring after a crash to avoid duplication of the statements you have logged\&.
.sp
This option requires that you have the
SUPER
-privilege. It causes
+privilege\&. It causes
\fBmysqlbinlog\fR
to include a
SET sql_log_bin = 0
-statement in its output to disable binary logging of the remaining output. The
+statement in its output to disable binary logging of the remaining output\&. The
SET
statement is ineffective unless you have the
SUPER
-privilege.
-.TP 3n
-\(bu
+privilege\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: force-read option
+.\" force-read option: mysqlbinlog
\fB\-\-force\-read\fR,
\fB\-f\fR
.sp
With this option, if
\fBmysqlbinlog\fR
-reads a binary log event that it does not recognize, it prints a warning, ignores the event, and continues. Without this option,
+reads a binary log event that it does not recognize, it prints a warning, ignores the event, and continues\&. Without this option,
\fBmysqlbinlog\fR
-stops if it reads such an event.
-.TP 3n
-\(bu
+stops if it reads such an event\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: hexdump option
+.\" hexdump option: mysqlbinlog
\fB\-\-hexdump\fR,
\fB\-H\fR
.sp
Display a hex dump of the log in comments, as described in
-the section called \(lq\fBMYSQLBINLOG\fR HEX DUMP FORMAT\(rq. This output can be helpful for replication debugging. This option was added in MySQL 5.1.2.
-.TP 3n
-\(bu
+the section called \(lqMYSQLBINLOG HEX DUMP FORMAT\(rq\&. This output can be helpful for replication debugging\&. This option was added in MySQL 5\&.1\&.2\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: host option
+.\" host option: mysqlbinlog
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Get the binary log from the MySQL server on the given host.
-.TP 3n
-\(bu
+Get the binary log from the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: local-load option
+.\" local-load option: mysqlbinlog
\fB\-\-local\-load=\fR\fB\fIpath\fR\fR,
\fB\-l \fR\fB\fIpath\fR\fR
.sp
Prepare local temporary files for
LOAD DATA INFILE
-in the specified directory.
-.TP 3n
-\(bu
+in the specified directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: offset option
+.\" offset option: mysqlbinlog
\fB\-\-offset=\fR\fB\fIN\fR\fR,
\fB\-o \fR\fB\fIN\fR\fR
.sp
Skip the first
\fIN\fR
-entries in the log.
-.TP 3n
-\(bu
+entries in the log\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: password option
+.\" password option: mysqlbinlog
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: port option
+.\" port option: mysqlbinlog
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for connecting to a remote server.
-.TP 3n
-\(bu
+The TCP/IP port number to use for connecting to a remote server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: position option
+.\" position option: mysqlbinlog
\fB\-\-position=\fR\fB\fIN\fR\fR,
\fB\-j \fR\fB\fIN\fR\fR
.sp
-Deprecated. Use
+Deprecated\&. Use
\fB\-\-start\-position\fR
-instead.
-.TP 3n
-\(bu
+instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: protocol option
+.\" protocol option: mysqlbinlog
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: read-from-remote-server option
+.\" read-from-remote-server option: mysqlbinlog
\fB\-\-read\-from\-remote\-server\fR,
\fB\-R\fR
.sp
-Read the binary log from a MySQL server rather than reading a local log file. Any connection parameter options are ignored unless this option is given as well. These options are
+Read the binary log from a MySQL server rather than reading a local log file\&. Any connection parameter options are ignored unless this option is given as well\&. These options are
\fB\-\-host\fR,
\fB\-\-password\fR,
\fB\-\-port\fR,
\fB\-\-protocol\fR,
\fB\-\-socket\fR, and
-\fB\-\-user\fR.
+\fB\-\-user\fR\&.
.sp
-This option requires that the remote server be running. It works only for binary log files on the remote server, not relay log files.
-.TP 3n
-\(bu
+This option requires that the remote server be running\&. It works only for binary log files on the remote server, not relay log files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: result-file option
+.\" result-file option: mysqlbinlog
\fB\-\-result\-file=\fR\fB\fIname\fR\fR,
\fB\-r \fR\fB\fIname\fR\fR
.sp
-Direct output to the given file.
-.TP 3n
-\(bu
+Direct output to the given file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: server-id option
+.\" server-id option: mysqlbinlog
\fB\-\-server\-id=\fR\fB\fIid\fR\fR
.sp
-Extract only those events created by the server having the given server ID. This option is available as of MySQL 5.1.4.
-.TP 3n
-\(bu
+Extract only those events created by the server having the given server ID\&. This option is available as of MySQL 5\&.1\&.4\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: set-charset option
+.\" set-charset option: mysqlbinlog
\fB\-\-set\-charset=\fR\fB\fIcharset_name\fR\fR
.sp
Add a
SET NAMES \fIcharset_name\fR
-statement to the output to specify the character set to be used for processing log files. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+statement to the output to specify the character set to be used for processing log files\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: short-form option
+.\" short-form option: mysqlbinlog
\fB\-\-short\-form\fR,
\fB\-s\fR
.sp
-Display only the statements contained in the log, without any extra information.
-.TP 3n
-\(bu
+Display only the statements contained in the log, without any extra information\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: socket option
+.\" socket option: mysqlbinlog
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: start-datetime option
+.\" start-datetime option: mysqlbinlog
\fB\-\-start\-datetime=\fR\fB\fIdatetime\fR\fR
.sp
Start reading the binary log at the first event having a timestamp equal to or later than the
\fIdatetime\fR
-argument. The
+argument\&. The
\fIdatetime\fR
value is relative to the local time zone on the machine where you run
-\fBmysqlbinlog\fR. The value should be in a format accepted for the
+\fBmysqlbinlog\fR\&. The value should be in a format accepted for the
DATETIME
or
TIMESTAMP
-data types. For example:
+data types\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog \-\-start\-datetime="2005\-12\-25 11:25:56" binlog.000003\fR
+shell> \fBmysqlbinlog \-\-start\-datetime="2005\-12\-25 11:25:56" binlog\&.000003\fR
.fi
+.if n \{\
+.RE
+.\}
+.sp
+This option is useful for point\-in\-time recovery\&. See
+Section\ \&6.2, \(lqExample Backup and Recovery Strategy\(rq\&.
.RE
-This option is useful for point\-in\-time recovery. See
-Section\ 6.2, \(lqExample Backup and Recovery Strategy\(rq.
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: start-position option
+.\" start-position option: mysqlbinlog
\fB\-\-start\-position=\fR\fB\fIN\fR\fR
.sp
Start reading the binary log at the first event having a position equal to or greater than
-\fIN\fR. This option applies to the first log file named on the command line.
-.TP 3n
-\(bu
+\fIN\fR\&. This option applies to the first log file named on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: stop-datetime option
+.\" stop-datetime option: mysqlbinlog
\fB\-\-stop\-datetime=\fR\fB\fIdatetime\fR\fR
.sp
Stop reading the binary log at the first event having a timestamp equal to or later than the
\fIdatetime\fR
-argument. This option is useful for point\-in\-time recovery. See the description of the
+argument\&. This option is useful for point\-in\-time recovery\&. See the description of the
\fB\-\-start\-datetime\fR
option for information about the
\fIdatetime\fR
-value.
-.TP 3n
-\(bu
+value\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: stop-position option
+.\" stop-position option: mysqlbinlog
\fB\-\-stop\-position=\fR\fB\fIN\fR\fR
.sp
Stop reading the binary log at the first event having a position equal to or greater than
-\fIN\fR. This option applies to the last log file named on the command line.
-.TP 3n
-\(bu
+\fIN\fR\&. This option applies to the last log file named on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: to-last-log option
+.\" to-last-log option: mysqlbinlog
\fB\-\-to\-last\-log\fR,
\fB\-t\fR
.sp
-Do not stop at the end of the requested binary log from a MySQL server, but rather continue printing until the end of the last binary log. If you send the output to the same MySQL server, this may lead to an endless loop. This option requires
-\fB\-\-read\-from\-remote\-server\fR.
-.TP 3n
-\(bu
+Do not stop at the end of the requested binary log from a MySQL server, but rather continue printing until the end of the last binary log\&. If you send the output to the same MySQL server, this may lead to an endless loop\&. This option requires
+\fB\-\-read\-from\-remote\-server\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: user option
+.\" user option: mysqlbinlog
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to a remote server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to a remote server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: verbose option
+.\" verbose option: mysqlbinlog
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Reconstruct row events and display them as commented SQL statements. If given twice, the output includes comments to indicate column data types and some metadata. This option was added in MySQL 5.1.28.
+Reconstruct row events and display them as commented SQL statements\&. If given twice, the output includes comments to indicate column data types and some metadata\&. This option was added in MySQL 5\&.1\&.28\&.
.sp
For examples that show the effect of
\fB\-\-base64\-output\fR
and
\fB\-\-verbose\fR
on row event output, see
-the section called \(lq\fBMYSQLBINLOG\fR ROW EVENT DISPLAY\(rq.
-.TP 3n
-\(bu
+the section called \(lqMYSQLBINLOG ROW EVENT DISPLAY\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: version option
+.\" version option: mysqlbinlog
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: write-binlog option
+.\" write-binlog option: mysqlbinlog
\fB\-\-write\-binlog\fR
.sp
This option is enabled by default, so that
@@ -425,111 +823,137 @@ OPTIMIZE TABLE, and
REPAIR TABLE
statements generated by
\fBmysqlcheck\fR
-are written to the binary log. Use
+are written to the binary log\&. Use
\fB\-\-skip\-write\-binlog\fR
to cause
NO_WRITE_TO_BINLOG
-to be added to the statements so that they are not logged. Use the
+to be added to the statements so that they are not logged\&. Use the
\fB\-\-skip\-write\-binlog\fR
-when these statements should not be sent to replication slaves or run when using the binary logs for recovery from backup. This option was added in MySQL 5.1.18.
-.sp
+when these statements should not be sent to replication slaves or run when using the binary logs for recovery from backup\&. This option was added in MySQL 5\&.1\&.18\&.
.RE
.PP
You can also set the following variable by using
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
syntax:
-.TP 3n
-\(bu
-open_files_limit
.sp
-Specify the number of open file descriptors to reserve.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" open_files_limit variable
+open_files_limit
.sp
+Specify the number of open file descriptors to reserve\&.
.RE
.PP
You can pipe the output of
\fBmysqlbinlog\fR
into the
\fBmysql\fR
-client to execute the statements contained in the binary log. This is used to recover from a crash when you have an old backup (see
-Section\ 6.1, \(lqDatabase Backups\(rq). For example:
+client to execute the statements contained in the binary log\&. This is used to recover from a crash when you have an old backup (see
+Section\ \&6.1, \(lqDatabase Backups\(rq)\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.000001 | mysql\fR
+shell> \fBmysqlbinlog binlog\&.000001 | mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Or:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.[0\-9]* | mysql\fR
+shell> \fBmysqlbinlog binlog\&.[0\-9]* | mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
You can also redirect the output of
\fBmysqlbinlog\fR
-to a text file instead, if you need to modify the statement log first (for example, to remove statements that you do not want to execute for some reason). After editing the file, execute the statements that it contains by using it as input to the
+to a text file instead, if you need to modify the statement log first (for example, to remove statements that you do not want to execute for some reason)\&. After editing the file, execute the statements that it contains by using it as input to the
\fBmysql\fR
-program.
+program\&.
.PP
\fBmysqlbinlog\fR
has the
\fB\-\-start\-position\fR
-option, which prints only those statements with an offset in the binary log greater than or equal to a given position (the given position must match the start of one event). It also has options to stop and start when it sees an event with a given date and time. This enables you to perform point\-in\-time recovery using the
+option, which prints only those statements with an offset in the binary log greater than or equal to a given position (the given position must match the start of one event)\&. It also has options to stop and start when it sees an event with a given date and time\&. This enables you to perform point\-in\-time recovery using the
\fB\-\-stop\-datetime\fR
option (to be able to say, for example,
-\(lqroll forward my databases to how they were today at 10:30 a.m.\(rq).
+\(lqroll forward my databases to how they were today at 10:30 a\&.m\&.\(rq)\&.
.PP
-If you have more than one binary log to execute on the MySQL server, the safe method is to process them all using a single connection to the server. Here is an example that demonstrates what may be
+If you have more than one binary log to execute on the MySQL server, the safe method is to process them all using a single connection to the server\&. Here is an example that demonstrates what may be
\fIunsafe\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.000001 | mysql # DANGER!!\fR
-shell> \fBmysqlbinlog binlog.000002 | mysql # DANGER!!\fR
+shell> \fBmysqlbinlog binlog\&.000001 | mysql # DANGER!!\fR
+shell> \fBmysqlbinlog binlog\&.000002 | mysql # DANGER!!\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Processing binary logs this way using different connections to the server causes problems if the first log file contains a
CREATE TEMPORARY TABLE
-statement and the second log contains a statement that uses the temporary table. When the first
+statement and the second log contains a statement that uses the temporary table\&. When the first
\fBmysql\fR
-process terminates, the server drops the temporary table. When the second
+process terminates, the server drops the temporary table\&. When the second
\fBmysql\fR
process attempts to use the table, the server reports
-\(lqunknown table.\(rq
+\(lqunknown table\&.\(rq
.PP
To avoid problems like this, use a
\fIsingle\fR
-connection to execute the contents of all binary logs that you want to process. Here is one way to do so:
+connection to execute the contents of all binary logs that you want to process\&. Here is one way to do so:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.000001 binlog.000002 | mysql\fR
+shell> \fBmysqlbinlog binlog\&.000001 binlog\&.000002 | mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Another approach is to write all the logs to a single file and then process the file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.000001 > /tmp/statements.sql\fR
-shell> \fBmysqlbinlog binlog.000002 >> /tmp/statements.sql\fR
-shell> \fBmysql \-e "source /tmp/statements.sql"\fR
+shell> \fBmysqlbinlog binlog\&.000001 > /tmp/statements\&.sql\fR
+shell> \fBmysqlbinlog binlog\&.000002 >> /tmp/statements\&.sql\fR
+shell> \fBmysql \-e "source /tmp/statements\&.sql"\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqlbinlog\fR
can produce output that reproduces a
LOAD DATA INFILE
-operation without the original data file.
+operation without the original data file\&.
\fBmysqlbinlog\fR
copies the data to a temporary file and writes a
LOAD DATA LOCAL INFILE
-statement that refers to the file. The default location of the directory where these files are written is system\-specific. To specify a directory explicitly, use the
+statement that refers to the file\&. The default location of the directory where these files are written is system\-specific\&. To specify a directory explicitly, use the
\fB\-\-local\-load\fR
-option.
+option\&.
.PP
Because
\fBmysqlbinlog\fR
@@ -540,72 +964,111 @@ LOAD DATA LOCAL INFILE
statements (that is, it adds
LOCAL), both the client and the server that you use to process the statements must be configured to allow
LOCAL
-capability. See
-Section\ 5.3.4, \(lqSecurity Issues with LOAD DATA LOCAL\(rq.
+capability\&. See
+Section\ \&5.3.4, \(lqSecurity Issues with LOAD DATA LOCAL\(rq\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBWarning\fR
+.ps -1
+.br
.PP
The temporary files created for
LOAD DATA LOCAL
statements are
\fInot\fR
-automatically deleted because they are needed until you actually execute those statements. You should delete the temporary files yourself after you no longer need the statement log. The files can be found in the temporary file directory and have names like
-\fIoriginal_file_name\-#\-#\fR.
-.SH "\fBMYSQLBINLOG\fR HEX DUMP FORMAT"
+automatically deleted because they are needed until you actually execute those statements\&. You should delete the temporary files yourself after you no longer need the statement log\&. The files can be found in the temporary file directory and have names like
+\fIoriginal_file_name\-#\-#\fR\&.
+.sp .5v
+.RE
+.SH "MYSQLBINLOG HEX DUMP FORMAT"
.PP
The
\fB\-\-hexdump\fR
option produces a hex dump of the log contents:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog \-\-hexdump master\-bin.000001\fR
+shell> \fBmysqlbinlog \-\-hexdump master\-bin\&.000001\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The hex output consists of comment lines beginning with
#, so the output might look like this for the preceding command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-/*!40019 SET @@session.max_insert_delayed_threads=0*/;
+/*!40019 SET @@session\&.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
# at 4
#051024 17:24:13 server id 1 end_log_pos 98
# Position Timestamp Type Master ID Size Master Pos Flags
# 00000004 9d fc 5c 43 0f 01 00 00 00 5e 00 00 00 62 00 00 00 00 00
-# 00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l|
-# 00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |og..............|
-# 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
-# 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |.......C.8......|
-# 00000057 04 04 04 04 12 00 00 4b 00 04 1a |.......K...|
-# Start: binlog v 4, server v 5.0.15\-debug\-log created 051024 17:24:13
+# 00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |\&.\&.5\&.0\&.15\&.debug\&.l|
+# 00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |og\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.|
+# 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.|
+# 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |\&.\&.\&.\&.\&.\&.\&.C\&.8\&.\&.\&.\&.\&.\&.|
+# 00000057 04 04 04 04 12 00 00 4b 00 04 1a |\&.\&.\&.\&.\&.\&.\&.K\&.\&.\&.|
+# Start: binlog v 4, server v 5\&.0\&.15\-debug\-log created 051024 17:24:13
# at startup
ROLLBACK;
.fi
+.if n \{\
.RE
+.\}
.PP
-Hex dump output currently contains the following elements. This format is subject to change.
-.TP 3n
-\(bu
-Position: The byte position within the log file.
-.TP 3n
-\(bu
-Timestamp: The event timestamp. In the example shown,
-\'9d fc 5c 43'
+Hex dump output currently contains the following elements\&. This format is subject to change\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Position: The byte position within the log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Timestamp: The event timestamp\&. In the example shown,
+\'9d fc 5c 43\'
is the representation of
-\'051024 17:24:13'
-in hexadecimal.
-.TP 3n
-\(bu
-Type: The event type code. In the example shown,
-\'0f'
+\'051024 17:24:13\'
+in hexadecimal\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Type: The event type code\&. In the example shown,
+\'0f\'
indicates a
-FORMAT_DESCRIPTION_EVENT. The following table lists the possible type codes.
+FORMAT_DESCRIPTION_EVENT\&. The following table lists the possible type codes\&.
.TS
allbox tab(:);
l l l
@@ -644,14 +1107,74 @@ T}:T{
Meaning
T}
T{
+00
+T}:T{
+UNKNOWN_EVENT
+T}:T{
+This event should never be present in the log\&.
+T}
+T{
+01
+T}:T{
+START_EVENT_V3
+T}:T{
+This indicates the start of a log file written by MySQL 4 or earlier\&.
+T}
+T{
+02
+T}:T{
+QUERY_EVENT
+T}:T{
+The most common type of events\&. These contain statements executed on the
+ master\&.
+T}
+T{
+03
+T}:T{
+STOP_EVENT
+T}:T{
+Indicates that master has stopped\&.
+T}
+T{
+04
+T}:T{
+ROTATE_EVENT
+T}:T{
+Written when the master switches to a new log file\&.
+T}
+T{
+05
+T}:T{
+INTVAR_EVENT
+T}:T{
+Used for AUTO_INCREMENT values or when the
+ LAST_INSERT_ID()
+ function is used in the statement\&.
+T}
+T{
+06
+T}:T{
+LOAD_EVENT
+T}:T{
+Used for LOAD DATA
+ INFILE in MySQL 3\&.23\&.
+T}
+T{
+07
+T}:T{
+SLAVE_EVENT
+T}:T{
+Reserved for future use\&.
+T}
+T{
08
T}:T{
CREATE_FILE_EVENT
T}:T{
Used for LOAD DATA
- INFILE statements. This indicates the
- start of execution of such a statement. A temporary
- file is created on the slave. Used in MySQL 4 only.
+ INFILE statements\&. This indicates the
+ start of execution of such a statement\&. A temporary
+ file is created on the slave\&. Used in MySQL 4 only\&.
T}
T{
09
@@ -660,8 +1183,8 @@ APPEND_BLOCK_EVENT
T}:T{
Contains data for use in a
LOAD DATA
- INFILE statement. The data is stored in
- the temporary file on the slave.
+ INFILE statement\&. The data is stored in
+ the temporary file on the slave\&.
T}
T{
0a
@@ -669,9 +1192,9 @@ T}:T{
EXEC_LOAD_EVENT
T}:T{
Used for LOAD DATA
- INFILE statements. The contents of the
- temporary file is stored in the table on the slave.
- Used in MySQL 4 only.
+ INFILE statements\&. The contents of the
+ temporary file is stored in the table on the slave\&.
+ Used in MySQL 4 only\&.
T}
T{
0b
@@ -679,8 +1202,8 @@ T}:T{
DELETE_FILE_EVENT
T}:T{
Rollback of a LOAD DATA
- INFILE statement. The temporary file
- should be deleted on the slave.
+ INFILE statement\&. The temporary file
+ should be deleted on the slave\&.
T}
T{
0c
@@ -688,7 +1211,7 @@ T}:T{
NEW_LOAD_EVENT
T}:T{
Used for LOAD DATA
- INFILE in MySQL 4 and earlier.
+ INFILE in MySQL 4 and earlier\&.
T}
T{
0d
@@ -697,28 +1220,28 @@ RAND_EVENT
T}:T{
Used to send information about random values if the
RAND() function is
- used in the statement.
+ used in the statement\&.
T}
T{
0e
T}:T{
USER_VAR_EVENT
T}:T{
-Used to replicate user variables.
+Used to replicate user variables\&.
T}
T{
0f
T}:T{
FORMAT_DESCRIPTION_EVENT
T}:T{
-This indicates the start of a log file written by MySQL 5 or later.
+This indicates the start of a log file written by MySQL 5 or later\&.
T}
T{
10
T}:T{
XID_EVENT
T}:T{
-Event indicating commit of an XA transaction.
+Event indicating commit of an XA transaction\&.
T}
T{
11
@@ -726,14 +1249,7 @@ T}:T{
BEGIN_LOAD_QUERY_EVENT
T}:T{
Used for LOAD DATA
- INFILE statements in MySQL 5 and later.
-T}
-T{
-00
-T}:T{
-UNKNOWN_EVENT
-T}:T{
-This event should never be present in the log.
+ INFILE statements in MySQL 5 and later\&.
T}
T{
12
@@ -741,137 +1257,116 @@ T}:T{
EXECUTE_LOAD_QUERY_EVENT
T}:T{
Used for LOAD DATA
- INFILE statements in MySQL 5 and later.
+ INFILE statements in MySQL 5 and later\&.
T}
T{
13
T}:T{
TABLE_MAP_EVENT
T}:T{
-Information about a table definition. Used in MySQL 5.1.5 and later.
+Information about a table definition\&. Used in MySQL 5\&.1\&.5 and later\&.
T}
T{
14
T}:T{
PRE_GA_WRITE_ROWS_EVENT
T}:T{
-Row data for a single table that should be created. Used in MySQL 5.1.5
- to 5.1.17.
+Row data for a single table that should be created\&. Used in MySQL 5\&.1\&.5
+ to 5\&.1\&.17\&.
T}
T{
15
T}:T{
PRE_GA_UPDATE_ROWS_EVENT
T}:T{
-Row data for a single table that needs to be updated. Used in MySQL
- 5.1.5 to 5.1.17.
+Row data for a single table that needs to be updated\&. Used in MySQL
+ 5\&.1\&.5 to 5\&.1\&.17\&.
T}
T{
16
T}:T{
PRE_GA_DELETE_ROWS_EVENT
T}:T{
-Row data for a single table that should be deleted. Used in MySQL 5.1.5
- to 5.1.17.
+Row data for a single table that should be deleted\&. Used in MySQL 5\&.1\&.5
+ to 5\&.1\&.17\&.
T}
T{
17
T}:T{
WRITE_ROWS_EVENT
T}:T{
-Row data for a single table that should be created. Used in MySQL 5.1.18
- and later.
+Row data for a single table that should be created\&. Used in MySQL 5\&.1\&.18
+ and later\&.
T}
T{
18
T}:T{
UPDATE_ROWS_EVENT
T}:T{
-Row data for a single table that needs to be updated. Used in MySQL
- 5.1.18 and later.
+Row data for a single table that needs to be updated\&. Used in MySQL
+ 5\&.1\&.18 and later\&.
T}
T{
19
T}:T{
DELETE_ROWS_EVENT
T}:T{
-Row data for a single table that should be deleted. Used in MySQL 5.1.18
- and later.
+Row data for a single table that should be deleted\&. Used in MySQL 5\&.1\&.18
+ and later\&.
T}
T{
1a
T}:T{
INCIDENT_EVENT
T}:T{
-Something out of the ordinary happened. Added in MySQL 5.1.18.
-T}
-T{
-01
-T}:T{
-START_EVENT_V3
-T}:T{
-This indicates the start of a log file written by MySQL 4 or earlier.
-T}
-T{
-02
-T}:T{
-QUERY_EVENT
-T}:T{
-The most common type of events. These contain statements executed on the
- master.
-T}
-T{
-03
-T}:T{
-STOP_EVENT
-T}:T{
-Indicates that master has stopped.
-T}
-T{
-04
-T}:T{
-ROTATE_EVENT
-T}:T{
-Written when the master switches to a new log file.
-T}
-T{
-05
-T}:T{
-INTVAR_EVENT
-T}:T{
-Used for AUTO_INCREMENT values or when the
- LAST_INSERT_ID()
- function is used in the statement.
-T}
-T{
-06
-T}:T{
-LOAD_EVENT
-T}:T{
-Used for LOAD DATA
- INFILE in MySQL 3.23.
-T}
-T{
-07
-T}:T{
-SLAVE_EVENT
-T}:T{
-Reserved for future use.
+Something out of the ordinary happened\&. Added in MySQL 5\&.1\&.18\&.
T}
.TE
+.sp 1
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Master ID: The server ID of the master that created the event\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Size: The size in bytes of the event\&.
+.RE
.sp
-.TP 3n
-\(bu
-Master ID: The server ID of the master that created the event.
-.TP 3n
-\(bu
-Size: The size in bytes of the event.
-.TP 3n
-\(bu
-Master Pos: The position of the next event in the original master log file.
-.TP 3n
-\(bu
-Flags: 16 flags. Currently, the following flags are used. The others are reserved for future use.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Master Pos: The position of the next event in the original master log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Flags: 16 flags\&. Currently, the following flags are used\&. The others are reserved for future use\&.
.TS
allbox tab(:);
l l l
@@ -891,21 +1386,21 @@ T{
T}:T{
LOG_EVENT_BINLOG_IN_USE_F
T}:T{
-Log file correctly closed. (Used only in
- FORMAT_DESCRIPTION_EVENT.) If
+Log file correctly closed\&. (Used only in
+ FORMAT_DESCRIPTION_EVENT\&.) If
this flag is set (if the flags are, for example,
- '01 00') in a
+ \'01 00\') in a
FORMAT_DESCRIPTION_EVENT, the log
- file has not been properly closed. Most probably
+ file has not been properly closed\&. Most probably
this is because of a master crash (for example, due
- to power failure).
+ to power failure)\&.
T}
T{
02
T}:T{
-\
+\ \&
T}:T{
-Reserved for future use.
+Reserved for future use\&.
T}
T{
04
@@ -913,8 +1408,8 @@ T}:T{
LOG_EVENT_THREAD_SPECIFIC_F
T}:T{
Set if the event is dependent on the connection it was executed in (for
- example, '04 00'), for example,
- if the event uses temporary tables.
+ example, \'04 00\'), for example,
+ if the event uses temporary tables\&.
T}
T{
08
@@ -922,27 +1417,31 @@ T}:T{
LOG_EVENT_SUPPRESS_USE_F
T}:T{
Set in some circumstances when the event is not dependent on the default
- database.
+ database\&.
T}
.TE
-.sp
-.SH "\fBMYSQLBINLOG\fR ROW EVENT DISPLAY"
+.sp 1
+.RE
+.SH "MYSQLBINLOG ROW EVENT DISPLAY"
+.\" BINLOG statement: mysqlbinlog output
.PP
The following examples illustrate how
\fBmysqlbinlog\fR
-displays row events that specify data modifications. These correspond to events with the
+displays row events that specify data modifications\&. These correspond to events with the
WRITE_ROWS_EVENT,
UPDATE_ROWS_EVENT, and
DELETE_ROWS_EVENT
-type codes. The
+type codes\&. The
\fB\-\-base64\-output=DECODE\-ROWS\fR
and
\fB\-\-verbose\fR
-options may be used to affect row event output. These options are available as of MySQL 5.1.28.
+options may be used to affect row event output\&. These options are available as of MySQL 5\&.1\&.28\&.
.PP
Suppose that the server is using row\-based binary logging and that you execute the following sequence of statements:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
CREATE TABLE t
(
@@ -951,45 +1450,51 @@ CREATE TABLE t
date DATE NULL
) ENGINE = InnoDB;
START TRANSACTION;
-INSERT INTO t VALUES(1, 'apple', NULL);
-UPDATE t SET name = 'pear', date = '2009\-01\-01' WHERE id = 1;
+INSERT INTO t VALUES(1, \'apple\', NULL);
+UPDATE t SET name = \'pear\', date = \'2009\-01\-01\' WHERE id = 1;
DELETE FROM t WHERE id = 1;
COMMIT;
.fi
+.if n \{\
.RE
+.\}
.PP
By default,
\fBmysqlbinlog\fR
displays row events encoded as base\-64 strings using
BINLOG
-statements. Omitting extraneous lines, the output for the row events produced by the preceding statement sequence looks like this:
+statements\&. Omitting extraneous lines, the output for the row events produced by the preceding statement sequence looks like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbinlog \fR\fB\fIlog_file\fR\fR
-...
+\&.\&.\&.
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
\'/*!*/;
-...
+\&.\&.\&.
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
\'/*!*/;
-...
+\&.\&.\&.
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
\'/*!*/;
.fi
+.if n \{\
.RE
+.\}
.PP
To see the row events as comments in the form of
\(lqpseudo\-SQL\(rq
@@ -999,106 +1504,114 @@ with the
\fB\-\-verbose\fR
or
\fB\-v\fR
-option. The output will contain lines beginning with
+option\&. The output will contain lines beginning with
###:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbinlog \-v \fR\fB\fIlog_file\fR\fR
-...
+\&.\&.\&.
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
\'/*!*/;
-### INSERT INTO test.t
+### INSERT INTO test\&.t
### SET
### @1=1
-### @2='apple'
+### @2=\'apple\'
### @3=NULL
-...
+\&.\&.\&.
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
\'/*!*/;
-### UPDATE test.t
+### UPDATE test\&.t
### WHERE
### @1=1
-### @2='apple'
+### @2=\'apple\'
### @3=NULL
### SET
### @1=1
-### @2='pear'
-### @3='2009:01:01'
-...
+### @2=\'pear\'
+### @3=\'2009:01:01\'
+\&.\&.\&.
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
\'/*!*/;
-### DELETE FROM test.t
+### DELETE FROM test\&.t
### WHERE
### @1=1
-### @2='pear'
-### @3='2009:01:01'
+### @2=\'pear\'
+### @3=\'2009:01:01\'
.fi
+.if n \{\
.RE
+.\}
.PP
Specify
\fB\-\-verbose\fR
or
\fB\-v\fR
-twice to also display data types and some metadata for each column. The output will contain an additional comment following each column change:
+twice to also display data types and some metadata for each column\&. The output will contain an additional comment following each column change:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbinlog \-vv \fR\fB\fIlog_file\fR\fR
-...
+\&.\&.\&.
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
\'/*!*/;
-### INSERT INTO test.t
+### INSERT INTO test\&.t
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
-### @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
+### @2=\'apple\' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
-...
+\&.\&.\&.
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
\'/*!*/;
-### UPDATE test.t
+### UPDATE test\&.t
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
-### @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
+### @2=\'apple\' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
-### @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
-### @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
-...
+### @2=\'pear\' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
+### @3=\'2009:01:01\' /* DATE meta=0 nullable=1 is_null=0 */
+\&.\&.\&.
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
\'/*!*/;
-### DELETE FROM test.t
+### DELETE FROM test\&.t
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
-### @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
-### @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
+### @2=\'pear\' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
+### @3=\'2009:01:01\' /* DATE meta=0 nullable=1 is_null=0 */
.fi
+.if n \{\
.RE
+.\}
.PP
You can tell
\fBmysqlbinlog\fR
@@ -1106,78 +1619,112 @@ to suppress the
BINLOG
statements for row events by using the
\fB\-\-base64\-output=DECODE\-ROWS\fR
-option. This is similar to
+option\&. This is similar to
\fB\-\-base64\-output=NEVER\fR
-but does not exit with an error if a row event is found. The combination of
+but does not exit with an error if a row event is found\&. The combination of
\fB\-\-base64\-output=DECODE\-ROWS\fR
and
\fB\-\-verbose\fR
provides a convenient way to see row events only as SQL statements:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbinlog \-v \-\-base64\-output=DECODE\-ROWS \fR\fB\fIlog_file\fR\fR
-...
+\&.\&.\&.
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
-### INSERT INTO test.t
+### INSERT INTO test\&.t
### SET
### @1=1
-### @2='apple'
+### @2=\'apple\'
### @3=NULL
-...
+\&.\&.\&.
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
-### UPDATE test.t
+### UPDATE test\&.t
### WHERE
### @1=1
-### @2='apple'
+### @2=\'apple\'
### @3=NULL
### SET
### @1=1
-### @2='pear'
-### @3='2009:01:01'
-...
+### @2=\'pear\'
+### @3=\'2009:01:01\'
+\&.\&.\&.
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
-### DELETE FROM test.t
+### DELETE FROM test\&.t
### WHERE
### @1=1
-### @2='pear'
-### @3='2009:01:01'
+### @2=\'pear\'
+### @3=\'2009:01:01\'
.fi
+.if n \{\
.RE
+.\}
.sp
+.if n \{\
+.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
You should not suppress
BINLOG
statements if you intend to re\-execute
\fBmysqlbinlog\fR
-output.
+output\&.
+.sp .5v
+.RE
.PP
The SQL statements produced by
\fB\-\-verbose\fR
for row events are much more readable than the corresponding
BINLOG
-statements. However, they do not correspond exactly to the original SQL statements that generated the events. The following limitations apply:
-.TP 3n
-\(bu
-The original column names are lost and replace by
+statements\&. However, they do not correspond exactly to the original SQL statements that generated the events\&. The following limitations apply:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+The original column names are lost and replaced by
@\fIN\fR, where
\fIN\fR
-is a column number.
-.TP 3n
-\(bu
+is a column number\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Character set information is not available in the binary log, which affects string column display:
-.RS 3n
-.TP 3n
-\(bu
-There is no distinction made between corresponding binary and non\-binary string types (BINARY
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+There is no distinction made between corresponding binary and nonbinary string types (BINARY
and
CHAR,
VARBINARY
@@ -1185,25 +1732,45 @@ and
VARCHAR,
BLOB
and
-TEXT). The output uses a data type of
+TEXT)\&. The output uses a data type of
STRING
for fixed\-length strings and
VARSTRING
-for variable\-length strings.
-.TP 3n
-\(bu
-For multi\-byte character sets, the maximum number of bytes per character is not present in the binary log, so the length for string types is displayed in bytes rather than in characters. For example,
+for variable\-length strings\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+For multi\-byte character sets, the maximum number of bytes per character is not present in the binary log, so the length for string types is displayed in bytes rather than in characters\&. For example,
STRING(4)
will be used as the data type for values from either of these column types:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
CHAR(4) CHARACTER SET latin1
CHAR(2) CHARACTER SET ucs2
.fi
+.if n \{\
.RE
-.TP 3n
-\(bu
+.\}
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Due to the storage format for events of type
UPDATE_ROWS_EVENT,
UPDATE
@@ -1211,20 +1778,41 @@ statements are displayed with the
WHERE
clause preceding the
SET
-clause.
+clause\&.
.RE
+.RE
+.PP
+Proper interpretation of row events requires the information from the format description event at the beginning of the binary log\&. Because
+\fBmysqlbinlog\fR
+does not know in advance whether the rest of the log contains row events, by default it displays the format description event using a
+BINLOG
+statement in the initial part of the output\&.
+.PP
+If the binary log is known not to contain any events requiring a
+BINLOG
+statement (that is, no row events), the
+\fB\-\-base64\-output=NEVER\fR
+option can be used to prevent this header from being written\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#42941
+.RS 4
+\%http://bugs.mysql.com/42941
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlbug.1'
--- a/man/mysqlbug.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlbug.1 2009-09-16 12:03:18 +0000
@@ -1,63 +1,78 @@
+'\" t
.\" Title: \fBmysqlbug\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLBUG\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLBUG\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlbug
.SH "NAME"
mysqlbug \- generate bug report
.SH "SYNOPSIS"
-.HP 9
+.HP \w'\fBmysqlbug\fR\ 'u
\fBmysqlbug\fR
.SH "DESCRIPTION"
.PP
-This program enables you to generate a bug report and send it to MySQL AB. It is a shell script and runs on Unix.
+This program enables you to generate a bug report and send it to Sun Microsystems, Inc\&. It is a shell script and runs on Unix\&.
.PP
The normal way to report bugs is to visit
-\fI\%http://bugs.mysql.com/\fR, which is the address for our bugs database. This database is public and can be browsed and searched by anyone. If you log in to the system, you can enter new reports. If you have no Web access, you can generate a bug report by using the
+\m[blue]\fB\%http://bugs.mysql.com/\fR\m[], which is the address for our bugs database\&. This database is public and can be browsed and searched by anyone\&. If you log in to the system, you can enter new reports\&. If you have no Web access, you can generate a bug report by using the
\fBmysqlbug\fR
-script.
+script\&.
.PP
\fBmysqlbug\fR
-helps you generate a report by determining much of the following information automatically, but if something important is missing, please include it with your message.
+helps you generate a report by determining much of the following information automatically, but if something important is missing, please include it with your message\&.
\fBmysqlbug\fR
can be found in the
-\fIscripts\fR
+scripts
directory (source distribution) and in the
-\fIbin\fR
-directory under your MySQL installation directory (binary distribution).
+bin
+directory under your MySQL installation directory (binary distribution)\&.
.PP
Invoke
\fBmysqlbug\fR
without arguments:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbug\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-The script will place you in an editor with a copy of the report to be sent. Edit the lines near the beginning that indicate the nature of the problem. Then write the file to save your changes, quit the editor, and
+The script will place you in an editor with a copy of the report to be sent\&. Edit the lines near the beginning that indicate the nature of the problem\&. Then write the file to save your changes, quit the editor, and
\fBmysqlbug\fR
-will send the report by email. perform.
+will send the report by email\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlcheck.1'
--- a/man/mysqlcheck.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlcheck.1 2009-09-16 12:03:18 +0000
@@ -1,37 +1,62 @@
+'\" t
.\" Title: \fBmysqlcheck\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLCHECK\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLCHECK\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlcheck
+.\" maintenance: tables
+.\" repair: tables
+.\" tables: maintenance
+.\" tables: repair
.SH "NAME"
-mysqlcheck \- a table maintenance and repair program
+mysqlcheck \- a table maintenance program
.SH "SYNOPSIS"
-.HP 46
-\fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB ...]]\fR
+.HP \w'\fBmysqlcheck\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB\ [\fR\fB\fItbl_name\fR\fR\fB\ \&.\&.\&.]]\fR\ 'u
+\fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.]]\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqlcheck\fR
-client checks, repairs, optimizes, and analyzes tables.
+client performs table maintenance: It checks, repairs, optimizes, or analyzes tables\&.
+.PP
+Each table is locked and therefore unavailable to other sessions while it is being processed\&. Table maintenance operations can be time\-consuming, particularly for large tables\&. If you use the
+\fB\-\-databases\fR
+or
+\fB\-\-all\-databases\fR
+option to process all tables in one or more databases, an invocation of
+\fBmysqlcheck\fR
+might take a long time\&. (This is also true for
+\fBmysql_upgrade\fR
+because that program invokes
+\fBmysqlcheck\fR
+to check all tables and repair them if necessary\&.)
.PP
\fBmysqlcheck\fR
is similar in function to
-\fBmyisamchk\fR, but works differently. The main operational difference is that
+\fBmyisamchk\fR, but works differently\&. The main operational difference is that
\fBmysqlcheck\fR
must be used when the
\fBmysqld\fR
server is running, whereas
\fBmyisamchk\fR
-should be used when it is not. The benefit of using
+should be used when it is not\&. The benefit of using
\fBmysqlcheck\fR
-is that you do not have to stop the server to check or repair your tables.
+is that you do not have to stop the server to perform table maintenance\&.
.PP
\fBmysqlcheck\fR
uses the SQL statements
@@ -39,51 +64,77 @@ CHECK TABLE,
REPAIR TABLE,
ANALYZE TABLE, and
OPTIMIZE TABLE
-in a convenient way for the user. It determines which statements to use for the operation you want to perform, and then sends the statements to the server to be executed. For details about which storage engines each statement works with, see the descriptions for those statements in
-Chapter\ 12, SQL Statement Syntax.
+in a convenient way for the user\&. It determines which statements to use for the operation you want to perform, and then sends the statements to the server to be executed\&. For details about which storage engines each statement works with, see the descriptions for those statements in
+Section\ \&12.5.2, \(lqTable Maintenance Statements\(rq\&.
.PP
The
MyISAM
-storage engine supports all four statements, so
+storage engine supports all four maintenance operations, so
\fBmysqlcheck\fR
-can be used to perform all four operations on
+can be used to perform any of them on
MyISAM
-tables. Other storage engines do not necessarily support all operations. In such cases, an error message is displayed. For example, if
-test.t
+tables\&. Other storage engines do not necessarily support all operations\&. In such cases, an error message is displayed\&. For example, if
+test\&.t
is a
MEMORY
table, an attempt to check it produces this result:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlcheck test t\fR
-test.t
-note : The storage engine for the table doesn't support check
+test\&.t
+note : The storage engine for the table doesn\'t support check
.fi
+.if n \{\
.RE
+.\}
+.PP
+If
+\fBmysqlcheck\fR
+is unable to repair a table, see
+Section\ \&2.12.4, \(lqRebuilding or Repairing Tables or Indexes\(rq
+for manual table repair strategies\&. This will be the case, for example, for
+InnoDB
+tables, which can be checked with
+CHECK TABLE, but not repaired with
+REPAIR TABLE\&.
.PP
The use of
\fBmysqlcheck\fR
-with partitioned tables is not supported before MySQL 5.1.27.
+with partitioned tables is not supported before MySQL 5\&.1\&.27\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBCaution\fR
+.ps -1
+.br
.PP
-It is best to make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss. Possible causes include but are not limited to file system errors.
+It is best to make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss\&. Possible causes include but are not limited to file system errors\&.
+.sp .5v
+.RE
.PP
There are three general ways to invoke
\fBmysqlcheck\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItables\fR\fR\fB]\fR
-shell> \fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \fR\fB\fIdb_name3\fR\fR\fB...]\fR
+shell> \fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \fR\fB\fIdb_name3\fR\fR\fB\&.\&.\&.]\fR
shell> \fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] \-\-all\-databases\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you do not name any tables following
\fIdb_name\fR
@@ -91,21 +142,21 @@ or if you use the
\fB\-\-databases\fR
or
\fB\-\-all\-databases\fR
-option, entire databases are checked.
+option, entire databases are checked\&.
.PP
\fBmysqlcheck\fR
-has a special feature compared to other client programs. The default behavior of checking tables (\fB\-\-check\fR) can be changed by renaming the binary. If you want to have a tool that repairs tables by default, you should just make a copy of
+has a special feature compared to other client programs\&. The default behavior of checking tables (\fB\-\-check\fR) can be changed by renaming the binary\&. If you want to have a tool that repairs tables by default, you should just make a copy of
\fBmysqlcheck\fR
named
\fBmysqlrepair\fR, or make a symbolic link to
\fBmysqlcheck\fR
named
-\fBmysqlrepair\fR. If you invoke
-\fBmysqlrepair\fR, it repairs tables.
+\fBmysqlrepair\fR\&. If you invoke
+\fBmysqlrepair\fR, it repairs tables\&.
.PP
The following names can be used to change
\fBmysqlcheck\fR
-default behavior.
+default behavior\&.
.TS
allbox tab(:);
l l
@@ -127,61 +178,151 @@ T}:T{
The default option is \fB\-\-optimize\fR
T}
.TE
-.sp
+.sp 1
.PP
\fBmysqlcheck\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: help option
+.\" help option: mysqlcheck
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: all-databases option
+.\" all-databases option: mysqlcheck
\fB\-\-all\-databases\fR,
\fB\-A\fR
.sp
-Check all tables in all databases. This is the same as using the
+Check all tables in all databases\&. This is the same as using the
\fB\-\-databases\fR
-option and naming all the databases on the command line.
-.TP 3n
-\(bu
+option and naming all the databases on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: all-in-1 option
+.\" all-in-1 option: mysqlcheck
\fB\-\-all\-in\-1\fR,
\fB\-1\fR
.sp
-Instead of issuing a statement for each table, execute a single statement for each database that names all the tables from that database to be processed.
-.TP 3n
-\(bu
+Instead of issuing a statement for each table, execute a single statement for each database that names all the tables from that database to be processed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: analyze option
+.\" analyze option: mysqlcheck
\fB\-\-analyze\fR,
\fB\-a\fR
.sp
-Analyze the tables.
-.TP 3n
-\(bu
+Analyze the tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: auto-repair option
+.\" auto-repair option: mysqlcheck
\fB\-\-auto\-repair\fR
.sp
-If a checked table is corrupted, automatically fix it. Any necessary repairs are done after all tables have been checked.
-.TP 3n
-\(bu
+If a checked table is corrupted, automatically fix it\&. Any necessary repairs are done after all tables have been checked\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: character-sets-dir option
+.\" character-sets-dir option: mysqlcheck
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: check option
+.\" check option: mysqlcheck
\fB\-\-check\fR,
\fB\-c\fR
.sp
-Check the tables for errors. This is the default operation.
-.TP 3n
-\(bu
+Check the tables for errors\&. This is the default operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: check-only-changed option
+.\" check-only-changed option: mysqlcheck
\fB\-\-check\-only\-changed\fR,
\fB\-C\fR
.sp
-Check only tables that have changed since the last check or that have not been closed properly.
-.TP 3n
-\(bu
+Check only tables that have changed since the last check or that have not been closed properly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: check-upgrade option
+.\" check-upgrade option: mysqlcheck
\fB\-\-check\-upgrade\fR,
\fB\-g\fR
.sp
@@ -189,223 +330,507 @@ Invoke
CHECK TABLE
with the
FOR UPGRADE
-option to check tables for incompatibilities with the current version of the server. This option automatically enables the
+option to check tables for incompatibilities with the current version of the server\&. This option automatically enables the
\fB\-\-fix\-db\-names\fR
and
\fB\-\-fix\-table\-names\fR
-options.
+options\&.
\fB\-\-check\-upgrade\fR
-was added in MySQL 5.1.7.
-.TP 3n
-\(bu
+was added in MySQL 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: compress option
+.\" compress option: mysqlcheck
\fB\-\-compress\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: databases option
+.\" databases option: mysqlcheck
\fB\-\-databases\fR,
\fB\-B\fR
.sp
-Process all tables in the named databases. Normally,
+Process all tables in the named databases\&. Normally,
\fBmysqlcheck\fR
-treats the first name argument on the command line as a database name and following names as table names. With this option, it treats all name arguments as database names.
-.TP 3n
-\(bu
+treats the first name argument on the command line as a database name and following names as table names\&. With this option, it treats all name arguments as database names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: debug option
+.\" debug option: mysqlcheck
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. A typical
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string is often
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: debug-check option
+.\" debug-check option: mysqlcheck
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: debug-info option
+.\" debug-info option: mysqlcheck
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: default-character-set option
+.\" default-character-set option: mysqlcheck
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: extended option
+.\" extended option: mysqlcheck
\fB\-\-extended\fR,
\fB\-e\fR
.sp
-If you are using this option to check tables, it ensures that they are 100% consistent but takes a long time.
+If you are using this option to check tables, it ensures that they are 100% consistent but takes a long time\&.
.sp
If you are using this option to repair tables, it runs an extended repair that may not only take a long time to execute, but may produce a lot of garbage rows also!
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: fast option
+.\" fast option: mysqlcheck
\fB\-\-fast\fR,
\fB\-F\fR
.sp
-Check only tables that have not been closed properly.
-.TP 3n
-\(bu
+Check only tables that have not been closed properly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: fix-db-names option
+.\" fix-db-names option: mysqlcheck
\fB\-\-fix\-db\-names\fR
.sp
-Convert database names to 5.1 format. Only database names that contain special characters are affected. This option was added in MySQL 5.1.7.
-.TP 3n
-\(bu
+Convert database names to 5\&.1 format\&. Only database names that contain special characters are affected\&. This option was added in MySQL 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: fix-table-names option
+.\" fix-table-names option: mysqlcheck
\fB\-\-fix\-table\-names\fR
.sp
-Convert table names to 5.1 format. Only table names that contain special characters are affected. This option was added in MySQL 5.1.7. As of MySQL 5.1.23, this option also applies to views.
-.TP 3n
-\(bu
+Convert table names to 5\&.1 format\&. Only table names that contain special characters are affected\&. This option was added in MySQL 5\&.1\&.7\&. As of MySQL 5\&.1\&.23, this option also applies to views\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: force option
+.\" force option: mysqlcheck
\fB\-\-force\fR,
\fB\-f\fR
.sp
-Continue even if an SQL error occurs.
-.TP 3n
-\(bu
+Continue even if an SQL error occurs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: host option
+.\" host option: mysqlcheck
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: medium-check option
+.\" medium-check option: mysqlcheck
\fB\-\-medium\-check\fR,
\fB\-m\fR
.sp
Do a check that is faster than an
\fB\-\-extended\fR
-operation. This finds only 99.99% of all errors, which should be good enough in most cases.
-.TP 3n
-\(bu
+operation\&. This finds only 99\&.99% of all errors, which should be good enough in most cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: optimize option
+.\" optimize option: mysqlcheck
\fB\-\-optimize\fR,
\fB\-o\fR
.sp
-Optimize the tables.
-.TP 3n
-\(bu
+Optimize the tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: password option
+.\" password option: mysqlcheck
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: pipe option
+.\" pipe option: mysql
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: port option
+.\" port option: mysqlcheck
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: protocol option
+.\" protocol option: mysqlcheck
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: quick option
+.\" quick option: mysqlcheck
\fB\-\-quick\fR,
\fB\-q\fR
.sp
-If you are using this option to check tables, it prevents the check from scanning the rows to check for incorrect links. This is the fastest check method.
+If you are using this option to check tables, it prevents the check from scanning the rows to check for incorrect links\&. This is the fastest check method\&.
.sp
-If you are using this option to repair tables, it tries to repair only the index tree. This is the fastest repair method.
-.TP 3n
-\(bu
+If you are using this option to repair tables, it tries to repair only the index tree\&. This is the fastest repair method\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: repair option
+.\" repair option: mysqlcheck
\fB\-\-repair\fR,
\fB\-r\fR
.sp
-Perform a repair that can fix almost anything except unique keys that are not unique.
-.TP 3n
-\(bu
+Perform a repair that can fix almost anything except unique keys that are not unique\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: silent option
+.\" silent option: mysqlcheck
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Print only error messages.
-.TP 3n
-\(bu
+Silent mode\&. Print only error messages\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: socket option
+.\" socket option: mysqlcheck
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: SSL options
+.\" SSL options: mysqlcheck
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: tables option
+.\" tables option: mysqlcheck
\fB\-\-tables\fR
.sp
-Overrides the
+Override the
\fB\-\-databases\fR
or
\fB\-B\fR
-option. All name arguments following the option are regarded as table names.
-.TP 3n
-\(bu
+option\&. All name arguments following the option are regarded as table names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: use-frm option
+.\" use-frm option: mysqlcheck
\fB\-\-use\-frm\fR
.sp
For repair operations on
MyISAM
tables, get the table structure from the
-\fI.frm\fR
+\&.frm
file so that the table can be repaired even if the
-\fI.MYI\fR
-header is corrupted.
-.TP 3n
-\(bu
+\&.MYI
+header is corrupted\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: user option
+.\" user option: mysqlcheck
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: verbose option
+.\" verbose option: mysqlcheck
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print information about the various stages of program operation.
-.TP 3n
-\(bu
+Verbose mode\&. Print information about the various stages of program operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: version option
+.\" version option: mysqlcheck
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqld.8'
--- a/man/mysqld.8 2009-05-25 09:59:47 +0000
+++ b/man/mysqld.8 2009-09-16 12:03:18 +0000
@@ -1,53 +1,69 @@
+'\" t
.\" Title: \fBmysqld\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLD\fR" "8" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLD\FR" "8" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqld: MySQL server
+.\" MySQL server: mysqld
.SH "NAME"
mysqld \- the MySQL server
.SH "SYNOPSIS"
-.HP 17
+.HP \w'\fBmysqld\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysqld [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
-\fBmysqld\fR, also known as MySQL Server, is the main program that does most of the work in a MySQL installation. MySQL Server manages access to the MySQL data directory that contains databases and tables. The data directory is also the default location for other information such as log files and status files.
+\fBmysqld\fR, also known as MySQL Server, is the main program that does most of the work in a MySQL installation\&. MySQL Server manages access to the MySQL data directory that contains databases and tables\&. The data directory is also the default location for other information such as log files and status files\&.
.PP
-When MySQL server starts, it listens for network connections from client programs and manages access to databases on behalf of those clients.
+When MySQL server starts, it listens for network connections from client programs and manages access to databases on behalf of those clients\&.
.PP
The
\fBmysqld\fR
-program has many options that can be specified at startup. For a complete list of options, run this command:
+program has many options that can be specified at startup\&. For a complete list of options, run this command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqld \-\-verbose \-\-help\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-MySQL Server also has a set of system variables that affect its operation as it runs. System variables can be set at server startup, and many of them can be changed at runtime to effect dynamic server reconfiguration. MySQL Server also has a set of status variables that provide information about its operation. You can monitor these status variables to access runtime performance characteristics.
+MySQL Server also has a set of system variables that affect its operation as it runs\&. System variables can be set at server startup, and many of them can be changed at runtime to effect dynamic server reconfiguration\&. MySQL Server also has a set of status variables that provide information about its operation\&. You can monitor these status variables to access runtime performance characteristics\&.
.PP
For a full description of MySQL Server command options, system variables, and status variables, see
-Section\ 5.1, \(lqThe MySQL Server\(rq. For information about installing MySQL and setting up the initial configuration, see
-Chapter\ 2, Installing and Upgrading MySQL.
+Section\ \&5.1, \(lqThe MySQL Server\(rq\&. For information about installing MySQL and setting up the initial configuration, see
+Chapter\ \&2, Installing and Upgrading MySQL\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqld_multi.1'
--- a/man/mysqld_multi.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqld_multi.1 2009-09-16 12:03:18 +0000
@@ -1,91 +1,111 @@
+'\" t
.\" Title: \fBmysqld_multi\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLD_MULTI\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLD_MULTI\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqld_multi
+.\" tools: mysqld_multi
+.\" scripts
+.\" multi mysqld
.SH "NAME"
mysqld_multi \- manage multiple MySQL servers
.SH "SYNOPSIS"
-.HP 59
-\fBmysqld_multi [\fR\fB\fIoptions\fR\fR\fB] {start|stop|report} [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB] ...]\fR
+.HP \w'\fBmysqld_multi\ [\fR\fB\fIoptions\fR\fR\fB]\ {start|stop|report}\ [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB]\ \&.\&.\&.]\fR\ 'u
+\fBmysqld_multi [\fR\fB\fIoptions\fR\fR\fB] {start|stop|report} [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB] \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
\fBmysqld_multi\fR
is designed to manage several
\fBmysqld\fR
-processes that listen for connections on different Unix socket files and TCP/IP ports. It can start or stop servers, or report their current status. The MySQL Instance Manager is an alternative means of managing multiple servers (see
-\fBmysqlmanager\fR(8)).
+processes that listen for connections on different Unix socket files and TCP/IP ports\&. It can start or stop servers, or report their current status\&. The MySQL Instance Manager is an alternative means of managing multiple servers (see
+\fBmysqlmanager\fR(8))\&.
.PP
\fBmysqld_multi\fR
searches for groups named
[mysqld\fIN\fR]
in
-\fImy.cnf\fR
+my\&.cnf
(or in the file named by the
\fB\-\-config\-file\fR
-option).
+option)\&.
\fIN\fR
-can be any positive integer. This number is referred to in the following discussion as the option group number, or
-\fIGNR\fR. Group numbers distinguish option groups from one another and are used as arguments to
+can be any positive integer\&. This number is referred to in the following discussion as the option group number, or
+\fIGNR\fR\&. Group numbers distinguish option groups from one another and are used as arguments to
\fBmysqld_multi\fR
-to specify which servers you want to start, stop, or obtain a status report for. Options listed in these groups are the same that you would use in the
+to specify which servers you want to start, stop, or obtain a status report for\&. Options listed in these groups are the same that you would use in the
[mysqld]
group used for starting
-\fBmysqld\fR. (See, for example,
-Section\ 2.11.2.2, \(lqStarting and Stopping MySQL Automatically\(rq.) However, when using multiple servers, it is necessary that each one use its own value for options such as the Unix socket file and TCP/IP port number. For more information on which options must be unique per server in a multiple\-server environment, see
-Section\ 5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq.
+\fBmysqld\fR\&. (See, for example,
+Section\ \&2.11.2.2, \(lqStarting and Stopping MySQL Automatically\(rq\&.) However, when using multiple servers, it is necessary that each one use its own value for options such as the Unix socket file and TCP/IP port number\&. For more information on which options must be unique per server in a multiple\-server environment, see
+Section\ \&5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq\&.
.PP
To invoke
\fBmysqld_multi\fR, use the following syntax:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqld_multi [\fR\fB\fIoptions\fR\fR\fB] {start|stop|report} [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB] ...]\fR
+shell> \fBmysqld_multi [\fR\fB\fIoptions\fR\fR\fB] {start|stop|report} [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB] \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
start,
stop, and
report
-indicate which operation to perform. You can perform the designated operation for a single server or multiple servers, depending on the
+indicate which operation to perform\&. You can perform the designated operation for a single server or multiple servers, depending on the
\fIGNR\fR
-list that follows the option name. If there is no list,
+list that follows the option name\&. If there is no list,
\fBmysqld_multi\fR
-performs the operation for all servers in the option file.
+performs the operation for all servers in the option file\&.
.PP
Each
\fIGNR\fR
-value represents an option group number or range of group numbers. The value should be the number at the end of the group name in the option file. For example, the
+value represents an option group number or range of group numbers\&. The value should be the number at the end of the group name in the option file\&. For example, the
\fIGNR\fR
for a group named
[mysqld17]
is
-17. To specify a range of numbers, separate the first and last numbers by a dash. The
+17\&. To specify a range of numbers, separate the first and last numbers by a dash\&. The
\fIGNR\fR
value
10\-13
represents groups
[mysqld10]
through
-[mysqld13]. Multiple groups or group ranges can be specified on the command line, separated by commas. There must be no whitespace characters (spaces or tabs) in the
+[mysqld13]\&. Multiple groups or group ranges can be specified on the command line, separated by commas\&. There must be no whitespace characters (spaces or tabs) in the
\fIGNR\fR
-list; anything after a whitespace character is ignored.
+list; anything after a whitespace character is ignored\&.
.PP
This command starts a single server using option group
[mysqld17]:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqld_multi start 17\fR
.fi
+.if n \{\
.RE
+.\}
.PP
This command stops several servers, using option groups
[mysqld8]
@@ -94,108 +114,203 @@ and
through
[mysqld13]:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqld_multi stop 8,10\-13\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For an example of how you might set up an option file, use this command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqld_multi \-\-example\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-As of MySQL 5.1.18,
+As of MySQL 5\&.1\&.18,
\fBmysqld_multi\fR
searches for option files as follows:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: no-defaults option
+.\" no-defaults option: mysqld_multi
With
-\fB\-\-no\-defaults\fR, no option files are read.
-.TP 3n
-\(bu
+\fB\-\-no\-defaults\fR, no option files are read\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: defaults-file option
+.\" defaults-file option: mysqld_multi
With
-\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR, only the named file is read.
-.TP 3n
-\(bu
+\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR, only the named file is read\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: defaults-extra-file option
+.\" defaults-extra-file option: mysqld_multi
Otherwise, option files in the standard list of locations are read, including any file named by the
\fB\-\-defaults\-extra\-file=\fR\fB\fIfile_name\fR\fR
-option, if one is given. (If the option is given multiple times, the last value is used.)
-.sp
+option, if one is given\&. (If the option is given multiple times, the last value is used\&.)
.RE
.PP
Option files read are searched for
[mysqld_multi]
and
[mysqld\fIN\fR]
-option groups.
+option groups\&.
.PP
-Before MySQL 5.1.18, the preceding options are not recognized. Files in the standard locations are read, and any file named by the
+Before MySQL 5\&.1\&.18, the preceding options are not recognized\&. Files in the standard locations are read, and any file named by the
\fB\-\-config\-file=\fR\fB\fIfile_name\fR\fR
-option, if one is given. A file named by
+option, if one is given\&. A file named by
\fB\-\-config\-file\fR
is read only for
[mysqld\fIN\fR]
option groups, not the
[mysqld_multi]
-group.
+group\&.
.PP
\fBmysqld_multi\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: help option
+.\" help option: mysqld_multi
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: config-file option
+.\" config-file option: mysqld_multi
\fB\-\-config\-file=\fR\fB\fIfile_name\fR\fR
.sp
-As of MySQL 5.1.18, this option is deprecated. If given, it is treated the same way as
-\fB\-\-defaults\-extra\-file\fR, described earlier.
+As of MySQL 5\&.1\&.18, this option is deprecated\&. If given, it is treated the same way as
+\fB\-\-defaults\-extra\-file\fR, described earlier\&.
.sp
-Before MySQL 5.1.18, this option specifies the name of an extra option file. It affects where
+Before MySQL 5\&.1\&.18, this option specifies the name of an extra option file\&. It affects where
\fBmysqld_multi\fR
looks for
[mysqld\fIN\fR]
-option groups. Without this option, all options are read from the usual
-\fImy.cnf\fR
-file. The option does not affect where
+option groups\&. Without this option, all options are read from the usual
+my\&.cnf
+file\&. The option does not affect where
\fBmysqld_multi\fR
reads its own options, which are always taken from the
[mysqld_multi]
group in the usual
-\fImy.cnf\fR
-file.
-.TP 3n
-\(bu
+my\&.cnf
+file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: example option
+.\" example option: mysqld_multi
\fB\-\-example\fR
.sp
-Display a sample option file.
-.TP 3n
-\(bu
+Display a sample option file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: log option
+.\" log option: mysqld_multi
\fB\-\-log=\fR\fB\fIfile_name\fR\fR
.sp
-Specify the name of the log file. If the file exists, log output is appended to it.
-.TP 3n
-\(bu
+Specify the name of the log file\&. If the file exists, log output is appended to it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: mysqladmin option
+.\" mysqladmin option: mysqld_multi
\fB\-\-mysqladmin=\fR\fB\fIprog_name\fR\fR
.sp
The
\fBmysqladmin\fR
-binary to be used to stop servers.
-.TP 3n
-\(bu
+binary to be used to stop servers\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: mysqld option
+.\" mysqld option: mysqld_multi
\fB\-\-mysqld=\fR\fB\fIprog_name\fR\fR
.sp
The
\fBmysqld\fR
-binary to be used. Note that you can specify
+binary to be used\&. Note that you can specify
\fBmysqld_safe\fR
-as the value for this option also. If you use
+as the value for this option also\&. If you use
\fBmysqld_safe\fR
to start the server, you can include the
mysqld
@@ -203,68 +318,148 @@ or
ledir
options in the corresponding
[mysqld\fIN\fR]
-option group. These options indicate the name of the server that
+option group\&. These options indicate the name of the server that
\fBmysqld_safe\fR
-should start and the path name of the directory where the server is located. (See the descriptions for these options in
-\fBmysqld_safe\fR(1).) Example:
+should start and the path name of the directory where the server is located\&. (See the descriptions for these options in
+\fBmysqld_safe\fR(1)\&.) Example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld38]
mysqld = mysqld\-debug
ledir = /opt/local/mysql/libexec
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: no-log option
+.\" no-log option: mysqld_multi
\fB\-\-no\-log\fR
.sp
Print log information to
stdout
-rather than to the log file. By default, output goes to the log file.
-.TP 3n
-\(bu
+rather than to the log file\&. By default, output goes to the log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: password option
+.\" password option: mysqld_multi
\fB\-\-password=\fR\fB\fIpassword\fR\fR
.sp
The password of the MySQL account to use when invoking
-\fBmysqladmin\fR. Note that the password value is not optional for this option, unlike for other MySQL programs.
-.TP 3n
-\(bu
+\fBmysqladmin\fR\&. Note that the password value is not optional for this option, unlike for other MySQL programs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: silent option
+.\" silent option: mysqld_multi
\fB\-\-silent\fR
.sp
-Silent mode; disable warnings.
-.TP 3n
-\(bu
+Silent mode; disable warnings\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: tcp-ip option
+.\" tcp-ip option: mysqld_multi
\fB\-\-tcp\-ip\fR
.sp
-Connect to each MySQL server via the TCP/IP port instead of the Unix socket file. (If a socket file is missing, the server might still be running, but accessible only via the TCP/IP port.) By default, connections are made using the Unix socket file. This option affects
+Connect to each MySQL server via the TCP/IP port instead of the Unix socket file\&. (If a socket file is missing, the server might still be running, but accessible only via the TCP/IP port\&.) By default, connections are made using the Unix socket file\&. This option affects
stop
and
report
-operations.
-.TP 3n
-\(bu
+operations\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: user option
+.\" user option: mysqld_multi
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
The user name of the MySQL account to use when invoking
-\fBmysqladmin\fR.
-.TP 3n
-\(bu
+\fBmysqladmin\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: verbose option
+.\" verbose option: mysqld_multi
\fB\-\-verbose\fR
.sp
-Be more verbose.
-.TP 3n
-\(bu
-\fB\-\-version\fR
+Be more verbose\&.
+.RE
.sp
-Display version information and exit.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: version option
+.\" version option: mysqld_multi
+\fB\-\-version\fR
.sp
+Display version information and exit\&.
.RE
.PP
Some notes about
\fBmysqld_multi\fR:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fBMost important\fR: Before using
\fBmysqld_multi\fR
be sure that you understand the meanings of the options that are passed to the
@@ -273,67 +468,112 @@ servers and
\fIwhy\fR
you would want to have separate
\fBmysqld\fR
-processes. Beware of the dangers of using multiple
+processes\&. Beware of the dangers of using multiple
\fBmysqld\fR
-servers with the same data directory. Use separate data directories, unless you
+servers with the same data directory\&. Use separate data directories, unless you
\fIknow\fR
-what you are doing. Starting multiple servers with the same data directory does
+what you are doing\&. Starting multiple servers with the same data directory does
\fInot\fR
-give you extra performance in a threaded system. See
-Section\ 5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq.
-.TP 3n
-\(bu
+give you extra performance in a threaded system\&. See
+Section\ \&5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
Make sure that the data directory for each server is fully accessible to the Unix account that the specific
\fBmysqld\fR
-process is started as.
+process is started as\&.
\fIDo not\fR
use the Unix
\fIroot\fR
account for this, unless you
\fIknow\fR
-what you are doing. See
-Section\ 5.3.5, \(lqHow to Run MySQL as a Normal User\(rq.
-.TP 3n
-\(bu
+what you are doing\&. See
+Section\ \&5.3.5, \(lqHow to Run MySQL as a Normal User\(rq\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Make sure that the MySQL account used for stopping the
\fBmysqld\fR
servers (with the
\fBmysqladmin\fR
-program) has the same user name and password for each server. Also, make sure that the account has the
+program) has the same user name and password for each server\&. Also, make sure that the account has the
SHUTDOWN
-privilege. If the servers that you want to manage have different user names or passwords for the administrative accounts, you might want to create an account on each server that has the same user name and password. For example, you might set up a common
+privilege\&. If the servers that you want to manage have different user names or passwords for the administrative accounts, you might want to create an account on each server that has the same user name and password\&. For example, you might set up a common
multi_admin
account by executing the following commands for each server:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-u root \-S /tmp/mysql.sock \-p\fR
+shell> \fBmysql \-u root \-S /tmp/mysql\&.sock \-p\fR
Enter password:
-mysql> \fBGRANT SHUTDOWN ON *.*\fR
- \-> \fBTO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';\fR
+mysql> \fBGRANT SHUTDOWN ON *\&.*\fR
+ \-> \fBTO \'multi_admin\'@\'localhost\' IDENTIFIED BY \'multipass\';\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
See
-Section\ 5.4, \(lqThe MySQL Access Privilege System\(rq. You have to do this for each
+Section\ \&5.4, \(lqThe MySQL Access Privilege System\(rq\&. You have to do this for each
\fBmysqld\fR
-server. Change the connection parameters appropriately when connecting to each one. Note that the host name part of the account name must allow you to connect as
+server\&. Change the connection parameters appropriately when connecting to each one\&. Note that the host name part of the account name must allow you to connect as
multi_admin
from the host where you want to run
-\fBmysqld_multi\fR.
-.TP 3n
-\(bu
+\fBmysqld_multi\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The Unix socket file and the TCP/IP port number must be different for every
-\fBmysqld\fR. (Alternatively, if the host has multiple network addresses, you can use
+\fBmysqld\fR\&. (Alternatively, if the host has multiple network addresses, you can use
\fB\-\-bind\-address\fR
-to cause different servers to listen to different interfaces.)
-.TP 3n
-\(bu
+to cause different servers to listen to different interfaces\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The
\fB\-\-pid\-file\fR
option is very important if you are using
@@ -343,7 +583,7 @@ to start
(for example,
\fB\-\-mysqld=mysqld_safe\fR) Every
\fBmysqld\fR
-should have its own process ID file. The advantage of using
+should have its own process ID file\&. The advantage of using
\fBmysqld_safe\fR
instead of
\fBmysqld\fR
@@ -353,28 +593,41 @@ monitors its
\fBmysqld\fR
process and restarts it if the process terminates due to a signal sent using
kill \-9
-or for other reasons, such as a segmentation fault. Please note that the
+or for other reasons, such as a segmentation fault\&. Please note that the
\fBmysqld_safe\fR
-script might require that you start it from a certain place. This means that you might have to change location to a certain directory before running
-\fBmysqld_multi\fR. If you have problems starting, please see the
+script might require that you start it from a certain place\&. This means that you might have to change location to a certain directory before running
+\fBmysqld_multi\fR\&. If you have problems starting, please see the
\fBmysqld_safe\fR
-script. Check especially the lines:
+script\&. Check especially the lines:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
MY_PWD=`pwd`
# Check if we are starting this relative (for the binary release)
-if test \-d $MY_PWD/data/mysql \-a \\
- \-f ./share/mysql/english/errmsg.sys \-a \\
- \-x ./bin/mysqld
+if test \-d $MY_PWD/data/mysql \-a \e
+ \-f \&./share/mysql/english/errmsg\&.sys \-a \e
+ \-x \&./bin/mysqld
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
.fi
+.if n \{\
.RE
-The test performed by these lines should be successful, or you might encounter problems. See
-\fBmysqld_safe\fR(1).
-.TP 3n
-\(bu
+.\}
+.sp
+The test performed by these lines should be successful, or you might encounter problems\&. See
+\fBmysqld_safe\fR(1)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You might want to use the
\fB\-\-user\fR
option for
@@ -382,76 +635,81 @@ option for
\fBmysqld_multi\fR
script as the Unix
root
-user. Having the option in the option file doesn't matter; you just get a warning if you are not the superuser and the
+user\&. Having the option in the option file doesn\'t matter; you just get a warning if you are not the superuser and the
\fBmysqld\fR
-processes are started under your own Unix account.
-.sp
+processes are started under your own Unix account\&.
.RE
.PP
The following example shows how you might set up an option file for use with
-\fBmysqld_multi\fR. The order in which the
+\fBmysqld_multi\fR\&. The order in which the
\fBmysqld\fR
-programs are started or stopped depends on the order in which they appear in the option file. Group numbers need not form an unbroken sequence. The first and fifth
+programs are started or stopped depends on the order in which they appear in the option file\&. Group numbers need not form an unbroken sequence\&. The first and fifth
[mysqld\fIN\fR]
groups were intentionally omitted from the example to illustrate that you can have
\(lqgaps\(rq
-in the option file. This gives you more flexibility.
+in the option file\&. This gives you more flexibility\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-# This file should probably be in your home dir (~/.my.cnf)
-# or /etc/my.cnf
-# Version 2.1 by Jani Tolonen
+# This file should probably be in your home dir (~/\&.my\&.cnf)
+# or /etc/my\&.cnf
+# Version 2\&.1 by Jani Tolonen
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass
[mysqld2]
-socket = /tmp/mysql.sock2
+socket = /tmp/mysql\&.sock2
port = 3307
-pid\-file = /usr/local/mysql/var2/hostname.pid2
+pid\-file = /usr/local/mysql/var2/hostname\&.pid2
datadir = /usr/local/mysql/var2
language = /usr/local/share/mysql/english
user = john
[mysqld3]
-socket = /tmp/mysql.sock3
+socket = /tmp/mysql\&.sock3
port = 3308
-pid\-file = /usr/local/mysql/var3/hostname.pid3
+pid\-file = /usr/local/mysql/var3/hostname\&.pid3
datadir = /usr/local/mysql/var3
language = /usr/local/share/mysql/swedish
user = monty
[mysqld4]
-socket = /tmp/mysql.sock4
+socket = /tmp/mysql\&.sock4
port = 3309
-pid\-file = /usr/local/mysql/var4/hostname.pid4
+pid\-file = /usr/local/mysql/var4/hostname\&.pid4
datadir = /usr/local/mysql/var4
language = /usr/local/share/mysql/estonia
user = tonu
[mysqld6]
-socket = /tmp/mysql.sock6
+socket = /tmp/mysql\&.sock6
port = 3311
-pid\-file = /usr/local/mysql/var6/hostname.pid6
+pid\-file = /usr/local/mysql/var6/hostname\&.pid6
datadir = /usr/local/mysql/var6
language = /usr/local/share/mysql/japanese
user = jani
.fi
+.if n \{\
.RE
+.\}
.PP
See
-Section\ 4.2.3.2, \(lqUsing Option Files\(rq.
+Section\ \&4.2.3.3, \(lqUsing Option Files\(rq\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqld_safe.1'
--- a/man/mysqld_safe.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqld_safe.1 2009-09-16 12:03:18 +0000
@@ -1,82 +1,98 @@
+'\" t
.\" Title: \fBmysqld_safe\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLD_SAFE\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLD_SAFE\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqld_safe
+.\" tools: mysqld_safe
+.\" scripts
.SH "NAME"
mysqld_safe \- MySQL server startup script
.SH "SYNOPSIS"
-.HP 20
+.HP \w'\fBmysqld_safe\ \fR\fB\fIoptions\fR\fR\ 'u
\fBmysqld_safe \fR\fB\fIoptions\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysqld_safe\fR
is the recommended way to start a
\fBmysqld\fR
-server on Unix and NetWare.
+server on Unix and NetWare\&.
\fBmysqld_safe\fR
-adds some safety features such as restarting the server when an error occurs and logging runtime information to an error log file. Descriptions of error logging and NetWare\-specific behaviors are given later in this section.
+adds some safety features such as restarting the server when an error occurs and logging runtime information to an error log file\&. Descriptions of error logging and NetWare\-specific behaviors are given later in this section\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-In MySQL 5.1.20 (only), the default error logging behavior with
+In MySQL 5\&.1\&.20 (only), the default error logging behavior with
\fBmysqld_safe\fR
is to write errors to
syslog
on systems that support the
\fBlogger\fR
-program. This differs from the default behavior of writing an error log file for other versions.
+program\&. This differs from the default behavior of writing an error log file for other versions\&.
.PP
-\fBIn 5.1.20, logging to \fR\fBsyslog\fR\fB may fail to operate correctly in some cases, so we recommend that you use \fR\fB\fB\-\-skip\-syslog\fR\fR\fB to use the default log file or \fR\fB\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR\fR\fB to specify a log file name explicitly.\fR
+\fBIn 5\&.1\&.20, logging to \fR\fBsyslog\fR\fB may fail to operate correctly in some cases; if so, use \fR\fB\fB\-\-skip\-syslog\fR\fR\fB to use the default log file or \fR\fB\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR\fR\fB to specify a log file name explicitly\&.\fR
+.sp .5v
+.RE
.PP
\fBmysqld_safe\fR
tries to start an executable named
-\fBmysqld\fR. To override the default behavior and specify explicitly the name of the server you want to run, specify a
+\fBmysqld\fR\&. To override the default behavior and specify explicitly the name of the server you want to run, specify a
\fB\-\-mysqld\fR
or
\fB\-\-mysqld\-version\fR
option to
-\fBmysqld_safe\fR. You can also use
+\fBmysqld_safe\fR\&. You can also use
\fB\-\-ledir\fR
to indicate the directory where
\fBmysqld_safe\fR
-should look for the server.
+should look for the server\&.
.PP
Many of the options to
\fBmysqld_safe\fR
are the same as the options to
-\fBmysqld\fR. See
-Section\ 5.1.2, \(lqServer Command Options\(rq.
+\fBmysqld\fR\&. See
+Section\ \&5.1.2, \(lqServer Command Options\(rq\&.
.PP
-All options specified to
-\fBmysqld_safe\fR
-on the command line are passed to
-\fBmysqld\fR. If you want to use any options that are specific to
+Options unknown to
\fBmysqld_safe\fR
-and that
+are passed to
\fBmysqld\fR
-doesn't support, do not specify them on the command line. Instead, list them in the
+if they are specified on the command line, but ignored if they are specified in the
[mysqld_safe]
-group of an option file. See
-Section\ 4.2.3.2, \(lqUsing Option Files\(rq.
+group of an option file\&. See
+Section\ \&4.2.3.3, \(lqUsing Option Files\(rq\&.
.PP
\fBmysqld_safe\fR
reads all options from the
[mysqld],
[server], and
[mysqld_safe]
-sections in option files. For example, if you specify a
+sections in option files\&. For example, if you specify a
[mysqld]
section like this,
\fBmysqld_safe\fR
@@ -84,12 +100,16 @@ will find and use the
\fB\-\-log\-error\fR
option:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld]
-log\-error=error.log
+log\-error=error\&.log
.fi
+.if n \{\
.RE
+.\}
.PP
For backward compatibility,
\fBmysqld_safe\fR
@@ -97,101 +117,216 @@ also reads
[safe_mysqld]
sections, although you should rename such sections to
[mysqld_safe]
-in MySQL 5.1 installations.
+in MySQL 5\&.1 installations\&.
.PP
\fBmysqld_safe\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: help option
+.\" help option: mysqld_safe
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: autoclose option
+.\" autoclose option: mysqld_safe
\fB\-\-autoclose\fR
.sp
(NetWare only) On NetWare,
\fBmysqld_safe\fR
-provides a screen presence. When you unload (shut down) the
+provides a screen presence\&. When you unload (shut down) the
\fBmysqld_safe\fR
-NLM, the screen does not by default go away. Instead, it prompts for user input:
+NLM, the screen does not by default go away\&. Instead, it prompts for user input:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
*<NLM has terminated; Press any key to close the screen>*
.fi
+.if n \{\
.RE
+.\}
+.sp
If you want NetWare to close the screen automatically instead, use the
\fB\-\-autoclose\fR
option to
-\fBmysqld_safe\fR.
-.TP 3n
-\(bu
+\fBmysqld_safe\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: basedir option
+.\" basedir option: mysqld_safe
\fB\-\-basedir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL installation directory.
-.TP 3n
-\(bu
+The path to the MySQL installation directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: core-file-size option
+.\" core-file-size option: mysqld_safe
\fB\-\-core\-file\-size=\fR\fB\fIsize\fR\fR
.sp
The size of the core file that
\fBmysqld\fR
-should be able to create. The option value is passed to
-\fBulimit \-c\fR.
-.TP 3n
-\(bu
+should be able to create\&. The option value is passed to
+\fBulimit \-c\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: datadir option
+.\" datadir option: mysqld_safe
\fB\-\-datadir=\fR\fB\fIpath\fR\fR
.sp
-The path to the data directory.
-.TP 3n
-\(bu
+The path to the data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: defaults-extra-file option
+.\" defaults-extra-file option: mysqld_safe
\fB\-\-defaults\-extra\-file=\fR\fB\fIpath\fR\fR
.sp
-The name of an option file to be read in addition to the usual option files. This must be the first option on the command line if it is used. If the file does not exist or is otherwise inaccessible, the server will exit with an error.
-.TP 3n
-\(bu
+The name of an option file to be read in addition to the usual option files\&. This must be the first option on the command line if it is used\&. If the file does not exist or is otherwise inaccessible, the server will exit with an error\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: defaults-file option
+.\" defaults-file option: mysqld_safe
\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The name of an option file to be read instead of the usual option files. This must be the first option on the command line if it is used.
-.TP 3n
-\(bu
+The name of an option file to be read instead of the usual option files\&. This must be the first option on the command line if it is used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: ledir option
+.\" ledir option: mysqld_safe
\fB\-\-ledir=\fR\fB\fIpath\fR\fR
.sp
If
\fBmysqld_safe\fR
-cannot find the server, use this option to indicate the path name to the directory where the server is located.
-.TP 3n
-\(bu
+cannot find the server, use this option to indicate the path name to the directory where the server is located\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: log-error option
+.\" log-error option: mysqld_safe
\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR
.sp
-Write the error log to the given file. See
-Section\ 5.2.2, \(lqThe Error Log\(rq.
-.TP 3n
-\(bu
+Write the error log to the given file\&. See
+Section\ \&5.2.2, \(lqThe Error Log\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: mysqld option
+.\" mysqld option: mysqld_safe
\fB\-\-mysqld=\fR\fB\fIprog_name\fR\fR
.sp
The name of the server program (in the
ledir
-directory) that you want to start. This option is needed if you use the MySQL binary distribution but have the data directory outside of the binary distribution. If
+directory) that you want to start\&. This option is needed if you use the MySQL binary distribution but have the data directory outside of the binary distribution\&. If
\fBmysqld_safe\fR
cannot find the server, use the
\fB\-\-ledir\fR
-option to indicate the path name to the directory where the server is located.
-.TP 3n
-\(bu
+option to indicate the path name to the directory where the server is located\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: mysqld-version option
+.\" mysqld-version option: mysqld_safe
\fB\-\-mysqld\-version=\fR\fB\fIsuffix\fR\fR
.sp
This option is similar to the
\fB\-\-mysqld\fR
-option, but you specify only the suffix for the server program name. The basename is assumed to be
-\fBmysqld\fR. For example, if you use
+option, but you specify only the suffix for the server program name\&. The basename is assumed to be
+\fBmysqld\fR\&. For example, if you use
\fB\-\-mysqld\-version=debug\fR,
\fBmysqld_safe\fR
starts the
\fBmysqld\-debug\fR
program in the
ledir
-directory. If the argument to
+directory\&. If the argument to
\fB\-\-mysqld\-version\fR
is empty,
\fBmysqld_safe\fR
@@ -199,57 +334,139 @@ uses
\fBmysqld\fR
in the
ledir
-directory.
-.TP 3n
-\(bu
+directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: nice option
+.\" nice option: mysqld_safe
\fB\-\-nice=\fR\fB\fIpriority\fR\fR
.sp
Use the
nice
-program to set the server's scheduling priority to the given value.
-.TP 3n
-\(bu
+program to set the server\'s scheduling priority to the given value\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: no-defaults option
+.\" no-defaults option: mysqld_safe
\fB\-\-no\-defaults\fR
.sp
-Do not read any option files. This must be the first option on the command line if it is used.
-.TP 3n
-\(bu
+Do not read any option files\&. This must be the first option on the command line if it is used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: open-files-limit option
+.\" open-files-limit option: mysqld_safe
\fB\-\-open\-files\-limit=\fR\fB\fIcount\fR\fR
.sp
The number of files that
\fBmysqld\fR
-should be able to open. The option value is passed to
-\fBulimit \-n\fR. Note that you need to start
+should be able to open\&. The option value is passed to
+\fBulimit \-n\fR\&. Note that you need to start
\fBmysqld_safe\fR
as
root
for this to work properly!
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: pid-file option
+.\" pid-file option: mysqld_safe
\fB\-\-pid\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The path name of the process ID file.
-.TP 3n
-\(bu
+The path name of the process ID file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: port option
+.\" port option: mysqld_safe
\fB\-\-port=\fR\fB\fIport_num\fR\fR
.sp
-The port number that the server should use when listening for TCP/IP connections. The port number must be 1024 or higher unless the server is started by the
+The port number that the server should use when listening for TCP/IP connections\&. The port number must be 1024 or higher unless the server is started by the
root
-system user.
-.TP 3n
-\(bu
+system user\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: skip-kill-mysqld option
+.\" skip-kill-mysqld option: mysqld_safe
\fB\-\-skip\-kill\-mysqld\fR
.sp
Do not try to kill stray
\fBmysqld\fR
-processes at startup. This option works only on Linux.
-.TP 3n
-\(bu
+processes at startup\&. This option works only on Linux\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: socket option
+.\" socket option: mysqld_safe
\fB\-\-socket=\fR\fB\fIpath\fR\fR
.sp
-The Unix socket file that the server should use when listening for local connections.
-.TP 3n
-\(bu
+The Unix socket file that the server should use when listening for local connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: syslog option
+.\" syslog option: mysqld_safe
+.\" mysqld_safe: skip-syslog option
+.\" skip-syslog option: mysqld_safe
\fB\-\-syslog\fR,
\fB\-\-skip\-syslog\fR
.sp
@@ -258,12 +475,22 @@ causes error messages to be sent to
syslog
on systems that support the
\fBlogger\fR
-program.
+program\&.
\-\-skip\-syslog
suppresses the use of
-syslog; messages are written to an error log file. These options were added in MySQL 5.1.20.
-.TP 3n
-\(bu
+syslog; messages are written to an error log file\&. These options were added in MySQL 5\&.1\&.20\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: syslog-tag option
+.\" syslog-tag option: mysqld_safe
\fB\-\-syslog\-tag=\fR\fB\fItag\fR\fR
.sp
For logging to
@@ -274,20 +501,40 @@ and
are written with a tag of
mysqld_safe
and
-mysqld, respectively. To specify a suffix for the tag, use
+mysqld, respectively\&. To specify a suffix for the tag, use
\fB\-\-syslog\-tag=\fR\fB\fItag\fR\fR, which modifies the tags to be
mysqld_safe\-\fItag\fR
and
-mysqld\-\fItag\fR. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+mysqld\-\fItag\fR\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: timezone option
+.\" timezone option: mysqld_safe
\fB\-\-timezone=\fR\fB\fItimezone\fR\fR
.sp
Set the
TZ
-time zone environment variable to the given option value. Consult your operating system documentation for legal time zone specification formats.
-.TP 3n
-\(bu
+time zone environment variable to the given option value\&. Consult your operating system documentation for legal time zone specification formats\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: user option
+.\" user option: mysqld_safe
\fB\-\-user={\fR\fB\fIuser_name\fR\fR\fB|\fR\fB\fIuser_id\fR\fR\fB}\fR
.sp
Run the
@@ -295,9 +542,8 @@ Run the
server as the user having the name
\fIuser_name\fR
or the numeric user ID
-\fIuser_id\fR. (\(lqUser\(rq
-in this context refers to a system login account, not a MySQL user listed in the grant tables.)
-.sp
+\fIuser_id\fR\&. (\(lqUser\(rq
+in this context refers to a system login account, not a MySQL user listed in the grant tables\&.)
.RE
.PP
If you execute
@@ -306,56 +552,78 @@ with the
\fB\-\-defaults\-file\fR
or
\fB\-\-defaults\-extra\-file\fR
-option to name an option file, the option must be the first one given on the command line or the option file will not be used. For example, this command will not use the named option file:
+option to name an option file, the option must be the first one given on the command line or the option file will not be used\&. For example, this command will not use the named option file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBmysqld_safe \-\-port=\fR\fB\fIport_num\fR\fR\fB \-\-defaults\-file=\fR\fB\fIfile_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Instead, use the following command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBmysqld_safe \-\-defaults\-file=\fR\fB\fIfile_name\fR\fR\fB \-\-port=\fR\fB\fIport_num\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fBmysqld_safe\fR
-script is written so that it normally can start a server that was installed from either a source or a binary distribution of MySQL, even though these types of distributions typically install the server in slightly different locations. (See
-Section\ 2.1.5, \(lqInstallation Layouts\(rq.)
+script is written so that it normally can start a server that was installed from either a source or a binary distribution of MySQL, even though these types of distributions typically install the server in slightly different locations\&. (See
+Section\ \&2.1.5, \(lqInstallation Layouts\(rq\&.)
\fBmysqld_safe\fR
expects one of the following conditions to be true:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The server and databases can be found relative to the working directory (the directory from which
\fBmysqld_safe\fR
-is invoked). For binary distributions,
+is invoked)\&. For binary distributions,
\fBmysqld_safe\fR
looks under its working directory for
-\fIbin\fR
+bin
and
-\fIdata\fR
-directories. For source distributions, it looks for
-\fIlibexec\fR
+data
+directories\&. For source distributions, it looks for
+libexec
and
-\fIvar\fR
-directories. This condition should be met if you execute
+var
+directories\&. This condition should be met if you execute
\fBmysqld_safe\fR
from your MySQL installation directory (for example,
-\fI/usr/local/mysql\fR
-for a binary distribution).
-.TP 3n
-\(bu
+/usr/local/mysql
+for a binary distribution)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
If the server and databases cannot be found relative to the working directory,
\fBmysqld_safe\fR
-attempts to locate them by absolute path names. Typical locations are
-\fI/usr/local/libexec\fR
+attempts to locate them by absolute path names\&. Typical locations are
+/usr/local/libexec
and
-\fI/usr/local/var\fR. The actual locations are determined from the values configured into the distribution at the time it was built. They should be correct if MySQL is installed in the location specified at configuration time.
-.sp
+/usr/local/var\&. The actual locations are determined from the values configured into the distribution at the time it was built\&. They should be correct if MySQL is installed in the location specified at configuration time\&.
.RE
.PP
Because
@@ -364,12 +632,16 @@ tries to find the server and databases r
\fBmysqld_safe\fR
from the MySQL installation directory:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcd \fR\fB\fImysql_installation_directory\fR\fR
shell> \fBbin/mysqld_safe &\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If
\fBmysqld_safe\fR
@@ -377,7 +649,7 @@ fails, even when invoked from the MySQL
\fB\-\-ledir\fR
and
\fB\-\-datadir\fR
-options to indicate the directories in which the server and databases are located on your system.
+options to indicate the directories in which the server and databases are located on your system\&.
.PP
When you use
\fBmysqld_safe\fR
@@ -386,43 +658,73 @@ to start
\fBmysqld_safe\fR
arranges for error (and notice) messages from itself and from
\fBmysqld\fR
-to go to the same destination.
+to go to the same destination\&.
.PP
-As of MySQL 5.1.20, there are several
+As of MySQL 5\&.1\&.20, there are several
\fBmysqld_safe\fR
options for controlling the destination of these messages:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-\-syslog\fR: Write error messages to
syslog
on systems that support the
\fBlogger\fR
-program.
-.TP 3n
-\(bu
+program\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-\-skip\-syslog\fR: Do not write error messages to
-syslog. Messages are written to the default error log file (\fI\fIhost_name\fR\fR\fI.err\fR
+syslog\&. Messages are written to the default error log file (\fIhost_name\fR\&.err
in the data directory), or to a named file if the
\fB\-\-log\-error\fR
-option is given.
-.TP 3n
-\(bu
-\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR: Write error messages to the named error file.
+option is given\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR: Write error messages to the named error file\&.
.RE
.PP
If none of these options is given, the default is
-\fB\-\-skip\-syslog\fR.
+\fB\-\-skip\-syslog\fR\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-In MySQL 5.1.20
+In MySQL 5\&.1\&.20
\fIonly\fR, the default is
-\fB\-\-syslog\fR. This differs from logging behavior for other versions of MySQL, for which the default is to write messages to the default error log file.
+\fB\-\-syslog\fR\&. This differs from logging behavior for other versions of MySQL, for which the default is to write messages to the default error log file\&.
+.sp .5v
+.RE
.PP
If
\fB\-\-syslog\fR
@@ -430,77 +732,127 @@ and
\fB\-\-log\-error\fR
are both given, a warning is issued and
\fB\-\-log\-error\fR
-takes precedence.
+takes precedence\&.
.PP
When
\fBmysqld_safe\fR
writes a message, notices go to the logging destination (syslog
or the error log file) and
-stdout. Errors go to the logging destination and
-stderr.
+stdout\&. Errors go to the logging destination and
+stderr\&.
.PP
-Before MySQL 5.1.20, error logging is controlled only with the
+Before MySQL 5\&.1\&.20, error logging is controlled only with the
\fB\-\-log\-error\fR
-option. If it is given, messages go to the named error file. Otherwise, messages go to the default error file.
+option\&. If it is given, messages go to the named error file\&. Otherwise, messages go to the default error file\&.
.PP
Normally, you should not edit the
\fBmysqld_safe\fR
-script. Instead, configure
+script\&. Instead, configure
\fBmysqld_safe\fR
by using command\-line options or options in the
[mysqld_safe]
section of a
-\fImy.cnf\fR
-option file. In rare cases, it might be necessary to edit
+my\&.cnf
+option file\&. In rare cases, it might be necessary to edit
\fBmysqld_safe\fR
-to get it to start the server properly. However, if you do this, your modified version of
+to get it to start the server properly\&. However, if you do this, your modified version of
\fBmysqld_safe\fR
-might be overwritten if you upgrade MySQL in the future, so you should make a copy of your edited version that you can reinstall.
+might be overwritten if you upgrade MySQL in the future, so you should make a copy of your edited version that you can reinstall\&.
.PP
On NetWare,
\fBmysqld_safe\fR
-is a NetWare Loadable Module (NLM) that is ported from the original Unix shell script. It starts the server as follows:
-.TP 3n
-1.
-Runs a number of system and option checks.
-.TP 3n
-2.
+is a NetWare Loadable Module (NLM) that is ported from the original Unix shell script\&. It starts the server as follows:
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+Runs a number of system and option checks\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
Runs a check on
MyISAM
-tables.
-.TP 3n
-3.
-Provides a screen presence for the MySQL server.
-.TP 3n
-4.
+tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
+Provides a screen presence for the MySQL server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 4.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 4." 4.2
+.\}
Starts
-\fBmysqld\fR, monitors it, and restarts it if it terminates in error.
-.TP 3n
-5.
+\fBmysqld\fR, monitors it, and restarts it if it terminates in error\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 5.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 5." 4.2
+.\}
Sends error messages from
\fBmysqld\fR
to the
-\fI\fIhost_name\fR\fR\fI.err\fR
-file in the data directory.
-.TP 3n
-6.
+\fIhost_name\fR\&.err
+file in the data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 6.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 6." 4.2
+.\}
Sends
\fBmysqld_safe\fR
screen output to the
-\fI\fIhost_name\fR\fR\fI.safe\fR
-file in the data directory.
+\fIhost_name\fR\&.safe
+file in the data directory\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqldump.1'
--- a/man/mysqldump.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqldump.1 2009-09-16 12:03:18 +0000
@@ -1,45 +1,62 @@
+'\" t
.\" Title: \fBmysqldump\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLDUMP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLDUMP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqldump
+.\" dumping: databases and tables
+.\" backups: databases and tables
+.\" databases: dumping
+.\" tables: dumping
.SH "NAME"
mysqldump \- a database backup program
.SH "SYNOPSIS"
-.HP 45
-\fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB ...]]\fR
+.HP \w'\fBmysqldump\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB\ [\fR\fB\fItbl_name\fR\fR\fB\ \&.\&.\&.]]\fR\ 'u
+\fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.]]\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqldump\fR
-client is a backup program originally written by Igor Romanenko. It can be used to dump a database or a collection of databases for backup or transfer to another SQL server (not necessarily a MySQL server). The dump typically contains SQL statements to create the table, populate it, or both. However,
+client is a backup program originally written by Igor Romanenko\&. It can be used to dump a database or a collection of databases for backup or transfer to another SQL server (not necessarily a MySQL server)\&. The dump typically contains SQL statements to create the table, populate it, or both\&. However,
\fBmysqldump\fR
-can also be used to generate files in CSV, other delimited text, or XML format.
+can also be used to generate files in CSV, other delimited text, or XML format\&.
.PP
If you are doing a backup on the server and your tables all are
MyISAM
tables, consider using the
\fBmysqlhotcopy\fR
-instead because it can accomplish faster backups and faster restores. See
-\fBmysqlhotcopy\fR(1).
+instead because it can accomplish faster backups and faster restores\&. See
+\fBmysqlhotcopy\fR(1)\&.
.PP
There are three general ways to invoke
\fBmysqldump\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItables\fR\fR\fB]\fR
-shell> \fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \fR\fB\fIdb_name3\fR\fR\fB...]\fR
+shell> \fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \fR\fB\fIdb_name3\fR\fR\fB\&.\&.\&.]\fR
shell> \fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] \-\-all\-databases\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you do not name any tables following
\fIdb_name\fR
@@ -47,27 +64,27 @@ or if you use the
\fB\-\-databases\fR
or
\fB\-\-all\-databases\fR
-option, entire databases are dumped.
+option, entire databases are dumped\&.
.PP
\fBmysqldump\fR
does not dump the
INFORMATION_SCHEMA
-database. If you name that database explicitly on the command line,
+database\&. If you name that database explicitly on the command line,
\fBmysqldump\fR
-silently ignores it.
+silently ignores it\&.
.PP
To get a list of the options your version of
\fBmysqldump\fR
supports, execute
-\fBmysqldump \-\-help\fR.
+\fBmysqldump \-\-help\fR\&.
.PP
Some
\fBmysqldump\fR
-options are shorthand for groups of other options.
+options are shorthand for groups of other options\&.
\fB\-\-opt\fR
and
\fB\-\-compact\fR
-fall into this category. For example, use of
+fall into this category\&. For example, use of
\fB\-\-opt\fR
is the same as specifying
\fB\-\-add\-drop\-table\fR
@@ -77,61 +94,75 @@ is the same as specifying
\fB\-\-extended\-insert\fR
\fB\-\-lock\-tables\fR
\fB\-\-quick\fR
-\fB\-\-set\-charset\fR. Note that all of the options that
+\fB\-\-set\-charset\fR\&. Note that all of the options that
\fB\-\-opt\fR
stands for also are on by default because
\fB\-\-opt\fR
-is on by default.
+is on by default\&.
.PP
To reverse the effect of a group option, uses its
\fB\-\-skip\-\fR\fB\fIxxx\fR\fR
form (\fB\-\-skip\-opt\fR
or
-\fB\-\-skip\-compact\fR). It is also possible to select only part of the effect of a group option by following it with options that enable or disable specific features. Here are some examples:
-.TP 3n
-\(bu
+\fB\-\-skip\-compact\fR)\&. It is also possible to select only part of the effect of a group option by following it with options that enable or disable specific features\&. Here are some examples:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
To select the effect of
\fB\-\-opt\fR
except for some features, use the
\fB\-\-skip\fR
-option for each feature. For example, to disable extended inserts and memory buffering, use
+option for each feature\&. For example, to disable extended inserts and memory buffering, use
\fB\-\-opt\fR
\fB\-\-skip\-extended\-insert\fR
-\fB\-\-skip\-quick\fR. (As of MySQL 5.1,
+\fB\-\-skip\-quick\fR\&. (As of MySQL 5\&.1,
\fB\-\-skip\-extended\-insert\fR
\fB\-\-skip\-quick\fR
is sufficient because
\fB\-\-opt\fR
-is on by default.)
-.TP 3n
-\(bu
+is on by default\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
To reverse
\fB\-\-opt\fR
for all features except index disabling and table locking, use
\fB\-\-skip\-opt\fR
\fB\-\-disable\-keys\fR
-\fB\-\-lock\-tables\fR.
-.sp
+\fB\-\-lock\-tables\fR\&.
.RE
.PP
-When you selectively enable or disable the effect of a group option, order is important because options are processed first to last. For example,
+When you selectively enable or disable the effect of a group option, order is important because options are processed first to last\&. For example,
\fB\-\-disable\-keys\fR
\fB\-\-lock\-tables\fR
\fB\-\-skip\-opt\fR
would not have the intended effect; it is the same as
\fB\-\-skip\-opt\fR
-by itself.
+by itself\&.
.PP
\fBmysqldump\fR
-can retrieve and dump table contents row by row, or it can retrieve the entire content from a table and buffer it in memory before dumping it. Buffering in memory can be a problem if you are dumping large tables. To dump tables row by row, use the
+can retrieve and dump table contents row by row, or it can retrieve the entire content from a table and buffer it in memory before dumping it\&. Buffering in memory can be a problem if you are dumping large tables\&. To dump tables row by row, use the
\fB\-\-quick\fR
option (or
\fB\-\-opt\fR, which enables
-\fB\-\-quick\fR). The
+\fB\-\-quick\fR)\&. The
\fB\-\-opt\fR
option (and hence
-\fB\-\-quick\fR) is enabled by default in MySQL 5.1; to enable memory buffering, use
-\fB\-\-skip\-quick\fR.
+\fB\-\-quick\fR) is enabled by default in MySQL 5\&.1; to enable memory buffering, use
+\fB\-\-skip\-quick\fR\&.
.PP
If you are using a recent version of
\fBmysqldump\fR
@@ -139,119 +170,245 @@ to generate a dump to be reloaded into a
\fB\-\-opt\fR
or
\fB\-\-extended\-insert\fR
-option. Use
+option\&. Use
\fB\-\-skip\-opt\fR
-instead.
+instead\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
\fBmysqldump\fR
-from the MySQL 5.1.21 distribution cannot be used to create dumps from MySQL server versions 5.1.20 and older. This issue is fixed in MySQL 5.1.22. ([1]\&\fIBug#30123\fR)
+from the MySQL 5\&.1\&.21 distribution cannot be used to create dumps from MySQL server versions 5\&.1\&.20 and older\&. This issue is fixed in MySQL 5\&.1\&.22\&. (\m[blue]\fBBug#30123\fR\m[]\&\s-2\u[1]\d\s+2)
+.sp .5v
+.RE
.PP
\fBmysqldump\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: help option
+.\" help option: mysqldump
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: add-drop-database option
+.\" add-drop-database option: mysqldump
\fB\-\-add\-drop\-database\fR
.sp
Add a
DROP DATABASE
statement before each
CREATE DATABASE
-statement.
-.TP 3n
-\(bu
+statement\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: add-drop-table option
+.\" add-drop-table option: mysqldump
\fB\-\-add\-drop\-table\fR
.sp
Add a
DROP TABLE
statement before each
CREATE TABLE
-statement.
-.TP 3n
-\(bu
+statement\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: add-locks option
+.\" add-locks option: mysqldump
\fB\-\-add\-locks\fR
.sp
Surround each table dump with
LOCK TABLES
and
UNLOCK TABLES
-statements. This results in faster inserts when the dump file is reloaded. See
-Section\ 7.2.20, \(lqSpeed of INSERT Statements\(rq.
-.TP 3n
-\(bu
+statements\&. This results in faster inserts when the dump file is reloaded\&. See
+Section\ \&7.2.21, \(lqSpeed of INSERT Statements\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: all-databases option
+.\" all-databases option: mysqldump
\fB\-\-all\-databases\fR,
\fB\-A\fR
.sp
-Dump all tables in all databases. This is the same as using the
+Dump all tables in all databases\&. This is the same as using the
\fB\-\-databases\fR
-option and naming all the databases on the command line.
-.TP 3n
-\(bu
+option and naming all the databases on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: all-tablespaces option
+.\" all-tablespaces option: mysqldump
\fB\-\-all\-tablespaces\fR,
\fB\-Y\fR
.sp
Adds to a table dump all SQL statements needed to create any tablespaces used by an
NDBCLUSTER
-table. This information is not otherwise included in the output from
-\fBmysqldump\fR. This option is currently relevant only to MySQL Cluster tables.
+table\&. This information is not otherwise included in the output from
+\fBmysqldump\fR\&. This option is currently relevant only to MySQL Cluster tables\&.
+.sp
+This option was added in MySQL 5\&.1\&.6\&.
+.RE
.sp
-This option was added in MySQL 5.1.6.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: allow-keywords option
+.\" allow-keywords option: mysqldump
\fB\-\-allow\-keywords\fR
.sp
-Allow creation of column names that are keywords. This works by prefixing each column name with the table name.
-.TP 3n
-\(bu
+Allow creation of column names that are keywords\&. This works by prefixing each column name with the table name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: character-sets-dir option
+.\" character-sets-dir option: mysqldump
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: comments option
+.\" comments option: mysqldump
\fB\-\-comments\fR,
\fB\-i\fR
.sp
-Write additional information in the dump file such as program version, server version, and host. This option is enabled by default. To suppress this additional information, use
-\fB\-\-skip\-comments\fR.
-.TP 3n
-\(bu
+Write additional information in the dump file such as program version, server version, and host\&. This option is enabled by default\&. To suppress this additional information, use
+\fB\-\-skip\-comments\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: compact option
+.\" compact option: mysqldump
\fB\-\-compact\fR
.sp
-Produce less verbose output. This option enables the
+Produce less verbose output\&. This option enables the
\fB\-\-skip\-add\-drop\-table\fR,
\fB\-\-skip\-add\-locks\fR,
\fB\-\-skip\-comments\fR,
\fB\-\-skip\-disable\-keys\fR, and
\fB\-\-skip\-set\-charset\fR
-options.
+options\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
-Prior to release 5.1.21, this option did not create valid SQL if the database dump contained views. The recreation of views requires the creation and removal of temporary tables and this option suppressed the removal of those temporary tables. As a workaround, use
+.ps -1
+.br
+Prior to release 5\&.1\&.21, this option did not create valid SQL if the database dump contained views\&. The recreation of views requires the creation and removal of temporary tables and this option suppressed the removal of those temporary tables\&. As a workaround, use
\fB\-\-compact\fR
with the
\fB\-\-add\-drop\-table\fR
-option and then manually adjust the dump file.
-.TP 3n
-\(bu
+option and then manually adjust the dump file\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: compatible option
+.\" compatible option: mysqldump
\fB\-\-compatible=\fR\fB\fIname\fR\fR
.sp
-Produce output that is more compatible with other database systems or with older MySQL servers. The value of
+Produce output that is more compatible with other database systems or with older MySQL servers\&. The value of
name
can be
ansi,
@@ -264,100 +421,210 @@ db2,
maxdb,
no_key_options,
no_table_options, or
-no_field_options. To use several values, separate them by commas. These values have the same meaning as the corresponding options for setting the server SQL mode. See
-Section\ 5.1.7, \(lqServer SQL Modes\(rq.
+no_field_options\&. To use several values, separate them by commas\&. These values have the same meaning as the corresponding options for setting the server SQL mode\&. See
+Section\ \&5.1.8, \(lqServer SQL Modes\(rq\&.
.sp
-This option does not guarantee compatibility with other servers. It only enables those SQL mode values that are currently available for making dump output more compatible. For example,
+This option does not guarantee compatibility with other servers\&. It only enables those SQL mode values that are currently available for making dump output more compatible\&. For example,
\fB\-\-compatible=oracle\fR
-does not map data types to Oracle types or use Oracle comment syntax.
+does not map data types to Oracle types or use Oracle comment syntax\&.
.sp
-\fIThis option requires a server version of 4.1.0 or higher\fR. With older servers, it does nothing.
-.TP 3n
-\(bu
+\fIThis option requires a server version of 4\&.1\&.0 or higher\fR\&. With older servers, it does nothing\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: complete-insert option
+.\" complete-insert option: mysqldump
\fB\-\-complete\-insert\fR,
\fB\-c\fR
.sp
Use complete
INSERT
-statements that include column names.
-.TP 3n
-\(bu
+statements that include column names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: compress option
+.\" compress option: mysqldump
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: create-options option
+.\" create-options option: mysqldump
\fB\-\-create\-options\fR
.sp
Include all MySQL\-specific table options in the
CREATE TABLE
-statements.
-.TP 3n
-\(bu
+statements\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: databases option
+.\" databases option: mysqldump
\fB\-\-databases\fR,
\fB\-B\fR
.sp
-Dump several databases. Normally,
+Dump several databases\&. Normally,
\fBmysqldump\fR
-treats the first name argument on the command line as a database name and following names as table names. With this option, it treats all name arguments as database names.
+treats the first name argument on the command line as a database name and following names as table names\&. With this option, it treats all name arguments as database names\&.
CREATE DATABASE
and
USE
-statements are included in the output before each new database.
-.TP 3n
-\(bu
+statements are included in the output before each new database\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: debug option
+.\" debug option: mysqldump
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string is often
-\'d:t:o,\fIfile_name\fR'. The default value is
-\'d:t:o,/tmp/mysqldump.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default value is
+\'d:t:o,/tmp/mysqldump\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: debug-check option
+.\" debug-check option: mysqldump
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: debug-info option
+.\" debug-info option: mysqldump
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: default-character-set option
+.\" default-character-set option: mysqldump
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq. If no character set is specified,
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&. If no character set is specified,
\fBmysqldump\fR
uses
utf8, and earlier versions use
-latin1.
+latin1\&.
.sp
This option has no effect for output data files produced by using the
\fB\-\-tab\fR
-option. See the description for that option.
-.TP 3n
-\(bu
+option\&. See the description for that option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: delayed-insert option
+.\" delayed-insert option: mysqldump
\fB\-\-delayed\-insert\fR
.sp
Write
INSERT DELAYED
statements rather than
INSERT
-statements.
-.TP 3n
-\(bu
+statements\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: delete-master-logs option
+.\" delete-master-logs option: mysqldump
\fB\-\-delete\-master\-logs\fR
.sp
-On a master replication server, delete the binary logs after performing the dump operation. This option automatically enables
-\fB\-\-master\-data\fR.
-.TP 3n
-\(bu
+On a master replication server, delete the binary logs after performing the dump operation\&. This option automatically enables
+\fB\-\-master\-data\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: disable-keys option
+.\" disable-keys option: mysqldump
\fB\-\-disable\-keys\fR,
\fB\-K\fR
.sp
@@ -367,11 +634,21 @@ statements with
/*!40000 ALTER TABLE \fItbl_name\fR DISABLE KEYS */;
and
/*!40000 ALTER TABLE \fItbl_name\fR ENABLE KEYS */;
-statements. This makes loading the dump file faster because the indexes are created after all rows are inserted. This option is effective only for non\-unique indexes of
+statements\&. This makes loading the dump file faster because the indexes are created after all rows are inserted\&. This option is effective only for nonunique indexes of
MyISAM
-tables.
-.TP 3n
-\(bu
+tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: dump-date option
+.\" dump-date option: mysqldump
\fB\-\-dump\-date\fR
.sp
\fBmysqldump\fR
@@ -379,23 +656,43 @@ produces a
\-\- Dump completed on \fIDATE\fR
comment at the end of the dump if the
\fB\-\-comments\fR
-option is given. However, the date causes dump files for identical data take at different times to appear to be different.
+option is given\&. However, the date causes dump files for identical data take at different times to appear to be different\&.
\fB\-\-dump\-date\fR
and
\fB\-\-skip\-dump\-date\fR
-control whether the date is added to the comment. The default is
+control whether the date is added to the comment\&. The default is
\fB\-\-dump\-date\fR
-(include the date in the comment).
+(include the date in the comment)\&.
\fB\-\-skip\-dump\-date\fR
-suppresses date printing. This option was added in MySQL 5.1.23.
-.TP 3n
-\(bu
+suppresses date printing\&. This option was added in MySQL 5\&.1\&.23\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: events option
+.\" events option: mysqldump
\fB\-\-events\fR,
\fB\-E\fR
.sp
-Dump events from the dumped databases. This option was added in MySQL 5.1.8.
-.TP 3n
-\(bu
+Dump events from the dumped databases\&. This option was added in MySQL 5\&.1\&.8\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: extended-insert option
+.\" extended-insert option: mysqldump
\fB\-\-extended\-insert\fR,
\fB\-e\fR
.sp
@@ -403,235 +700,456 @@ Use multiple\-row
INSERT
syntax that include several
VALUES
-lists. This results in a smaller dump file and speeds up inserts when the file is reloaded.
-.TP 3n
-\(bu
-\fB\-\-fields\-terminated\-by=...\fR,
-\fB\-\-fields\-enclosed\-by=...\fR,
-\fB\-\-fields\-optionally\-enclosed\-by=...\fR,
-\fB\-\-fields\-escaped\-by=...\fR
+lists\&. This results in a smaller dump file and speeds up inserts when the file is reloaded\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: fields-terminated-by option
+.\" fields-terminated-by option: mysqldump
+\fB\-\-fields\-terminated\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-enclosed-by option
+.\" fields-enclosed-by option: mysqldump
+\fB\-\-fields\-enclosed\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-optionally-enclosed-by option
+.\" fields-optionally-enclosed-by option: mysqldump
+\fB\-\-fields\-optionally\-enclosed\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-escaped-by option
+.\" fields-escaped-by option: mysqldump
+\fB\-\-fields\-escaped\-by=\&.\&.\&.\fR
.sp
These options are used with the
\fB\-T\fR
option and have the same meaning as the corresponding clauses for
-LOAD DATA INFILE. See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
-.TP 3n
-\(bu
+LOAD DATA INFILE\&. See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: first-slave option
+.\" first-slave option: mysqldump
\fB\-\-first\-slave\fR,
\fB\-x\fR
.sp
-Deprecated. Now renamed to
-\fB\-\-lock\-all\-tables\fR.
-.TP 3n
-\(bu
+Deprecated\&. Now renamed to
+\fB\-\-lock\-all\-tables\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: flush-logs option
+.\" flush-logs option: mysqldump
\fB\-\-flush\-logs\fR,
\fB\-F\fR
.sp
-Flush the MySQL server log files before starting the dump. This option requires the
+Flush the MySQL server log files before starting the dump\&. This option requires the
RELOAD
-privilege. Note that if you use this option in combination with the
+privilege\&. Note that if you use this option in combination with the
\fB\-\-all\-databases\fR
(or
\fB\-A\fR) option, the logs are flushed
-\fIfor each database dumped\fR. The exception is when using
+\fIfor each database dumped\fR\&. The exception is when using
\fB\-\-lock\-all\-tables\fR
or
-\fB\-\-master\-data\fR: In this case, the logs are flushed only once, corresponding to the moment that all tables are locked. If you want your dump and the log flush to happen at exactly the same moment, you should use
+\fB\-\-master\-data\fR: In this case, the logs are flushed only once, corresponding to the moment that all tables are locked\&. If you want your dump and the log flush to happen at exactly the same moment, you should use
\fB\-\-flush\-logs\fR
together with either
\fB\-\-lock\-all\-tables\fR
or
-\fB\-\-master\-data\fR.
-.TP 3n
-\(bu
+\fB\-\-master\-data\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: flush-privileges option
+.\" flush-privileges option: mysqldump
\fB\-\-flush\-privileges\fR
.sp
Emit a
FLUSH PRIVILEGES
statement after dumping the
mysql
-database. This option should be used any time the dump contains the
+database\&. This option should be used any time the dump contains the
mysql
database and any other database that depends on the data in the
mysql
-database for proper restoration. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+database for proper restoration\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: force option
+.\" force option: mysqldump
\fB\-\-force\fR,
\fB\-f\fR
.sp
-Continue even if an SQL error occurs during a table dump.
+Continue even if an SQL error occurs during a table dump\&.
.sp
One use for this option is to cause
\fBmysqldump\fR
-to continue executing even when it encounters a view that has become invalid because the definition refers to a table that has been dropped. Without
+to continue executing even when it encounters a view that has become invalid because the definition refers to a table that has been dropped\&. Without
\fB\-\-force\fR,
\fBmysqldump\fR
-exits with an error message. With
+exits with an error message\&. With
\fB\-\-force\fR,
\fBmysqldump\fR
-prints the error message, but it also writes an SQL comment containing the view definition to the dump output and continues executing.
-.TP 3n
-\(bu
+prints the error message, but it also writes an SQL comment containing the view definition to the dump output and continues executing\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: host option
+.\" host option: mysqldump
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Dump data from the MySQL server on the given host. The default host is
-localhost.
-.TP 3n
-\(bu
+Dump data from the MySQL server on the given host\&. The default host is
+localhost\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: hex-blob option
+.\" hex-blob option: mysqldump
\fB\-\-hex\-blob\fR
.sp
Dump binary columns using hexadecimal notation (for example,
-\'abc'
+\'abc\'
becomes
-0x616263). The affected data types are
+0x616263)\&. The affected data types are
BINARY,
VARBINARY,
BLOB, and
-BIT.
-.TP 3n
-\(bu
-\fB\-\-ignore\-table=\fR\fB\fIdb_name.tbl_name\fR\fR
-.sp
-Do not dump the given table, which must be specified using both the database and table names. To ignore multiple tables, use this option multiple times. This option also can be used to ignore views.
-.TP 3n
-\(bu
+BIT\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: ignore-table option
+.\" ignore-table option: mysqldump
+\fB\-\-ignore\-table=\fR\fB\fIdb_name\&.tbl_name\fR\fR
+.sp
+Do not dump the given table, which must be specified using both the database and table names\&. To ignore multiple tables, use this option multiple times\&. This option also can be used to ignore views\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: insert-ignore option
+.\" insert-ignore option: mysqldump
\fB\-\-insert\-ignore\fR
.sp
Write
INSERT
statements with the
IGNORE
-option.
-.TP 3n
-\(bu
-\fB\-\-lines\-terminated\-by=...\fR
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: lines-terminated-by option
+.\" lines-terminated-by option: mysqldump
+\fB\-\-lines\-terminated\-by=\&.\&.\&.\fR
.sp
This option is used with the
\fB\-T\fR
option and has the same meaning as the corresponding clause for
-LOAD DATA INFILE. See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
-.TP 3n
-\(bu
+LOAD DATA INFILE\&. See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: lock-all-tables option
+.\" lock-all-tables option: mysqldump
\fB\-\-lock\-all\-tables\fR,
\fB\-x\fR
.sp
-Lock all tables across all databases. This is achieved by acquiring a global read lock for the duration of the whole dump. This option automatically turns off
+Lock all tables across all databases\&. This is achieved by acquiring a global read lock for the duration of the whole dump\&. This option automatically turns off
\fB\-\-single\-transaction\fR
and
-\fB\-\-lock\-tables\fR.
-.TP 3n
-\(bu
+\fB\-\-lock\-tables\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: lock-tables option
+.\" lock-tables option: mysqldump
\fB\-\-lock\-tables\fR,
\fB\-l\fR
.sp
-Lock all tables before dumping them. The tables are locked with
+Lock all tables before dumping them\&. The tables are locked with
READ LOCAL
to allow concurrent inserts in the case of
MyISAM
-tables. For transactional tables such as
-InnoDB
-and
-BDB,
+tables\&. For transactional tables such as
+InnoDB,
\fB\-\-single\-transaction\fR
-is a much better option, because it does not need to lock the tables at all.
+is a much better option, because it does not need to lock the tables at all\&.
.sp
Please note that when dumping multiple databases,
\fB\-\-lock\-tables\fR
-locks tables for each database separately. Therefore, this option does not guarantee that the tables in the dump file are logically consistent between databases. Tables in different databases may be dumped in completely different states.
-.TP 3n
-\(bu
+locks tables for each database separately\&. Therefore, this option does not guarantee that the tables in the dump file are logically consistent between databases\&. Tables in different databases may be dumped in completely different states\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: log-error option
+.\" log-error option: mysqldump
\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR
.sp
-Append warnings and errors to the named file. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+Append warnings and errors to the named file\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: master-data option
+.\" master-data option: mysqldump
\fB\-\-master\-data[=\fR\fB\fIvalue\fR\fR\fB]\fR
.sp
-Use this option to dump a master replication server to produce a dump file that can be used to set up another server as a slave of the master. It causes the dump output to include a
+Use this option to dump a master replication server to produce a dump file that can be used to set up another server as a slave of the master\&. It causes the dump output to include a
CHANGE MASTER TO
-statement that indicates the binary log coordinates (file name and position) of the dumped server. These are the master server coordinates from which the slave should start replicating.
+statement that indicates the binary log coordinates (file name and position) of the dumped server\&. These are the master server coordinates from which the slave should start replicating\&.
.sp
If the option value is 2, the
CHANGE MASTER TO
-statement is written as an SQL comment, and thus is informative only; it has no effect when the dump file is reloaded. If the option value is 1, the statement takes effect when the dump file is reloaded. If the option value is not specified, the default value is 1.
+statement is written as an SQL comment, and thus is informative only; it has no effect when the dump file is reloaded\&. If the option value is 1, the statement takes effect when the dump file is reloaded\&. If the option value is not specified, the default value is 1\&.
.sp
This option requires the
RELOAD
-privilege and the binary log must be enabled.
+privilege and the binary log must be enabled\&.
.sp
The
\fB\-\-master\-data\fR
option automatically turns off
-\fB\-\-lock\-tables\fR. It also turns on
+\fB\-\-lock\-tables\fR\&. It also turns on
\fB\-\-lock\-all\-tables\fR, unless
\fB\-\-single\-transaction\fR
also is specified, in which case, a global read lock is acquired only for a short time at the beginning of the dump (see the description for
-\fB\-\-single\-transaction\fR). In all cases, any action on logs happens at the exact moment of the dump.
+\fB\-\-single\-transaction\fR)\&. In all cases, any action on logs happens at the exact moment of the dump\&.
.sp
-It is also possible to set up a slave by dumping an existing slave of the master. To do this, use the following procedure on the existing slave:
-.RS 3n
-.TP 3n
-1.
-Stop the slave's SQL thread and get its current status:
+It is also possible to set up a slave by dumping an existing slave of the master\&. To do this, use the following procedure on the existing slave:
.sp
-.RS 3n
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+Stop the slave\'s SQL thread and get its current status:
+.sp
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSTOP SLAVE SQL_THREAD;\fR
mysql> \fBSHOW SLAVE STATUS;\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-2.
-From the output of the SHOW SLAVE STATUS statement, get the binary log coordinates of the master server from which the new slave should start replicating. These coordinates are the values of the Relay_Master_Log_File and Exec_Master_Log_Pos values. Denote those values as file_name and file_pos.
-.TP 3n
-3.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+From the output of the SHOW SLAVE STATUS statement, get the binary log coordinates of the master server from which the new slave should start replicating\&. These coordinates are the values of the Relay_Master_Log_File and Exec_Master_Log_Pos values\&. Denote those values as file_name and file_pos\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
Dump the slave server:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump \-\-master\-data=2 \-\-all\-databases > dumpfile\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-4.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 4.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 4." 4.2
+.\}
Restart the slave:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSTART SLAVE;\fR
.fi
+.if n \{\
.RE
-.TP 3n
-5.
+.\}
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 5.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 5." 4.2
+.\}
On the new slave, reload the dump file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql < dumpfile\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-6.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 6.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 6." 4.2
+.\}
On the new slave, set the replication coordinates to those of the master server obtained earlier:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBCHANGE MASTER TO\fR
- \-> \fBMASTER_LOG_FILE = 'file_name', MASTER_LOG_POS = file_pos;\fR
+ \-> \fBMASTER_LOG_FILE = \'file_name\', MASTER_LOG_POS = file_pos;\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
The
CHANGE MASTER TO
statement might also need other parameters, such as
MASTER_HOST
-to point the slave to the correct master server host. Add any such parameters as necessary.
+to point the slave to the correct master server host\&. Add any such parameters as necessary\&.
.RE
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-autocommit option
+.\" no-autocommit option: mysqldump
\fB\-\-no\-autocommit\fR
.sp
Enclose the
@@ -640,9 +1158,19 @@ statements for each dumped table within
SET autocommit = 0
and
COMMIT
-statements.
-.TP 3n
-\(bu
+statements\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-create-db option
+.\" no-create-db option: mysqldump
\fB\-\-no\-create\-db\fR,
\fB\-n\fR
.sp
@@ -652,25 +1180,71 @@ statements that are otherwise included i
\fB\-\-databases\fR
or
\fB\-\-all\-databases\fR
-option is given.
-.TP 3n
-\(bu
+option is given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-create-info option
+.\" no-create-info option: mysqldump
\fB\-\-no\-create\-info\fR,
\fB\-t\fR
.sp
Do not write
CREATE TABLE
-statements that re\-create each dumped table.
-.TP 3n
-\(bu
+statements that re\-create each dumped table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-data option
+.\" no-data option: mysqldump
\fB\-\-no\-data\fR,
\fB\-d\fR
.sp
-Do not write any table row information (that is, do not dump table contents). This is very useful if you want to dump only the
+Do not write any table row information (that is, do not dump table contents)\&. This is very useful if you want to dump only the
CREATE TABLE
-statement for the table.
-.TP 3n
-\(bu
+statement for the table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-set-names option
+.\" no-set-names option: mysqldump
+\fB\-\-no\-set\-names\fR
+.sp
+This option is deprecated\&. Use
+\fB\-\-skip\-set\-charset\fR\&. instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: opt option
+.\" opt option: mysqldump
\fB\-\-opt\fR
.sp
This option is shorthand; it is the same as specifying
@@ -681,155 +1255,275 @@ This option is shorthand; it is the same
\fB\-\-extended\-insert\fR
\fB\-\-lock\-tables\fR
\fB\-\-quick\fR
-\fB\-\-set\-charset\fR. It should give you a fast dump operation and produce a dump file that can be reloaded into a MySQL server quickly.
+\fB\-\-set\-charset\fR\&. It should give you a fast dump operation and produce a dump file that can be reloaded into a MySQL server quickly\&.
.sp
-\fIThe \fR\fI\fB\-\-opt\fR\fR\fI option is enabled by default. Use \fR\fI\fB\-\-skip\-opt\fR\fR\fI to disable it.\fR
+\fIThe \fR\fI\fB\-\-opt\fR\fR\fI option is enabled by default\&. Use \fR\fI\fB\-\-skip\-opt\fR\fR\fI to disable it\&.\fR
See the discussion at the beginning of this section for information about selectively enabling or disabling certain of the options affected by
-\fB\-\-opt\fR.
-.TP 3n
-\(bu
+\fB\-\-opt\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: order-by-primary option
+.\" order-by-primary option: mysqldump
\fB\-\-order\-by\-primary\fR
.sp
-Sorts each table's rows by its primary key, or by its first unique index, if such an index exists. This is useful when dumping a
+Sort each table\'s rows by its primary key, or by its first unique index, if such an index exists\&. This is useful when dumping a
MyISAM
table to be loaded into an
InnoDB
-table, but will make the dump itself take considerably longer.
-.TP 3n
-\(bu
+table, but will make the dump itself take considerably longer\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: password option
+.\" password option: mysqldump
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: pipe option
+.\" pipe option: mysqldump
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: port option
+.\" port option: mysqldump
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: protocol option
+.\" protocol option: mysqldump
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: quick option
+.\" quick option: mysqldump
\fB\-\-quick\fR,
\fB\-q\fR
.sp
-This option is useful for dumping large tables. It forces
+This option is useful for dumping large tables\&. It forces
\fBmysqldump\fR
-to retrieve rows for a table from the server a row at a time rather than retrieving the entire row set and buffering it in memory before writing it out.
-.TP 3n
-\(bu
+to retrieve rows for a table from the server a row at a time rather than retrieving the entire row set and buffering it in memory before writing it out\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: quote-names option
+.\" quote-names option: mysqldump
\fB\-\-quote\-names\fR,
\fB\-Q\fR
.sp
Quote database, table, and column names within
\(lq`\(rq
-characters. If the
+characters\&. If the
ANSI_QUOTES
SQL mode is enabled, names are quoted within
\(lq"\(rq
-characters. This option is enabled by default. It can be disabled with
+characters\&. This option is enabled by default\&. It can be disabled with
\fB\-\-skip\-quote\-names\fR, but this option should be given after any option such as
\fB\-\-compatible\fR
that may enable
-\fB\-\-quote\-names\fR.
-.TP 3n
-\(bu
+\fB\-\-quote\-names\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: replace option
+.\" replace option: mysqldump
\fB\-\-replace\fR
.sp
Write
REPLACE
statements rather than
INSERT
-statements. Available as of MySQL 5.1.3.
-.TP 3n
-\(bu
+statements\&. Available as of MySQL 5\&.1\&.3\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: result-file option
+.\" result-file option: mysqldump
\fB\-\-result\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-r \fR\fB\fIfile_name\fR\fR
.sp
-Direct output to a given file. This option should be used on Windows to prevent newline
-\(lq\\n\(rq
+Direct output to a given file\&. This option should be used on Windows to prevent newline
+\(lq\en\(rq
characters from being converted to
-\(lq\\r\\n\(rq
-carriage return/newline sequences. The result file is created and its contents overwritten, even if an error occurs while generating the dump. The previous contents are lost.
-.TP 3n
-\(bu
+\(lq\er\en\(rq
+carriage return/newline sequences\&. The result file is created and its contents overwritten, even if an error occurs while generating the dump\&. The previous contents are lost\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: routines option
+.\" routines option: mysqldump
\fB\-\-routines\fR,
\fB\-R\fR
.sp
-Dump stored routines (procedures and functions) from the dumped databases. Use of this option requires the
+Dump stored routines (procedures and functions) from the dumped databases\&. Use of this option requires the
SELECT
privilege for the
-mysql.proc
-table. The output generated by using
+mysql\&.proc
+table\&. The output generated by using
\fB\-\-routines\fR
contains
CREATE PROCEDURE
and
CREATE FUNCTION
-statements to re\-create the routines. However, these statements do not include attributes such as the routine creation and modification timestamps. This means that when the routines are reloaded, they will be created with the timestamps equal to the reload time.
+statements to re\-create the routines\&. However, these statements do not include attributes such as the routine creation and modification timestamps\&. This means that when the routines are reloaded, they will be created with the timestamps equal to the reload time\&.
.sp
If you require routines to be re\-created with their original timestamp attributes, do not use
-\fB\-\-routines\fR. Instead, dump and reload the contents of the
-mysql.proc
+\fB\-\-routines\fR\&. Instead, dump and reload the contents of the
+mysql\&.proc
table directly, using a MySQL account that has appropriate privileges for the
mysql
-database.
+database\&.
.sp
-This option was added in MySQL 5.1.2. Before that, stored routines are not dumped. Routine
+This option was added in MySQL 5\&.1\&.2\&. Before that, stored routines are not dumped\&. Routine
DEFINER
-values are not dumped until MySQL 5.1.8. This means that before 5.1.8, when routines are reloaded, they will be created with the definer set to the reloading user. If you require routines to be re\-created with their original definer, dump and load the contents of the
-mysql.proc
-table directly as described earlier.
-.TP 3n
-\(bu
+values are not dumped until MySQL 5\&.1\&.8\&. This means that before 5\&.1\&.8, when routines are reloaded, they will be created with the definer set to the reloading user\&. If you require routines to be re\-created with their original definer, dump and load the contents of the
+mysql\&.proc
+table directly as described earlier\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: set-charset option
+.\" set-charset option: mysqldump
\fB\-\-set\-charset\fR
.sp
Add
SET NAMES \fIdefault_character_set\fR
-to the output. This option is enabled by default. To suppress the
+to the output\&. This option is enabled by default\&. To suppress the
SET NAMES
statement, use
-\fB\-\-skip\-set\-charset\fR.
-.TP 3n
-\(bu
+\fB\-\-skip\-set\-charset\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: single-transaction option
+.\" single-transaction option: mysqldump
\fB\-\-single\-transaction\fR
.sp
This option issues a
BEGIN
-SQL statement before dumping data from the server. It is useful only with transactional tables such as
+SQL statement before dumping data from the server\&. It is useful only with transactional tables such as
InnoDB, because then it dumps the consistent state of the database at the time when
BEGIN
-was issued without blocking any applications.
+was issued without blocking any applications\&.
.sp
When using this option, you should keep in mind that only
InnoDB
-tables are dumped in a consistent state. For example, any
+tables are dumped in a consistent state\&. For example, any
MyISAM
or
MEMORY
-tables dumped while using this option may still change state.
+tables dumped while using this option may still change state\&.
.sp
While a
\fB\-\-single\-transaction\fR
@@ -837,19 +1531,19 @@ dump is in process, to ensure a valid du
ALTER TABLE,
DROP TABLE,
RENAME TABLE,
-TRUNCATE TABLE. A consistent read is not isolated from those statements, so use of them on a table to be dumped can cause the
+TRUNCATE TABLE\&. A consistent read is not isolated from those statements, so use of them on a table to be dumped can cause the
SELECT
performed by
\fBmysqldump\fR
-to retrieve the table contents to obtain incorrect contents or fail.
+to retrieve the table contents to obtain incorrect contents or fail\&.
.sp
This option is not supported for MySQL Cluster tables; the results cannot be guaranteed to be consistent due to the fact that the
NDBCLUSTER
storage engine supports only the
READ_COMMITTED
-transaction isolation level. You should always use
+transaction isolation level\&. You should always use
NDB
-backup and restore instead.
+backup and restore instead\&.
.sp
The
\fB\-\-single\-transaction\fR
@@ -857,164 +1551,306 @@ option and the
\fB\-\-lock\-tables\fR
option are mutually exclusive, because
LOCK TABLES
-causes any pending transactions to be committed implicitly.
+causes any pending transactions to be committed implicitly\&.
.sp
To dump large tables, you should combine this option with
-\fB\-\-quick\fR.
-.TP 3n
-\(bu
+\fB\-\-quick\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: skip-comments option
+.\" skip-comments option: mysqldump
\fB\-\-skip\-comments\fR
.sp
See the description for the
\fB\-\-comments\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: skip-opt option
+.\" skip-opt option: mysqldump
\fB\-\-skip\-opt\fR
.sp
See the description for the
\fB\-\-opt\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: socket option
+.\" socket option: mysqldump
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: SSL options
+.\" SSL options: mysqldump
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: tab option
+.\" tab option: mysqldump
\fB\-\-tab=\fR\fB\fIpath\fR\fR,
\fB\-T \fR\fB\fIpath\fR\fR
.sp
-Produce tab\-separated data files. For each dumped table,
+Produce tab\-separated data files\&. For each dumped table,
\fBmysqldump\fR
creates a
-\fI\fItbl_name\fR\fR\fI.sql\fR
+\fItbl_name\fR\&.sql
file that contains the
CREATE TABLE
statement that creates the table, and a
-\fI\fItbl_name\fR\fR\fI.txt\fR
-file that contains its data. The option value is the directory in which to write the files.
+\fItbl_name\fR\&.txt
+file that contains its data\&. The option value is the directory in which to write the files\&.
.sp
By default, the
-\fI.txt\fR
-data files are formatted using tab characters between column values and a newline at the end of each line. The format can be specified explicitly using the
+\&.txt
+data files are formatted using tab characters between column values and a newline at the end of each line\&. The format can be specified explicitly using the
\fB\-\-fields\-\fR\fB\fIxxx\fR\fR
and
\fB\-\-lines\-terminated\-by\fR
-options.
+options\&.
.sp
Column values are dumped using the
binary
character set and the
\fB\-\-default\-character\-set\fR
-option is ignored. In effect, there is no character set conversion. If a table contains columns in several character sets, the output data file will as well and you may not be able to reload the file correctly.
+option is ignored\&. In effect, there is no character set conversion\&. If a table contains columns in several character sets, the output data file will as well and you may not be able to reload the file correctly\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
This option should be used only when
\fBmysqldump\fR
is run on the same machine as the
\fBmysqld\fR
-server. You must have the
+server\&. You must have the
FILE
-privilege, and the server must have permission to write files in the directory that you specify.
-.TP 3n
-\(bu
+privilege, and the server must have permission to write files in the directory that you specify\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: tables option
+.\" tables option: mysqldump
\fB\-\-tables\fR
.sp
Override the
\fB\-\-databases\fR
or
\fB\-B\fR
-option.
+option\&.
\fBmysqldump\fR
-regards all name arguments following the option as table names.
-.TP 3n
-\(bu
+regards all name arguments following the option as table names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: triggers option
+.\" triggers option: mysqldump
\fB\-\-triggers\fR
.sp
-Dump triggers for each dumped table. This option is enabled by default; disable it with
-\fB\-\-skip\-triggers\fR.
-.TP 3n
-\(bu
+Dump triggers for each dumped table\&. This option is enabled by default; disable it with
+\fB\-\-skip\-triggers\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: tz-utc option
+.\" tz-utc option: mysqldump
\fB\-\-tz\-utc\fR
.sp
This option enables
TIMESTAMP
-columns to be dumped and reloaded between servers in different time zones.
+columns to be dumped and reloaded between servers in different time zones\&.
\fBmysqldump\fR
sets its connection time zone to UTC and adds
-SET TIME_ZONE='+00:00'
-to the dump file. Without this option,
+SET TIME_ZONE=\'+00:00\'
+to the dump file\&. Without this option,
TIMESTAMP
-columns are dumped and reloaded in the time zones local to the source and destination servers, which can cause the values to change.
+columns are dumped and reloaded in the time zones local to the source and destination servers, which can cause the values to change\&.
\fB\-\-tz\-utc\fR
-also protects against changes due to daylight saving time.
+also protects against changes due to daylight saving time\&.
\fB\-\-tz\-utc\fR
-is enabled by default. To disable it, use
-\fB\-\-skip\-tz\-utc\fR. This option was added in MySQL 5.1.2.
-.TP 3n
-\(bu
+is enabled by default\&. To disable it, use
+\fB\-\-skip\-tz\-utc\fR\&. This option was added in MySQL 5\&.1\&.2\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: user option
+.\" user option: mysqldump
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: verbose option
+.\" verbose option: mysqldump
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: version option
+.\" version option: mysqldump
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
-\fB\-\-where='\fR\fB\fIwhere_condition\fR\fR\fB'\fR,
-\fB\-w '\fR\fB\fIwhere_condition\fR\fR\fB'\fR
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: where option
+.\" where option: mysqldump
+\fB\-\-where=\'\fR\fB\fIwhere_condition\fR\fR\fB\'\fR,
+\fB\-w \'\fR\fB\fIwhere_condition\fR\fR\fB\'\fR
.sp
Dump only rows selected by the given
WHERE
-condition. Quotes around the condition are mandatory if it contains spaces or other characters that are special to your command interpreter.
+condition\&. Quotes around the condition are mandatory if it contains spaces or other characters that are special to your command interpreter\&.
.sp
Examples:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-\-\-where="user='jimf'"
+\-\-where="user=\'jimf\'"
\-w"userid>1"
\-w"userid<1"
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: xml option
+.\" xml option: mysqldump
\fB\-\-xml\fR,
\fB\-X\fR
.sp
-Write dump output as well\-formed XML.
+Write dump output as well\-formed XML\&.
.sp
-\fBNULL\fR\fB, \fR\fB'NULL'\fR\fB, and Empty Values\fR: For some column named
+\fBNULL\fR\fB, \fR\fB\'NULL\'\fR\fB, and Empty Values\fR: For some column named
\fIcolumn_name\fR, the
NULL
value, an empty string, and the string value
-\'NULL'
-are distinguished from one another in the output generated by this option as follows.
+\'NULL\'
+are distinguished from one another in the output generated by this option as follows\&.
.TS
allbox tab(:);
l l
@@ -1029,39 +1865,38 @@ T}
T{
NULL (\fIunknown value\fR)
T}:T{
-<field name="\fIcolumn_name\fR"
- xsi:nil="true" />
+<field name="\fIcolumn_name\fR" xsi:nil="true" />
T}
T{
-\'' (\fIempty string\fR)
+\'\' (\fIempty string\fR)
T}:T{
-<field
- name="\fIcolumn_name\fR"></field>
+<field name="\fIcolumn_name\fR"></field>
T}
T{
-\'NULL' (\fIstring value\fR)
+\'NULL\' (\fIstring value\fR)
T}:T{
-<field
- name="\fIcolumn_name\fR">NULL</field>
+<field name="\fIcolumn_name\fR">NULL</field>
T}
.TE
-.sp
-Beginning with MySQL 5.1.12, the output from the
+.sp 1
+Beginning with MySQL 5\&.1\&.12, the output from the
\fBmysql\fR
client when run using the
\fB\-\-xml\fR
-option also follows these rules. (See
-the section called \(lq\fBMYSQL\fR OPTIONS\(rq.)
+option also follows these rules\&. (See
+the section called \(lqMYSQL OPTIONS\(rq\&.)
.sp
-Beginning with MySQL 5.1.18, XML output from
+Beginning with MySQL 5\&.1\&.18, XML output from
\fBmysqldump\fR
includes the XML namespace, as shown here:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump \-\-xml \-u root world City\fR
-<?xml version="1.0"?>
-<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema\-instance">
+<?xml version="1\&.0"?>
+<mysqldump xmlns:xsi="http://www\&.w3\&.org/2001/XMLSchema\-instance">
<database name="world">
<table_structure name="City">
<field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
@@ -1083,7 +1918,7 @@ e_time="2007\-03\-31 01:47:02" Collation
<field name="District">Kabol</field>
<field name="Population">1780000</field>
</row>
-\fI...\fR
+\fI\&.\&.\&.\fR
<row>
<field name="ID">4079</field>
<field name="Name">Rafah</field>
@@ -1095,88 +1930,127 @@ e_time="2007\-03\-31 01:47:02" Collation
</database>
</mysqldump>
.fi
+.if n \{\
.RE
-.sp
+.\}
.sp
.RE
.PP
You can also set the following variables by using
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
syntax:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
max_allowed_packet
.sp
-The maximum size of the buffer for client/server communication. The maximum is 1GB.
-.TP 3n
-\(bu
+The maximum size of the buffer for client/server communication\&. The maximum is 1GB\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
net_buffer_length
.sp
-The initial size of the buffer for client/server communication. When creating multiple\-row\-insert statements (as with option
+The initial size of the buffer for client/server communication\&. When creating multiple\-row\-insert statements (as with option
\fB\-\-extended\-insert\fR
or
\fB\-\-opt\fR),
\fBmysqldump\fR
creates rows up to
net_buffer_length
-length. If you increase this variable, you should also ensure that the
+length\&. If you increase this variable, you should also ensure that the
net_buffer_length
-variable in the MySQL server is at least this large.
-.sp
+variable in the MySQL server is at least this large\&.
.RE
.PP
The most common use of
\fBmysqldump\fR
is probably for making a backup of an entire database:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \fR\fB\fIdb_name\fR\fR\fB > \fR\fB\fIbackup\-file.sql\fR\fR
+shell> \fBmysqldump \fR\fB\fIdb_name\fR\fR\fB > \fR\fB\fIbackup\-file\&.sql\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
You can read the dump file back into the server like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fIbackup\-file.sql\fR\fR
+shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fIbackup\-file\&.sql\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Or like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-e "source \fR\fB\fI/path\-to\-backup/backup\-file.sql\fR\fR\fB" \fR\fB\fIdb_name\fR\fR
+shell> \fBmysql \-e "source \fR\fB\fI/path\-to\-backup/backup\-file\&.sql\fR\fR\fB" \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqldump\fR
is also very useful for populating databases by copying data from one MySQL server to another:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump \-\-opt \fR\fB\fIdb_name\fR\fR\fB | mysql \-\-host=\fR\fB\fIremote_host\fR\fR\fB \-C \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
It is possible to dump several databases with one command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB ...] > my_databases.sql\fR
+shell> \fBmysqldump \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \&.\&.\&.] > my_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
To dump all databases, use the
\fB\-\-all\-databases\fR
option:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \-\-all\-databases > all_databases.sql\fR
+shell> \fBmysqldump \-\-all\-databases > all_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For
InnoDB
@@ -1184,36 +2058,48 @@ tables,
\fBmysqldump\fR
provides a way of making an online backup:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \-\-all\-databases \-\-single\-transaction > all_databases.sql\fR
+shell> \fBmysqldump \-\-all\-databases \-\-single\-transaction > all_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
This backup acquires a global read lock on all tables (using
-FLUSH TABLES WITH READ LOCK) at the beginning of the dump. As soon as this lock has been acquired, the binary log coordinates are read and the lock is released. If long updating statements are running when the
+FLUSH TABLES WITH READ LOCK) at the beginning of the dump\&. As soon as this lock has been acquired, the binary log coordinates are read and the lock is released\&. If long updating statements are running when the
FLUSH
-statement is issued, the MySQL server may get stalled until those statements finish. After that, the dump becomes lock\-free and does not disturb reads and writes on the tables. If the update statements that the MySQL server receives are short (in terms of execution time), the initial lock period should not be noticeable, even with many updates.
+statement is issued, the MySQL server may get stalled until those statements finish\&. After that, the dump becomes lock\-free and does not disturb reads and writes on the tables\&. If the update statements that the MySQL server receives are short (in terms of execution time), the initial lock period should not be noticeable, even with many updates\&.
.PP
For point\-in\-time recovery (also known as
\(lqroll\-forward,\(rq
when you need to restore an old backup and replay the changes that happened since that backup), it is often useful to rotate the binary log (see
-Section\ 5.2.4, \(lqThe Binary Log\(rq) or at least know the binary log coordinates to which the dump corresponds:
+Section\ \&5.2.4, \(lqThe Binary Log\(rq) or at least know the binary log coordinates to which the dump corresponds:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \-\-all\-databases \-\-master\-data=2 > all_databases.sql\fR
+shell> \fBmysqldump \-\-all\-databases \-\-master\-data=2 > all_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Or:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump \-\-all\-databases \-\-flush\-logs \-\-master\-data=2\fR
- \fB> all_databases.sql\fR
+ \fB> all_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fB\-\-master\-data\fR
@@ -1221,30 +2107,37 @@ and
\fB\-\-single\-transaction\fR
options can be used simultaneously, which provides a convenient way to make an online backup suitable for point\-in\-time recovery if tables are stored using the
InnoDB
-storage engine.
+storage engine\&.
.PP
For more information on making backups, see
-Section\ 6.1, \(lqDatabase Backups\(rq, and
-Section\ 6.2, \(lqExample Backup and Recovery Strategy\(rq.
+Section\ \&6.1, \(lqDatabase Backups\(rq, and
+Section\ \&6.2, \(lqExample Backup and Recovery Strategy\(rq\&.
+.\" mysqldump: views
+.\" mysqldump: problems
+.\" mysqldump: workarounds
.PP
-If you encounter problems backing up views, please read the section that covers restrictions on views which describes a workaround for backing up views when this fails due to insufficient privileges. See
-Section\ D.4, \(lqRestrictions on Views\(rq.
+If you encounter problems backing up views, please read the section that covers restrictions on views which describes a workaround for backing up views when this fails due to insufficient privileges\&. See
+Section\ \&D.4, \(lqRestrictions on Views\(rq\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ Bug#30123
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#30123
+.RS 4
\%http://bugs.mysql.com/30123
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqldumpslow.1'
--- a/man/mysqldumpslow.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqldumpslow.1 2009-09-16 12:03:18 +0000
@@ -1,176 +1,325 @@
+'\" t
.\" Title: \fBmysqldumpslow\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLDUMPSLOW\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLDUMPSLOW\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqldumpslow
.SH "NAME"
mysqldumpslow \- Summarize slow query log files
.SH "SYNOPSIS"
-.HP 39
-\fBmysqldumpslow [\fR\fBoptions\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB ...]\fR
+.HP \w'\fBmysqldumpslow\ [\fR\fBoptions\fR\fB]\ [\fR\fB\fIlog_file\fR\fR\fB\ \&.\&.\&.]\fR\ 'u
+\fBmysqldumpslow [\fR\fBoptions\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
The MySQL slow query log contains information about queries that take a long time to execute (see
-Section\ 5.2.5, \(lqThe Slow Query Log\(rq).
+Section\ \&5.2.5, \(lqThe Slow Query Log\(rq)\&.
\fBmysqldumpslow\fR
-parses MySQL slow query log files and prints a summary of their contents.
+parses MySQL slow query log files and prints a summary of their contents\&.
.PP
Normally,
\fBmysqldumpslow\fR
-groups queries that are similar except for the particular values of number and string data values. It
+groups queries that are similar except for the particular values of number and string data values\&. It
\(lqabstracts\(rq
these values to
N
and
-\'S'
-when displaying summary output. The
+\'S\'
+when displaying summary output\&. The
\fB\-a\fR
and
\fB\-n\fR
-options can be used to modify value abstracting behavior.
+options can be used to modify value abstracting behavior\&.
.PP
Invoke
\fBmysqldumpslow\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldumpslow [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB ...]\fR
+shell> \fBmysqldumpslow [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqldumpslow\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldumpslow: help option
+.\" help option: mysqldumpslow
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-a\fR
.sp
Do not abstract all numbers to
N
and strings to
-\'S'.
-.TP 3n
-\(bu
+\'S\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldumpslow: debug option
+.\" debug option: mysqldumpslow
\fB\-\-debug\fR,
\fB\-d\fR
.sp
-Run in debug mode.
-.TP 3n
-\(bu
+Run in debug mode\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-g \fR\fB\fIpattern\fR\fR
.sp
-Consider only queries that match the (\fBgrep\fR\-style) pattern.
-.TP 3n
-\(bu
+Consider only queries that match the (\fBgrep\fR\-style) pattern\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
Host name of MySQL server for
-\fI*\-slow.log\fR
-file name. The value can contain a wildcare. The default is
+*\-slow\&.log
+file name\&. The value can contain a wildcare\&. The default is
*
-(match all).
-.TP 3n
-\(bu
+(match all)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-i \fR\fB\fIname\fR\fR
.sp
Name of server instance (if using
-\fBmysql.server\fR
-startup script).
-.TP 3n
-\(bu
+\fBmysql\&.server\fR
+startup script)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-l\fR
.sp
-Do not subtract lock time from total time.
-.TP 3n
-\(bu
+Do not subtract lock time from total time\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-n \fR\fB\fIN\fR\fR
.sp
Abstract numbers with at least
\fIN\fR
-digits within names.
-.TP 3n
-\(bu
+digits within names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-r\fR
.sp
-Reverse the sort order.
-.TP 3n
-\(bu
+Reverse the sort order\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-s \fR\fB\fIsort_type\fR\fR
.sp
-How to sort the output. The value of
+How to sort the output\&. The value of
\fIsort_type\fR
should be chosen from the following list:
-.RS 3n
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
t,
at: Sort by query time or average query time
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
l,
al: Sort by lock time or average lock time
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
s,
-as: Sort by rows sent or average rows went
-.TP 3n
-\(bu
+as: Sort by rows sent or average rows sent
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
c: Sort by count
.RE
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-t \fR\fB\fIN\fR\fR
.sp
Display only the first
\fIN\fR
-queries in the output.
-.TP 3n
-\(bu
+queries in the output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldumpslow: verbose option
+.\" verbose option: mysqldumpslow
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.sp
+Verbose mode\&. Print more information about what the program does\&.
.RE
.PP
Example of usage:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldumpslow\fR
-Reading mysql slow query log from /usr/local/mysql/data/mysqld51\-apple\-slow.log
-Count: 1 Time=4.32s (4s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
+Reading mysql slow query log from /usr/local/mysql/data/mysqld51\-apple\-slow\&.log
+Count: 1 Time=4\&.32s (4s) Lock=0\&.00s (0s) Rows=0\&.0 (0), root[root]@localhost
insert into t2 select * from t1
-Count: 3 Time=2.53s (7s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
+Count: 3 Time=2\&.53s (7s) Lock=0\&.00s (0s) Rows=0\&.0 (0), root[root]@localhost
insert into t2 select * from t1 limit N
-Count: 3 Time=2.13s (6s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
+Count: 3 Time=2\&.13s (6s) Lock=0\&.00s (0s) Rows=0\&.0 (0), root[root]@localhost
insert into t1 select * from t1
.fi
+.if n \{\
.RE
+.\}
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlhotcopy.1'
--- a/man/mysqlhotcopy.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlhotcopy.1 2009-09-16 12:03:18 +0000
@@ -1,219 +1,476 @@
+'\" t
.\" Title: \fBmysqlhotcopy\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLHOTCOPY\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLHOTCOPY\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlhotcopy
+.\" dumping: databases and tables
+.\" backups: databases and tables
+.\" databases: dumping
+.\" tables: dumping
.SH "NAME"
mysqlhotcopy \- a database backup program
.SH "SYNOPSIS"
-.HP 23
+.HP \w'\fBmysqlhotcopy\ \fR\fB\fIarguments\fR\fR\ 'u
\fBmysqlhotcopy \fR\fB\fIarguments\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysqlhotcopy\fR
-is a Perl script that was originally written and contributed by Tim Bunce. It uses
+is a Perl script that was originally written and contributed by Tim Bunce\&. It uses
LOCK TABLES,
FLUSH TABLES, and
cp
or
scp
-to make a database backup quickly. It is the fastest way to make a backup of the database or single tables, but it can be run only on the same machine where the database directories are located.
+to make a database backup quickly\&. It is the fastest way to make a backup of the database or single tables, but it can be run only on the same machine where the database directories are located\&.
\fBmysqlhotcopy\fR
works only for backing up
MyISAM
and
ARCHIVE
-tables. It runs on Unix and NetWare.
+tables\&. It runs on Unix and NetWare\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fI/path/to/new_directory\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlhotcopy \fR\fB\fIdb_name_1\fR\fR\fB ... \fR\fB\fIdb_name_n\fR\fR\fB \fR\fB\fI/path/to/new_directory\fR\fR
+shell> \fBmysqlhotcopy \fR\fB\fIdb_name_1\fR\fR\fB \&.\&.\&. \fR\fB\fIdb_name_n\fR\fR\fB \fR\fB\fI/path/to/new_directory\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Back up tables in the given database that match a regular expression:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB./\fR\fB\fIregex\fR\fR\fB/\fR
+shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB\&./\fR\fB\fIregex\fR\fR\fB/\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The regular expression for the table name can be negated by prefixing it with a tilde (\(lq~\(rq):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB./~\fR\fB\fIregex\fR\fR\fB/\fR
+shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB\&./~\fR\fB\fIregex\fR\fR\fB/\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqlhotcopy\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: help option
+.\" help option: mysqlhotcopy
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: addtodest option
+.\" addtodest option: mysqlhotcopy
\fB\-\-addtodest\fR
.sp
-Do not rename target directory (if it exists); merely add files to it.
-.TP 3n
-\(bu
+Do not rename target directory (if it exists); merely add files to it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: allowold option
+.\" allowold option: mysqlhotcopy
\fB\-\-allowold\fR
.sp
Do not abort if a target exists; rename it by adding an
_old
-suffix.
-.TP 3n
-\(bu
-\fB\-\-checkpoint=\fR\fB\fIdb_name\fR\fR\fB.\fR\fB\fItbl_name\fR\fR
+suffix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: checkpoint option
+.\" checkpoint option: mysqlhotcopy
+\fB\-\-checkpoint=\fR\fB\fIdb_name\fR\fR\fB\&.\fR\fB\fItbl_name\fR\fR
.sp
Insert checkpoint entries into the specified database
\fIdb_name\fR
and table
-\fItbl_name\fR.
-.TP 3n
-\(bu
+\fItbl_name\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: chroot option
+.\" chroot option: mysqlhotcopy
\fB\-\-chroot=\fR\fB\fIpath\fR\fR
.sp
Base directory of the
\fBchroot\fR
jail in which
\fBmysqld\fR
-operates. The
+operates\&. The
\fIpath\fR
value should match that of the
\fB\-\-chroot\fR
option given to
-\fBmysqld\fR.
-.TP 3n
-\(bu
+\fBmysqld\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: debug option
+.\" debug option: mysqlhotcopy
\fB\-\-debug\fR
.sp
-Enable debug output.
-.TP 3n
-\(bu
+Enable debug output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: dryrun option
+.\" dryrun option: mysqlhotcopy
\fB\-\-dryrun\fR,
\fB\-n\fR
.sp
-Report actions without performing them.
-.TP 3n
-\(bu
+Report actions without performing them\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: flushlog option
+.\" flushlog option: mysqlhotcopy
\fB\-\-flushlog\fR
.sp
-Flush logs after all tables are locked.
-.TP 3n
-\(bu
+Flush logs after all tables are locked\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: host option
+.\" host option: mysqlhotcopy
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-The host name of the local host to use for making a TCP/IP connection to the local server. By default, the connection is made to
+The host name of the local host to use for making a TCP/IP connection to the local server\&. By default, the connection is made to
localhost
-using a Unix socket file.
-.TP 3n
-\(bu
+using a Unix socket file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: keepold option
+.\" keepold option: mysqlhotcopy
\fB\-\-keepold\fR
.sp
-Do not delete previous (renamed) target when done.
-.TP 3n
-\(bu
+Do not delete previous (renamed) target when done\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: method option
+.\" method option: mysqlhotcopy
\fB\-\-method=\fR\fB\fIcommand\fR\fR
.sp
The method for copying files (cp
or
-scp).
-.TP 3n
-\(bu
+scp)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: noindices option
+.\" noindices option: mysqlhotcopy
\fB\-\-noindices\fR
.sp
-Do not include full index files in the backup. This makes the backup smaller and faster. The indexes for reloaded tables can be reconstructed later with
-\fBmyisamchk \-rq\fR.
-.TP 3n
-\(bu
+Do not include full index files in the backup\&. This makes the backup smaller and faster\&. The indexes for reloaded tables can be reconstructed later with
+\fBmyisamchk \-rq\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: password option
+.\" password option: mysqlhotcopy
\fB\-\-password=\fR\fB\fIpassword\fR\fR,
\fB\-p\fR\fB\fIpassword\fR\fR
.sp
-The password to use when connecting to the server. Note that the password value is not optional for this option, unlike for other MySQL programs. You can use an option file to avoid giving the password on the command line.
+The password to use when connecting to the server\&. Note that the password value is not optional for this option, unlike for other MySQL programs\&. You can use an option file to avoid giving the password on the command line\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: port option
+.\" port option: mysqlhotcopy
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use when connecting to the local server.
-.TP 3n
-\(bu
+The TCP/IP port number to use when connecting to the local server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: quiet option
+.\" quiet option: mysqlhotcopy
\fB\-\-quiet\fR,
\fB\-q\fR
.sp
-Be silent except for errors.
-.TP 3n
-\(bu
-\fB\-\-record_log_pos=\fR\fB\fIdb_name\fR\fR\fB.\fR\fB\fItbl_name\fR\fR
+Be silent except for errors\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: record_log_pos option
+.\" record_log_pos option: mysqlhotcopy
+\fB\-\-record_log_pos=\fR\fB\fIdb_name\fR\fR\fB\&.\fR\fB\fItbl_name\fR\fR
.sp
Record master and slave status in the specified database
\fIdb_name\fR
and table
-\fItbl_name\fR.
-.TP 3n
-\(bu
+\fItbl_name\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: regexp option
+.\" regexp option: mysqlhotcopy
\fB\-\-regexp=\fR\fB\fIexpr\fR\fR
.sp
-Copy all databases with names that match the given regular expression.
-.TP 3n
-\(bu
+Copy all databases with names that match the given regular expression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: resetmaster option
+.\" resetmaster option: mysqlhotcopy
\fB\-\-resetmaster\fR
.sp
-Reset the binary log after locking all the tables.
-.TP 3n
-\(bu
+Reset the binary log after locking all the tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: resetslave option
+.\" resetslave option: mysqlhotcopy
\fB\-\-resetslave\fR
.sp
Reset the
-\fImaster.info\fR
-file after locking all the tables.
-.TP 3n
-\(bu
+master\&.info
+file after locking all the tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: socket option
+.\" socket option: mysqlhotcopy
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
-The Unix socket file to use for the connection.
-.TP 3n
-\(bu
+The Unix socket file to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: suffix option
+.\" suffix option: mysqlhotcopy
\fB\-\-suffix=\fR\fB\fIstr\fR\fR
.sp
-The suffix for names of copied databases.
-.TP 3n
-\(bu
+The suffix for names of copied databases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: tmpdir option
+.\" tmpdir option: mysqlhotcopy
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR
.sp
-The temporary directory. The default is
-\fI/tmp\fR.
-.TP 3n
-\(bu
+The temporary directory\&. The default is
+/tmp\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: user option
+.\" user option: mysqlhotcopy
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.sp
+The MySQL user name to use when connecting to the server\&.
.RE
.PP
\fBmysqlhotcopy\fR
@@ -221,7 +478,7 @@ reads the
[client]
and
[mysqlhotcopy]
-option groups from option files.
+option groups from option files\&.
.PP
To execute
\fBmysqlhotcopy\fR, you must have access to the files for the tables that you are backing up, the
@@ -231,7 +488,7 @@ RELOAD
privilege (to be able to execute
FLUSH TABLES), and the
LOCK TABLES
-privilege (to be able to lock the tables).
+privilege (to be able to lock the tables)\&.
.PP
Use
perldoc
@@ -243,23 +500,29 @@ and
\fB\-\-record_log_pos\fR
options:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBperldoc mysqlhotcopy\fR
.fi
+.if n \{\
.RE
+.\}
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlimport.1'
--- a/man/mysqlimport.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlimport.1 2009-09-16 12:03:18 +0000
@@ -1,220 +1,474 @@
+'\" t
.\" Title: \fBmysqlimport\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLIMPORT\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLIMPORT\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlimport
+.\" importing: data
+.\" data: importing
+.\" files: text
+.\" text files: importing
.SH "NAME"
mysqlimport \- a data import program
.SH "SYNOPSIS"
-.HP 44
-\fBmysqlimport [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB \fR\fB\fItextfile1\fR\fR\fB ...\fR
+.HP \w'\fBmysqlimport\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIdb_name\fR\fR\fB\ \fR\fB\fItextfile1\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmysqlimport [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB \fR\fB\fItextfile1\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqlimport\fR
client provides a command\-line interface to the
LOAD DATA INFILE
-SQL statement. Most options to
+SQL statement\&. Most options to
\fBmysqlimport\fR
correspond directly to clauses of
LOAD DATA INFILE
-syntax. See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
+syntax\&. See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
.PP
Invoke
\fBmysqlimport\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlimport [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB \fR\fB\fItextfile1\fR\fR\fB [\fR\fB\fItextfile2\fR\fR\fB ...]\fR
+shell> \fBmysqlimport [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB \fR\fB\fItextfile1\fR\fR\fB [\fR\fB\fItextfile2\fR\fR\fB \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For each text file named on the command line,
\fBmysqlimport\fR
-strips any extension from the file name and uses the result to determine the name of the table into which to import the file's contents. For example, files named
-\fIpatient.txt\fR,
-\fIpatient.text\fR, and
-\fIpatient\fR
+strips any extension from the file name and uses the result to determine the name of the table into which to import the file\'s contents\&. For example, files named
+patient\&.txt,
+patient\&.text, and
+patient
all would be imported into a table named
-patient.
+patient\&.
.PP
\fBmysqlimport\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: help option
+.\" help option: mysqlimport
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: character-sets-dir option
+.\" character-sets-dir option: mysqlimport
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: columns option
+.\" columns option: mysqlimport
\fB\-\-columns=\fR\fB\fIcolumn_list\fR\fR,
\fB\-c \fR\fB\fIcolumn_list\fR\fR
.sp
-This option takes a comma\-separated list of column names as its value. The order of the column names indicates how to match data file columns with table columns.
-.TP 3n
-\(bu
+This option takes a comma\-separated list of column names as its value\&. The order of the column names indicates how to match data file columns with table columns\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: compress option
+.\" compress option: mysqlimport
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: debug option
+.\" debug option: mysqlimport
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: debug-check option
+.\" debug-check option: mysqlimport
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: debug-info option
+.\" debug-info option: mysqlimport
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: default-character-set option
+.\" default-character-set option: mysqlimport
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: delete option
+.\" delete option: mysqlimport
\fB\-\-delete\fR,
\fB\-D\fR
.sp
-Empty the table before importing the text file.
-.TP 3n
-\(bu
-\fB\-\-fields\-terminated\-by=...\fR,
-\fB\-\-fields\-enclosed\-by=...\fR,
-\fB\-\-fields\-optionally\-enclosed\-by=...\fR,
-\fB\-\-fields\-escaped\-by=...\fR
+Empty the table before importing the text file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: fields-terminated-by option
+.\" fields-terminated-by option: mysqldump
+\fB\-\-fields\-terminated\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-enclosed-by option
+.\" fields-enclosed-by option: mysqldump
+\fB\-\-fields\-enclosed\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-optionally-enclosed-by option
+.\" fields-optionally-enclosed-by option: mysqldump
+\fB\-\-fields\-optionally\-enclosed\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-escaped-by option
+.\" fields-escaped-by option: mysqldump
+\fB\-\-fields\-escaped\-by=\&.\&.\&.\fR
.sp
These options have the same meaning as the corresponding clauses for
-LOAD DATA INFILE. See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
-.TP 3n
-\(bu
+LOAD DATA INFILE\&. See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: force option
+.\" force option: mysqlimport
\fB\-\-force\fR,
\fB\-f\fR
.sp
-Ignore errors. For example, if a table for a text file does not exist, continue processing any remaining files. Without
+Ignore errors\&. For example, if a table for a text file does not exist, continue processing any remaining files\&. Without
\fB\-\-force\fR,
\fBmysqlimport\fR
-exits if a table does not exist.
-.TP 3n
-\(bu
+exits if a table does not exist\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: host option
+.\" host option: mysqlimport
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Import data to the MySQL server on the given host. The default host is
-localhost.
-.TP 3n
-\(bu
+Import data to the MySQL server on the given host\&. The default host is
+localhost\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: ignore option
+.\" ignore option: mysqlimport
\fB\-\-ignore\fR,
\fB\-i\fR
.sp
See the description for the
\fB\-\-replace\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: ignore-lines option
+.\" ignore-lines option: mysqlimport
\fB\-\-ignore\-lines=\fR\fB\fIN\fR\fR
.sp
Ignore the first
\fIN\fR
-lines of the data file.
-.TP 3n
-\(bu
-\fB\-\-lines\-terminated\-by=...\fR
+lines of the data file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: lines-terminated-by option
+.\" lines-terminated-by option: mysqldump
+\fB\-\-lines\-terminated\-by=\&.\&.\&.\fR
.sp
This option has the same meaning as the corresponding clause for
-LOAD DATA INFILE. For example, to import Windows files that have lines terminated with carriage return/linefeed pairs, use
-\fB\-\-lines\-terminated\-by="\\r\\n"\fR. (You might have to double the backslashes, depending on the escaping conventions of your command interpreter.) See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
-.TP 3n
-\(bu
+LOAD DATA INFILE\&. For example, to import Windows files that have lines terminated with carriage return/linefeed pairs, use
+\fB\-\-lines\-terminated\-by="\er\en"\fR\&. (You might have to double the backslashes, depending on the escaping conventions of your command interpreter\&.) See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: local option
+.\" local option: mysqlimport
\fB\-\-local\fR,
\fB\-L\fR
.sp
-Read input files locally from the client host.
-.TP 3n
-\(bu
+Read input files locally from the client host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: lock-tables option
+.\" lock-tables option: mysqlimport
\fB\-\-lock\-tables\fR,
\fB\-l\fR
.sp
Lock
\fIall\fR
-tables for writing before processing any text files. This ensures that all tables are synchronized on the server.
-.TP 3n
-\(bu
+tables for writing before processing any text files\&. This ensures that all tables are synchronized on the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: low-priority option
+.\" low-priority option: mysqlimport
\fB\-\-low\-priority\fR
.sp
Use
LOW_PRIORITY
-when loading the table. This affects only storage engines that use only table\-level locking (MyISAM,
+when loading the table\&. This affects only storage engines that use only table\-level locking (MyISAM,
MEMORY,
-MERGE).
-.TP 3n
-\(bu
+MERGE)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: password option
+.\" password option: mysqlimport
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: pipe option
+.\" pipe option: mysqlimport
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: port option
+.\" port option: mysqlimport
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: protocol option
+.\" protocol option: mysqlimport
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: replace option
+.\" replace option: mysqlimport
\fB\-\-replace\fR,
\fB\-r\fR
.sp
@@ -222,79 +476,150 @@ The
\fB\-\-replace\fR
and
\fB\-\-ignore\fR
-options control handling of input rows that duplicate existing rows on unique key values. If you specify
-\fB\-\-replace\fR, new rows replace existing rows that have the same unique key value. If you specify
-\fB\-\-ignore\fR, input rows that duplicate an existing row on a unique key value are skipped. If you do not specify either option, an error occurs when a duplicate key value is found, and the rest of the text file is ignored.
-.TP 3n
-\(bu
+options control handling of input rows that duplicate existing rows on unique key values\&. If you specify
+\fB\-\-replace\fR, new rows replace existing rows that have the same unique key value\&. If you specify
+\fB\-\-ignore\fR, input rows that duplicate an existing row on a unique key value are skipped\&. If you do not specify either option, an error occurs when a duplicate key value is found, and the rest of the text file is ignored\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: silent option
+.\" silent option: mysqlimport
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Produce output only when errors occur.
-.TP 3n
-\(bu
+Silent mode\&. Produce output only when errors occur\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: socket option
+.\" socket option: mysqlimport
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: SSL options
+.\" SSL options: mysqlimport
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: user option
+.\" user option: mysqlimport
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: use-threads option
+.\" use-threads option: mysqlimport
\fB\-\-use\-threads=\fR\fB\fIN\fR\fR
.sp
Load files in parallel using
\fIN\fR
-threads. This option was added in MySQL 5.1.7.
-.TP 3n
-\(bu
+threads\&. This option was added in MySQL 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: verbose option
+.\" verbose option: mysqlimport
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: version option
+.\" version option: mysqlimport
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.sp
+Display version information and exit\&.
.RE
.PP
Here is a sample session that demonstrates use of
\fBmysqlimport\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test\fR
+shell> \fBmysql \-e \'CREATE TABLE imptest(id INT, n VARCHAR(30))\' test\fR
shell> \fBed\fR
a
100 Max Sydow
101 Count Dracula
-.
-w imptest.txt
+\&.
+w imptest\&.txt
32
q
-shell> \fBod \-c imptest.txt\fR
-0000000 1 0 0 \\t M a x S y d o w \\n 1 0
-0000020 1 \\t C o u n t D r a c u l a \\n
+shell> \fBod \-c imptest\&.txt\fR
+0000000 1 0 0 \et M a x S y d o w \en 1 0
+0000020 1 \et C o u n t D r a c u l a \en
0000040
-shell> \fBmysqlimport \-\-local test imptest.txt\fR
-test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
-shell> \fBmysql \-e 'SELECT * FROM imptest' test\fR
+shell> \fBmysqlimport \-\-local test imptest\&.txt\fR
+test\&.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
+shell> \fBmysql \-e \'SELECT * FROM imptest\' test\fR
+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
| id | n |
+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
@@ -302,19 +627,23 @@ shell> \fBmysql \-e 'SELECT * FROM impte
| 101 | Count Dracula |
+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
.RE
+.\}
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlmanager.8'
--- a/man/mysqlmanager.8 2009-05-25 09:59:47 +0000
+++ b/man/mysqlmanager.8 2009-09-16 12:03:18 +0000
@@ -1,366 +1,751 @@
+'\" t
.\" Title: \fBmysqlmanager\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLMANAGER\fR" "8" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLMANAGER\FR" "8" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlmanager
+.\" MySQL Instance Manager
.SH "NAME"
mysqlmanager \- the MySQL Instance Manager
.SH "SYNOPSIS"
-.HP 23
+.HP \w'\fBmysqlmanager\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysqlmanager [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
\fBmysqlmanager\fR
-is the MySQL Instance Manager (IM). This program monitors and manages MySQL Database Server instances. MySQL Instance Manager is available for Unix\-like operating systems, as well as Windows. It runs as a daemon that listens on a TCP/IP port. On Unix, it also listens on a Unix socket file.
+is the MySQL Instance Manager (IM)\&. This program monitors and manages MySQL Database Server instances\&. MySQL Instance Manager is available for Unix\-like operating systems, as well as Windows\&. It runs as a daemon that listens on a TCP/IP port\&. On Unix, it also listens on a Unix socket file\&.
.PP
MySQL Instance Manager can be used in place of the
mysqld_safe
-script to start and stop one or more instances of MySQL Server. Because Instance Manager can manage multiple server instances, it can also be used in place of the
+script to start and stop one or more instances of MySQL Server\&. Because Instance Manager can manage multiple server instances, it can also be used in place of the
\fBmysqld_multi\fR
-script. Instance Manager offers these capabilities:
-.TP 3n
-\(bu
-Instance Manager can start and stop instances, and report on the status of instances.
-.TP 3n
-\(bu
+script\&. Instance Manager offers these capabilities:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager can start and stop instances, and report on the status of instances\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Server instances can be treated as guarded or unguarded:
-.RS 3n
-.TP 3n
-\(bu
-When Instance Manager starts, it starts each guarded instance. If the instance crashes, Instance Manager detects this and restarts it. When Instance Manager stops, it stops the instance.
-.TP 3n
-\(bu
-A nonguarded instance is not started when Instance Manager starts or monitored by it. If the instance crashes after being started, Instance Manager does not restart it. When Instance Manager exits, it does not stop the instance if it is running.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+When Instance Manager starts, it starts each guarded instance\&. If the instance crashes, Instance Manager detects this and restarts it\&. When Instance Manager stops, it stops the instance\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+A nonguarded instance is not started when Instance Manager starts or monitored by it\&. If the instance crashes after being started, Instance Manager does not restart it\&. When Instance Manager exits, it does not stop the instance if it is running\&.
.RE
-.IP "" 3n
-Instances are guarded by default. An instance can be designated as nonguarded by including the
+.RS 4
+Instances are guarded by default\&. An instance can be designated as nonguarded by including the
\fBnonguarded\fR
-option in the configuration file.
-.TP 3n
-\(bu
-Instance Manager provides an interactive interface for configuring instances, so that the need to edit the configuration file manually is reduced or eliminated.
-.TP 3n
-\(bu
-Instance Manager provides remote instance management. That is, it runs on the host where you want to control MySQL Server instances, but you can connect to it from a remote host to perform instance\-management operations.
+option in the configuration file\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager provides an interactive interface for configuring instances, so that the need to edit the configuration file manually is reduced or eliminated\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager provides remote instance management\&. That is, it runs on the host where you want to control MySQL Server instances, but you can connect to it from a remote host to perform instance\-management operations\&.
.RE
.PP
-The following sections describe MySQL Instance Manager operation in more detail.
+The following sections describe MySQL Instance Manager operation in more detail\&.
.SH "MYSQL INSTANCE MANAGER COMMAND OPTIONS"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-The MySQL Instance Manager supports a number of command options. For a brief listing, invoke
+The MySQL Instance Manager supports a number of command options\&. For a brief listing, invoke
\fBmysqlmanager\fR
with the
\fB\-\-help\fR
-option. Options may be given on the command line or in the Instance Manager configuration file. On Windows, the standard configuration file is
-\fImy.ini\fR
-in the directory where Instance Manager is installed. On Unix, the standard file is
-\fI/etc/my.cnf\fR. To specify a different configuration file, start Instance Manager with the
+option\&. Options may be given on the command line or in the Instance Manager configuration file\&. On Windows, the standard configuration file is
+my\&.ini
+in the directory where Instance Manager is installed\&. On Unix, the standard file is
+/etc/my\&.cnf\&. To specify a different configuration file, start Instance Manager with the
\fB\-\-defaults\-file\fR
-option.
+option\&.
.PP
\fBmysqlmanager\fR
-supports the options described in the following list. The options for managing entries in the password file are described further in
-the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq.
-.TP 3n
-\(bu
+supports the options described in the following list\&. The options for managing entries in the password file are described further in
+the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: help option
+.\" help option: mysqlmanager
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: add-user option
+.\" add-user option: mysqlmanager
\fB\-\-add\-user\fR
.sp
Add a new user (specified with the
\fB\-\-username\fR
-option) to the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+option) to the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: angel-pid-file option
+.\" angel-pid-file option: mysqlmanager
\fB\-\-angel\-pid\-file=\fR\fB\fIfile_name\fR\fR
.sp
The file in which the angel process records its process ID when
\fBmysqlmanager\fR
runs in daemon mode (that is, when the
\fB\-\-run\-as\-service\fR
-option is given). The default file name is
-\fImysqlmanager.angel.pid\fR.
+option is given)\&. The default file name is
+mysqlmanager\&.angel\&.pid\&.
.sp
If the
\fB\-\-angel\-pid\-file\fR
option is not given, the default angel PID file has the same name as the PID file except that any PID file extension is replaced with an extension of
-\fI.angel.pid\fR. (For example,
-\fImysqlmanager.pid\fR
+\&.angel\&.pid\&. (For example,
+mysqlmanager\&.pid
becomes
-\fImysqlmanager.angel.pid\fR.)
+mysqlmanager\&.angel\&.pid\&.)
.sp
-This option was added in MySQL 5.1.11.
-.TP 3n
-\(bu
+This option was added in MySQL 5\&.1\&.11\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: bind-address option
+.\" bind-address option: mysqlmanager
\fB\-\-bind\-address=\fR\fB\fIIP\fR\fR
.sp
-The IP address to bind to.
-.TP 3n
-\(bu
+The IP address to bind to\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: check-password-file option
+.\" check-password-file option: mysqlmanager
\fB\-\-check\-password\-file\fR
.sp
-Check the validity and consistency of the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+Check the validity and consistency of the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: clean-password-file option
+.\" clean-password-file option: mysqlmanager
\fB\-\-clean\-password\-file\fR
.sp
-Drop all users from the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+Drop all users from the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: debug option
+.\" debug option: mysqlmanager
\fB\-\-debug=\fR\fB\fIdebug_options\fR\fR\fB, \-# \fR\fB\fIdebug_options\fR\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'. This option was added in MySQL 5.1.10.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. This option was added in MySQL 5\&.1\&.10\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: default-mysqld-path option
+.\" default-mysqld-path option: mysqlmanager
\fB\-\-default\-mysqld\-path=\fR\fB\fIpath\fR\fR
.sp
-The path name of the MySQL Server binary. This path name is used for all server instance sections in the configuration file for which no
+The path name of the MySQL Server binary\&. This path name is used for all server instance sections in the configuration file for which no
\fBmysqld\-path\fR
-option is present. The default value of this option is the compiled\-in path name, which depends on how the MySQL distribution was configured. Example:
+option is present\&. The default value of this option is the compiled\-in path name, which depends on how the MySQL distribution was configured\&. Example:
\fB\-\-default\-mysqld\-path=/usr/sbin/mysqld\fR
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: defaults-file option
+.\" defaults-file option: mysqlmanager
\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR
.sp
-Read Instance Manager and MySQL Server settings from the given file. All configuration changes made by the Instance Manager will be written to this file. This must be the first option on the command line if it is used, and the file must exist.
+Read Instance Manager and MySQL Server settings from the given file\&. All configuration changes made by the Instance Manager will be written to this file\&. This must be the first option on the command line if it is used, and the file must exist\&.
.sp
-If this option is not given, Instance Manager uses its standard configuration file. On Windows, the standard file is
-\fImy.ini\fR
-in the directory where Instance Manager is installed. On Unix, the standard file is
-\fI/etc/my.cnf\fR.
-.TP 3n
-\(bu
+If this option is not given, Instance Manager uses its standard configuration file\&. On Windows, the standard file is
+my\&.ini
+in the directory where Instance Manager is installed\&. On Unix, the standard file is
+/etc/my\&.cnf\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: drop-user option
+.\" drop-user option: mysqlmanager
\fB\-\-drop\-user\fR
.sp
Drop a user (specified with the
\fB\-\-username\fR
-option) from the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+option) from the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: edit-user option
+.\" edit-user option: mysqlmanager
\fB\-\-edit\-user\fR
.sp
Change an entry for an existing user (specified with the
\fB\-\-username\fR
-option) in the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+option) in the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: install option
+.\" install option: mysqlmanager
\fB\-\-install\fR
.sp
-On Windows, install Instance Manager as a Windows service. The service name is
-MySQL Manager.
-.TP 3n
-\(bu
+On Windows, install Instance Manager as a Windows service\&. The service name is
+MySQL Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: list-users option
+.\" list-users option: mysqlmanager
\fB\-\-list\-users\fR
.sp
-List the users in the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+List the users in the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: log option
+.\" log option: mysqlmanager
\fB\-\-log=\fR\fB\fIfile_name\fR\fR
.sp
-The path to the Instance Manager log file. This option has no effect unless the
+The path to the Instance Manager log file\&. This option has no effect unless the
\fB\-\-run\-as\-service\fR
-option is also given. If the file name specified for the option is a relative name, the log file is created under the directory from which Instance Manager is started. To ensure that the file is created in a specific directory, specify it as a full path name.
+option is also given\&. If the file name specified for the option is a relative name, the log file is created under the directory from which Instance Manager is started\&. To ensure that the file is created in a specific directory, specify it as a full path name\&.
.sp
If
\fB\-\-run\-as\-service\fR
is given without
\fB\-\-log\fR, the log file is
-\fImysqlmanager.log\fR
-in the data directory.
+mysqlmanager\&.log
+in the data directory\&.
.sp
If
\fB\-\-run\-as\-service\fR
-is not given, log messages go to the standard output. To capture log output, you can redirect Instance Manager output to a file:
+is not given, log messages go to the standard output\&. To capture log output, you can redirect Instance Manager output to a file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlmanager > im.log
+mysqlmanager > im\&.log
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: monitoring-interval option
+.\" monitoring-interval option: mysqlmanager
\fB\-\-monitoring\-interval=\fR\fB\fIseconds\fR\fR
.sp
-The interval in seconds for monitoring server instances. The default value is 20 seconds. Instance Manager tries to connect to each monitored (guarded) instance using the non\-existing
+The interval in seconds for monitoring server instances\&. The default value is 20 seconds\&. Instance Manager tries to connect to each monitored (guarded) instance using the nonexisting
MySQL_Instance_Manager
-user account to check whether it is alive/not hanging. If the result of the connection attempt indicates that the instance is unavailable, Instance Manager performs several attempts to restart the instance.
+user account to check whether it is alive/not hanging\&. If the result of the connection attempt indicates that the instance is unavailable, Instance Manager performs several attempts to restart the instance\&.
.sp
Normally, the
MySQL_Instance_Manager
account does not exist, so the connection attempts by Instance Manager cause the monitored instance to produce messages in its general query log similar to the following:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-Access denied for user 'MySQL_Instance_M'@'localhost' \(Fc
+Access denied for user \'MySQL_Instance_M\'@\'localhost\' \(Fc
(using password: YES)
.fi
+.if n \{\
.RE
-.sp
+.\}
.sp
The
nonguarded
-option in the appropriate server instance section disables monitoring for a particular instance. If the instance dies after being started, Instance Manager will not restart it. Instance Manager tries to connect to a nonguarded instance only when you request the instance's status (for example, with the
+option in the appropriate server instance section disables monitoring for a particular instance\&. If the instance dies after being started, Instance Manager will not restart it\&. Instance Manager tries to connect to a nonguarded instance only when you request the instance\'s status (for example, with the
SHOW INSTANCES
-status.
+status\&.
.sp
See
-the section called \(lqMYSQL SERVER INSTANCE STATUS MONITORING\(rq, for more information.
-.TP 3n
-\(bu
+the section called \(lqMYSQL SERVER INSTANCE STATUS MONITORING\(rq, for more information\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: mysqld-safe-compatible option
+.\" mysqld-safe-compatible option: mysqlmanager
\fB\-\-mysqld\-safe\-compatible\fR
.sp
Run in a
-\fBmysqld_safe\fR\-compatible manner. For details, see
-the section called \(lqSTARTING THE MYSQL SERVER WITH MYSQL INSTANCE MANAGER\(rq. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+\fBmysqld_safe\fR\-compatible manner\&. For details, see
+the section called \(lqSTARTING THE MYSQL SERVER WITH MYSQL INSTANCE MANAGER\(rq\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: password option
+.\" password option: mysqlmanager
\fB\-\-password=\fR\fB\fIpassword\fR\fR,
\fB\-p \fR\fB\fIpassword\fR\fR
.sp
-Specify the password for an entry to be added to or modified in the password file. Unlike the
+Specify the password for an entry to be added to or modified in the password file\&. Unlike the
\fB\-\-password\fR/\fB\-P\fR
-option for most MySQL programs, the password value is required, not optional. See also
-the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+option for most MySQL programs, the password value is required, not optional\&. See also
+the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: password-file option
+.\" password-file option: mysqlmanager
\fB\-\-password\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The name of the file where the Instance Manager looks for users and passwords. On Windows, the default is
-\fImysqlmanager.passwd\fR
-in the directory where Instance Manager is installed. On Unix, the default file is
-\fI/etc/mysqlmanager.passwd\fR. See also
-the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq.
-.TP 3n
-\(bu
+The name of the file where the Instance Manager looks for users and passwords\&. On Windows, the default is
+mysqlmanager\&.passwd
+in the directory where Instance Manager is installed\&. On Unix, the default file is
+/etc/mysqlmanager\&.passwd\&. See also
+the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: pid-file option
+.\" pid-file option: mysqlmanager
\fB\-\-pid\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The process ID file to use. On Windows, the default file is
-\fImysqlmanager.pid\fR
-in the directory where Instance Manager is installed. On Unix, the default is
-\fImysqlmanager.pid\fR
-in the data directory.
-.TP 3n
-\(bu
+The process ID file to use\&. On Windows, the default file is
+mysqlmanager\&.pid
+in the directory where Instance Manager is installed\&. On Unix, the default is
+mysqlmanager\&.pid
+in the data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: port option
+.\" port option: mysqlmanager
\fB\-\-port=\fR\fB\fIport_num\fR\fR
.sp
-The port number to use when listening for TCP/IP connections from clients. The default port number (assigned by IANA) is 2273.
-.TP 3n
-\(bu
+The port number to use when listening for TCP/IP connections from clients\&. The default port number (assigned by IANA) is 2273\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: print-defaults option
+.\" print-defaults option: mysqlmanager
\fB\-\-print\-defaults\fR
.sp
-Print the current defaults and exit. This must be the first option on the command line if it is used.
-.TP 3n
-\(bu
+Print the current defaults and exit\&. This must be the first option on the command line if it is used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: print-password-line option
+.\" print-password-line option: mysqlmanager
\fB\-\-print\-password\-line\fR
.sp
-Prepare an entry for the password file, print it to the standard output, and exit. You can redirect the output from Instance Manager to a file to save the entry in the file.
+Prepare an entry for the password file, print it to the standard output, and exit\&. You can redirect the output from Instance Manager to a file to save the entry in the file\&.
+.sp
+Prior to MySQL 5\&.1\&.12, this option was named
+\fB\-\-passwd\fR\&.
+.RE
.sp
-Prior to MySQL 5.1.12, this option was named
-\fB\-\-passwd\fR.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: remove option
+.\" remove option: mysqlmanager
\fB\-\-remove\fR
.sp
-On Windows, removes Instance Manager as a Windows service. This assumes that Instance Manager has been run with
+On Windows, removes Instance Manager as a Windows service\&. This assumes that Instance Manager has been run with
\fB\-\-install\fR
-previously.
-.TP 3n
-\(bu
+previously\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: run-as-service option
+.\" run-as-service option: mysqlmanager
\fB\-\-run\-as\-service\fR
.sp
-On Unix, daemonize and start an angel process. The angel process monitors Instance Manager and restarts it if it crashes. (The angel process itself is simple and unlikely to crash.)
-.TP 3n
-\(bu
+On Unix, daemonize and start an angel process\&. The angel process monitors Instance Manager and restarts it if it crashes\&. (The angel process itself is simple and unlikely to crash\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: socket option
+.\" socket option: mysqlmanager
\fB\-\-socket=\fR\fB\fIpath\fR\fR
.sp
-On Unix, the socket file to use for incoming connections. The default file is named
-\fI/tmp/mysqlmanager.sock\fR. This option has no meaning on Windows.
-.TP 3n
-\(bu
+On Unix, the socket file to use for incoming connections\&. The default file is named
+/tmp/mysqlmanager\&.sock\&. This option has no meaning on Windows\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: standalone option
+.\" standalone option: mysqlmanager
\fB\-\-standalone\fR
.sp
-This option is used on Windows to run Instance Manager in standalone mode. You should specify it when you start Instance Manager from the command line.
-.TP 3n
-\(bu
+This option is used on Windows to run Instance Manager in standalone mode\&. You should specify it when you start Instance Manager from the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: user option
+.\" user option: mysqlmanager
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
On Unix, the user name of the system account to use for starting and running
-\fBmysqlmanager\fR. This option generates a warning and has no effect unless you start
+\fBmysqlmanager\fR\&. This option generates a warning and has no effect unless you start
\fBmysqlmanager\fR
as
root
-(so that it can change its effective user ID), or as the named user. It is recommended that you configure
+(so that it can change its effective user ID), or as the named user\&. It is recommended that you configure
\fBmysqlmanager\fR
to run using the same account used to run the
\fBmysqld\fR
-server. (\(lqUser\(rq
-in this context refers to a system login account, not a MySQL user listed in the grant tables.)
-.TP 3n
-\(bu
+server\&. (\(lqUser\(rq
+in this context refers to a system login account, not a MySQL user listed in the grant tables\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: username option
+.\" username option: mysqlmanager
\fB\-\-username=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-Specify the user name for an entry to be added to or modified in the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+Specify the user name for an entry to be added to or modified in the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: version option
+.\" version option: mysqlmanager
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: wait-timeout option
+.\" wait-timeout option: mysqlmanager
\fB\-\-wait\-timeout=\fR\fB\fIN\fR\fR
.sp
-The number of seconds to wait for activity on an incoming connection before closing it. The default is 28800 seconds (8 hours).
+The number of seconds to wait for activity on an incoming connection before closing it\&. The default is 28800 seconds (8 hours)\&.
.sp
-This option was added in MySQL 5.1.7. Before that, the timeout is 30 seconds and cannot be changed.
+This option was added in MySQL 5\&.1\&.7\&. Before that, the timeout is 30 seconds and cannot be changed\&.
+.RE
.SH "MYSQL INSTANCE MANAGER CONFIGURATION FILES"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
Instance Manager uses its standard configuration file unless it is started with a
\fB\-\-defaults\-file\fR
-option that specifies a different file. On Windows, the standard file is
-\fImy.ini\fR
-in the directory where Instance Manager is installed. On Unix, the standard file is
-\fI/etc/my.cnf\fR.
+option that specifies a different file\&. On Windows, the standard file is
+my\&.ini
+in the directory where Instance Manager is installed\&. On Unix, the standard file is
+/etc/my\&.cnf\&.
.PP
Instance Manager reads options for itself from the
[manager]
@@ -368,74 +753,110 @@ section of the configuration file, and o
[mysqld]
or
[mysqld\fIN\fR]
-sections. The
+sections\&. The
[manager]
section contains any of the options listed in
-the section called \(lqMYSQL INSTANCE MANAGER COMMAND OPTIONS\(rq, except for those specified as having to be given as the first option on the command line. Here is a sample
+the section called \(lqMYSQL INSTANCE MANAGER COMMAND OPTIONS\(rq, except for those specified as having to be given as the first option on the command line\&. Here is a sample
[manager]
section:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
# MySQL Instance Manager options section
[manager]
default\-mysqld\-path = /usr/local/mysql/libexec/mysqld
-socket=/tmp/manager.sock
-pid\-file=/tmp/manager.pid
-password\-file = /home/cps/.mysqlmanager.passwd
+socket=/tmp/manager\&.sock
+pid\-file=/tmp/manager\&.pid
+password\-file = /home/cps/\&.mysqlmanager\&.passwd
monitoring\-interval = 2
port = 1999
-bind\-address = 192.168.1.5
+bind\-address = 192\&.168\&.1\&.5
.fi
+.if n \{\
.RE
+.\}
.PP
Each
[mysqld]
or
[mysqld\fIN\fR]
-instance section specifies options given by Instance Manager to a server instance at startup. These are mainly common MySQL Server options (see
-Section\ 5.1.2, \(lqServer Command Options\(rq). In addition, a
+instance section specifies options given by Instance Manager to a server instance at startup\&. These are mainly common MySQL Server options (see
+Section\ \&5.1.2, \(lqServer Command Options\(rq)\&. In addition, a
[mysqld\fIN\fR]
-section can contain the options in the following list, which are specific to Instance Manager. These options are interpreted by Instance Manager itself; it does not pass them to the server when it attempts to start that server.
+section can contain the options in the following list, which are specific to Instance Manager\&. These options are interpreted by Instance Manager itself; it does not pass them to the server when it attempts to start that server\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBWarning\fR
+.ps -1
+.br
.PP
The Instance Manager\-specific options must not be used in a
[mysqld]
-section. If a server is started without using Instance Manager, it will not recognize these options and will fail to start properly.
-.TP 3n
-\(bu
+section\&. If a server is started without using Instance Manager, it will not recognize these options and will fail to start properly\&.
+.sp .5v
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
mysqld\-path = \fIpath\fR
.sp
The path name of the
\fBmysqld\fR
-server binary to use for the server instance.
-.TP 3n
-\(bu
+server binary to use for the server instance\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
nonguarded
.sp
-This option disables Instance Manager monitoring functionality for the server instance. By default, an instance is guarded: At Instance Manager start time, it starts the instance. It also monitors the instance status and attempts to restart it if it fails. At Instance Manager exit time, it stops the instance. None of these things happen for nonguarded instances.
-.TP 3n
-\(bu
+This option disables Instance Manager monitoring functionality for the server instance\&. By default, an instance is guarded: At Instance Manager start time, it starts the instance\&. It also monitors the instance status and attempts to restart it if it fails\&. At Instance Manager exit time, it stops the instance\&. None of these things happen for nonguarded instances\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
shutdown\-delay = \fIseconds\fR
.sp
-The number of seconds Instance Manager should wait for the server instance to shut down. The default value is 35 seconds. After the delay expires, Instance Manager assumes that the instance is hanging and attempts to terminate it. If you use
+The number of seconds Instance Manager should wait for the server instance to shut down\&. The default value is 35 seconds\&. After the delay expires, Instance Manager assumes that the instance is hanging and attempts to terminate it\&. If you use
InnoDB
-with large tables, you should increase this value.
-.sp
+with large tables, you should increase this value\&.
.RE
.PP
Here are some sample instance sections:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld1]
mysqld\-path=/usr/local/mysql/libexec/mysqld
-socket=/tmp/mysql.sock
+socket=/tmp/mysql\&.sock
port=3307
server_id=1
skip\-stack\-trace
@@ -448,367 +869,575 @@ log\-slow\-queries
nonguarded
port=3308
server_id=2
-mysqld\-path= /home/cps/mysql/trees/mysql\-5.1/sql/mysqld
-socket = /tmp/mysql.sock5
-pid\-file = /tmp/hostname.pid5
+mysqld\-path= /home/cps/mysql/trees/mysql\-5\&.1/sql/mysqld
+socket = /tmp/mysql\&.sock5
+pid\-file = /tmp/hostname\&.pid5
datadir= /home/cps/mysql_data/data_dir1
-language=/home/cps/mysql/trees/mysql\-5.1/sql/share/english
+language=/home/cps/mysql/trees/mysql\-5\&.1/sql/share/english
log\-bin
-log=/tmp/fordel.log
+log=/tmp/fordel\&.log
.fi
+.if n \{\
.RE
+.\}
.SH "STARTING THE MYSQL SERVER WITH MYSQL INSTANCE MANAGER"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-This section discusses how Instance Manager starts server instances when it starts. However, before you start Instance Manager, you should set up a password file for it. Otherwise, you will not be able to connect to Instance Manager to control it after it starts. For details about creating Instance Manager accounts, see
-the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq.
+This section discusses how Instance Manager starts server instances when it starts\&. However, before you start Instance Manager, you should set up a password file for it\&. Otherwise, you will not be able to connect to Instance Manager to control it after it starts\&. For details about creating Instance Manager accounts, see
+the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq\&.
.PP
On Unix, the
\fBmysqld\fR
MySQL database server normally is started with the
-\fBmysql.server\fR
+\fBmysql\&.server\fR
script, which usually resides in the
-/etc/init.d/
-folder. That script invokes the
+/etc/init\&.d/
+folder\&. That script invokes the
\fBmysqld_safe\fR
-script by default. However, you can use Instance Manager instead if you modify the
-\fI/etc/my.cnf\fR
+script by default\&. However, you can use Instance Manager instead if you modify the
+/etc/my\&.cnf
configuration file by adding
use\-manager
to the
-[mysql.server]
+[mysql\&.server]
section:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-[mysql.server]
+[mysql\&.server]
use\-manager
.fi
+.if n \{\
.RE
+.\}
.PP
-Before MySQL 5.1.12, Instance Manager always tries to start at least one server instance: When it starts, it reads its configuration file if it exists to find server instance sections and prepare a list of instances. Instance sections have names of the form
+Before MySQL 5\&.1\&.12, Instance Manager always tries to start at least one server instance: When it starts, it reads its configuration file if it exists to find server instance sections and prepare a list of instances\&. Instance sections have names of the form
[mysqld]
or
[mysqld\fIN\fR], where
\fIN\fR
is an unsigned integer (for example,
[mysqld1],
-[mysqld2], and so forth).
+[mysqld2], and so forth)\&.
.PP
-After preparing the list of instances, Instance Manager starts the guarded instances in the list. If there are no instances, Instance Manager creates an instance named
+After preparing the list of instances, Instance Manager starts the guarded instances in the list\&. If there are no instances, Instance Manager creates an instance named
mysqld
-and attempts to start it with default (compiled\-in) configuration values. This means that the Instance Manager cannot find the
+and attempts to start it with default (compiled\-in) configuration values\&. This means that the Instance Manager cannot find the
\fBmysqld\fR
-program if it is not installed in the default location. (Section\ 2.1.5, \(lqInstallation Layouts\(rq, describes default locations for components of MySQL distributions.) If you have installed the MySQL server in a non\-standard location, you should create the Instance Manager configuration file.
+program if it is not installed in the default location\&. (Section\ \&2.1.5, \(lqInstallation Layouts\(rq, describes default locations for components of MySQL distributions\&.) If you have installed the MySQL server in a nonstandard location, you should create the Instance Manager configuration file\&.
.PP
The startup behavior just described is similar to that of
-\fBmysqld_safe\fR, which always attempts to start a server. However, it lacks the flexibility required for some operations because it is not possible to run Instance Manager in such a way that it refrains from starting any server instances. For example, you cannot invoke Instance Manager for the purpose of configuring an instance without also starting it (a task that a MySQL installer application might want to perform). Consequently, MySQL 5.1.12 introduces the following changes:
-.TP 3n
-\(bu
+\fBmysqld_safe\fR, which always attempts to start a server\&. However, it lacks the flexibility required for some operations because it is not possible to run Instance Manager in such a way that it refrains from starting any server instances\&. For example, you cannot invoke Instance Manager for the purpose of configuring an instance without also starting it (a task that a MySQL installer application might want to perform)\&. Consequently, MySQL 5\&.1\&.12 introduces the following changes:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
A new option,
-\fB\-\-mysqld\-safe\-compatible\fR, may be used to cause Instance Manager to run with startup behavior similar to that used before MySQL 5.1.12: If Instance Manager finds a
+\fB\-\-mysqld\-safe\-compatible\fR, may be used to cause Instance Manager to run with startup behavior similar to that used before MySQL 5\&.1\&.12: If Instance Manager finds a
[mysqld]
-instance section in the configuration file, it will start it. If Instance Manager finds no
+instance section in the configuration file, it will start it\&. If Instance Manager finds no
[mysqld]
section, it creates one using default configuration values, writes a
[mysqld]
section to the configuration file if it is accessible, and starts the
mysqld
-instance. Instance Manager also starts any other guarded instances listed in the configuration file.
-.TP 3n
-\(bu
-Without
-\fB\-\-mysqld\-safe\-compatible\fR, Instance Manager reads its configuration file if it exists and starts instances for any guarded instance sections that it finds. If there are none, it starts no instances.
+instance\&. Instance Manager also starts any other guarded instances listed in the configuration file\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Without
+\fB\-\-mysqld\-safe\-compatible\fR, Instance Manager reads its configuration file if it exists and starts instances for any guarded instance sections that it finds\&. If there are none, it starts no instances\&.
.RE
.PP
-Instance Manager also stops all guarded server instances when it shuts down.
+Instance Manager also stops all guarded server instances when it shuts down\&.
.PP
The allowable options for
[mysqld\fIN\fR]
server instance sections are described in
-the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq. In these sections, you can use a special
+the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq\&. In these sections, you can use a special
\fBmysqld\-path=\fR\fB\fIpath\-to\-mysqld\-binary\fR\fR
-option that is recognized only by Instance Manager. Use this option to let Instance Manager know where the
+option that is recognized only by Instance Manager\&. Use this option to let Instance Manager know where the
\fBmysqld\fR
-binary resides. If there are multiple instances, it may also be necessary to set other options such as
+binary resides\&. If there are multiple instances, it may also be necessary to set other options such as
\fBdatadir\fR
and
-\fBport\fR, to ensure that each instance has a different data directory and TCP/IP port number.
-Section\ 5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq, discusses the configuration values that must differ for each instance when you run multiple instance on the same machine.
+\fBport\fR, to ensure that each instance has a different data directory and TCP/IP port number\&.
+Section\ \&5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq, discusses the configuration values that must differ for each instance when you run multiple instance on the same machine\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBWarning\fR
+.ps -1
+.br
.PP
The
[mysqld]
-instance section, if it exists, must not contain any Instance Manager\-specific options.
+instance section, if it exists, must not contain any Instance Manager\-specific options\&.
+.sp .5v
+.RE
.PP
The typical Unix startup/shutdown cycle for a MySQL server with the MySQL Instance Manager enabled is as follows:
-.TP 3n
-1.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
The
-\fB/etc/init.d/mysql\fR
-script starts MySQL Instance Manager.
-.TP 3n
-2.
-Instance Manager starts the guarded server instances and monitors them.
-.TP 3n
-3.
-If a server instance fails, Instance Manager restarts it.
-.TP 3n
-4.
+\fB/etc/init\&.d/mysql\fR
+script starts MySQL Instance Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+Instance Manager starts the guarded server instances and monitors them\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
+If a server instance fails, Instance Manager restarts it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 4.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 4." 4.2
+.\}
If Instance Manager is shut down (for example, with the
-\fB/etc/init.d/mysql stop\fR
-command), it shuts down all server instances.
+\fB/etc/init\&.d/mysql stop\fR
+command), it shuts down all server instances\&.
+.RE
.SH "INSTANCE MANAGER USER AND PASSWORD MANAGEMENT"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-The Instance Manager stores its user information in a password file. On Windows, the default is
-\fImysqlmanager.passwd\fR
-in the directory where Instance Manager is installed. On Unix, the default file is
-\fI/etc/mysqlmanager.passwd\fR. To specify a different location for the password file, use the
+The Instance Manager stores its user information in a password file\&. On Windows, the default is
+mysqlmanager\&.passwd
+in the directory where Instance Manager is installed\&. On Unix, the default file is
+/etc/mysqlmanager\&.passwd\&. To specify a different location for the password file, use the
\fB\-\-password\-file\fR
-option.
+option\&.
.PP
-If the password file does not exist or contains no password entries, you cannot connect to the Instance Manager.
+If the password file does not exist or contains no password entries, you cannot connect to the Instance Manager\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-Any Instance Manager process that is running to monitor server instances does not notice changes to the password file. You must stop it and restart it after making password entry changes.
+Any Instance Manager process that is running to monitor server instances does not notice changes to the password file\&. You must stop it and restart it after making password entry changes\&.
+.sp .5v
+.RE
.PP
Entries in the password file have the following format, where the two fields are the account user name and encrypted password, separated by a colon:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
petr:*35110DC9B4D8140F5DE667E28C72DD2597B5C848
.fi
+.if n \{\
.RE
+.\}
.PP
-Instance Manager password encryption is the same as that used by MySQL Server. It is a one\-way operation; no means are provided for decrypting encrypted passwords.
+Instance Manager password encryption is the same as that used by MySQL Server\&. It is a one\-way operation; no means are provided for decrypting encrypted passwords\&.
.PP
Instance Manager accounts differ somewhat from MySQL Server accounts:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
MySQL Server accounts are associated with a host name, user name, and password (see
-Section\ 5.5.1, \(lqUser Names and Passwords\(rq).
-.TP 3n
-\(bu
-Instance Manager accounts are associated with a user name and password only.
+Section\ \&5.5.1, \(lqUser Names and Passwords\(rq)\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager accounts are associated with a user name and password only\&.
.RE
.PP
-This means that a client can connect to Instance Manager with a given user name from any host. To limit connections so that clients can connect only from the local host, start Instance Manager with the
-\fB\-\-bind\-address=127.0.0.1\fR
-option so that it listens only to the local network interface. Remote clients will not be able to connect. Local clients can connect like this:
+This means that a client can connect to Instance Manager with a given user name from any host\&. To limit connections so that clients can connect only from the local host, start Instance Manager with the
+\fB\-\-bind\-address=127\&.0\&.0\&.1\fR
+option so that it listens only to the local network interface\&. Remote clients will not be able to connect\&. Local clients can connect like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-h 127.0.0.1 \-P 2273\fR
+shell> \fBmysql \-h 127\&.0\&.0\&.1 \-P 2273\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Before MySQL 5.1.12, the only option for creating password file entries is
-\fB\-\-passwd\fR, which causes Instance Manager to prompt for user name and password values and display the resulting entry. You can save the output in the
-\fI/etc/mysqlmanager.passwd\fR
-password file to store it. Here is an example:
+Before MySQL 5\&.1\&.12, the only option for creating password file entries is
+\fB\-\-passwd\fR, which causes Instance Manager to prompt for user name and password values and display the resulting entry\&. You can save the output in the
+/etc/mysqlmanager\&.passwd
+password file to store it\&. Here is an example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlmanager \-\-passwd >> /etc/mysqlmanager.passwd\fR
-Creating record for new user.
+shell> \fBmysqlmanager \-\-passwd >> /etc/mysqlmanager\&.passwd\fR
+Creating record for new user\&.
Enter user name: \fBmike\fR
Enter password: \fBmikepass\fR
Re\-type password: \fBmikepass\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-At the prompts, enter the user name and password for the new Instance Manager user. You must enter the password twice. It does not echo to the screen, so double entry guards against entering a different password than you intend (if the two passwords do not match, no entry is generated).
+At the prompts, enter the user name and password for the new Instance Manager user\&. You must enter the password twice\&. It does not echo to the screen, so double entry guards against entering a different password than you intend (if the two passwords do not match, no entry is generated)\&.
.PP
The preceding command causes the following line to be added to
-\fI/etc/mysqlmanager.passwd\fR:
+/etc/mysqlmanager\&.passwd:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mike:*BBF1F551DD9DD96A01E66EC7DDC073911BAD17BA
.fi
+.if n \{\
.RE
+.\}
.PP
Use of the
\fB\-\-password\fR
option fails if
\fBmysqlmanager\fR
-is invoked directly from an IBM 5250 terminal. To work around this, use a command like the following from the command line to generate the password entry:
+is invoked directly from an IBM 5250 terminal\&. To work around this, use a command like the following from the command line to generate the password entry:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell< \fBmysql \-B \-\-skip\-column\-name \\\fR
- \fB\-e 'SELECT CONCAT("\fR\fB\fIuser_name\fR\fR\fB",":",PASSWORD("\fR\fB\fIpass_val\fR\fR\fB"));'\fR
+shell> \fBmysql \-B \-\-skip\-column\-name \e\fR
+ \fB\-e \'SELECT CONCAT("\fR\fB\fIuser_name\fR\fR\fB",":",PASSWORD("\fR\fB\fIpass_val\fR\fR\fB"));\'\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The output from the command can be used an entry in the
-\fI/etc/mysqlmanager.passwd\fR
-file.
+/etc/mysqlmanager\&.passwd
+file\&.
.PP
-Beginning with MySQL 5.1.12, the
+Beginning with MySQL 5\&.1\&.12, the
\fB\-\-passwd\fR
option is renamed to
\fB\-\-print\-password\-line\fR
-and there are several other options for managing user accounts from the command line. For example, the
+and there are several other options for managing user accounts from the command line\&. For example, the
\fB\-\-username\fR
and
\fB\-\-password\fR
-options are available on the command line for specifying the user name and password for an account entry. You can use them to generate an entry with no prompting like this (type the command on a single line):
+options are available on the command line for specifying the user name and password for an account entry\&. You can use them to generate an entry with no prompting like this (type the command on a single line):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlmanager \-\-print\-password\-line\fR
- \fB\-\-username=mike \-\-password=mikepass >> /etc/mysqlmanager.passwd\fR
+ \fB\-\-username=mike \-\-password=mikepass >> /etc/mysqlmanager\&.passwd\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you omit the
\fB\-\-username\fR
or
\fB\-\-password\fR
-option, Instance Manager prompts for the required value.
+option, Instance Manager prompts for the required value\&.
.PP
\fB\-\-print\-password\-line\fR
-causes Instance Manager to send the resulting account entry to its output, which you can append to the password file. The following list describes other account\-management options that cause Instance Manager to operate directly on the password file. (These options make Instance Manager scriptable for account\-management purposes.) For operations on the password file to succeed, the file must exist and it must be accessible by Instance Manager. (The exception is
-\fB\-\-clean\-password\-file\fR, which creates the file if it does not exist. Alternatively, if there is no password file, manually create it as an empty file and ensure that its ownership and access modes allow it to be read and written by Instance Manager.) The default password file is used unless you specify a
+causes Instance Manager to send the resulting account entry to its output, which you can append to the password file\&. The following list describes other account\-management options that cause Instance Manager to operate directly on the password file\&. (These options make Instance Manager scriptable for account\-management purposes\&.) For operations on the password file to succeed, the file must exist and it must be accessible by Instance Manager\&. (The exception is
+\fB\-\-clean\-password\-file\fR, which creates the file if it does not exist\&. Alternatively, if there is no password file, manually create it as an empty file and ensure that its ownership and access modes allow it to be read and written by Instance Manager\&.) The default password file is used unless you specify a
\fB\-\-password\-file\fR
-option.
+option\&.
.PP
-To ensure consistent treatment of the password file, it should be owned by the system account that you use for running Instance Manager to manage server instances, and you should invoke it from that account when you use it to manage accounts in the password file.
-.TP 3n
-\(bu
+To ensure consistent treatment of the password file, it should be owned by the system account that you use for running Instance Manager to manage server instances, and you should invoke it from that account when you use it to manage accounts in the password file\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Create a new user:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-add\-user \-\-username=\fIuser_name\fR [\-\-password=\fIpassword\fR]
.fi
+.if n \{\
.RE
-This command adds a new entry with the given user name and password to the password file. The
+.\}
+.sp
+This command adds a new entry with the given user name and password to the password file\&. The
\fB\-\-username\fR
(or
-\fB\-u\fR) option is required.
+\fB\-u\fR) option is required\&.
\fBmysqlmanager\fR
prompts for the password if it is not given on the command line with the
\fB\-\-password\fR
(or
-\fB\-p\fR) option. The command fails if the user already exists.
-.TP 3n
-\(bu
+\fB\-p\fR) option\&. The command fails if the user already exists\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Drop an existing user:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-drop\-user \-\-username=\fIuser_name\fR
.fi
+.if n \{\
+.RE
+.\}
+.sp
+This command removes the entry with the given user name from the password file\&. The user name is required\&. The command fails if the user does not exist\&.
.RE
-This command removes the entry with the given user name from the password file. The user name is required. The command fails if the user does not exist.
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Change the password for an existing user:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-edit\-user \-\-username=\fIuser_name\fR [\-\-password=\fIpassword\fR]
.fi
+.if n \{\
.RE
-This command changes the given user's password in the password file. The user name is required.
+.\}
+.sp
+This command changes the given user\'s password in the password file\&. The user name is required\&.
\fBmysqlmanager\fR
-prompts for the password it is not given on the command line. The command fails if the user does not exist.
-.TP 3n
-\(bu
+prompts for the password it is not given on the command line\&. The command fails if the user does not exist\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
List existing users:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-list\-users
.fi
+.if n \{\
.RE
-This command lists the user names of the accounts in the password file.
-.TP 3n
-\(bu
+.\}
+.sp
+This command lists the user names of the accounts in the password file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Check the password file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-check\-password\-file
.fi
+.if n \{\
.RE
-This command performs a consistency and validity check of the password file. The command fails if there is something wrong with the file.
-.TP 3n
-\(bu
+.\}
+.sp
+This command performs a consistency and validity check of the password file\&. The command fails if there is something wrong with the file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Empty the password file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-clean\-password\-file
.fi
+.if n \{\
+.RE
+.\}
+.sp
+This command empties the password file, which has the effect of dropping all users listed in it\&. The option creates the password file if it does not exist, so it can be used to initialize a new password file to be used for other account\-management operations\&. Take care not to use this option to reinitialize a file containing accounts that you do not want to drop\&.
.RE
-This command empties the password file, which has the effect of dropping all users listed in it. The option creates the password file if it does not exist, so it can be used to initialize a new password file to be used for other account\-management operations. Take care not to use this option to reinitialize a file containing accounts that you do not want to drop.
.SH "MYSQL SERVER INSTANCE STATUS MONITORING"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
To monitor the status of each guarded server instance, the MySQL Instance Manager attempts to connect to the instance at regular intervals using the
MySQL_Instance_Manager@localhost
user account with a password of
-check_connection.
+check_connection\&.
.PP
You are
\fInot\fR
-required to create this account for MySQL Server; in fact, it is expected that it will not exist. Instance Manager can tell that a server is operational if the server accepts the connection attempt but refuses access for the account by returning a login error. However, these failed connection attempts are logged by the server to its general query log (see
-Section\ 5.2.3, \(lqThe General Query Log\(rq).
+required to create this account for MySQL Server; in fact, it is expected that it will not exist\&. Instance Manager can tell that a server is operational if the server accepts the connection attempt but refuses access for the account by returning a login error\&. However, these failed connection attempts are logged by the server to its general query log (see
+Section\ \&5.2.3, \(lqThe General Query Log\(rq)\&.
.PP
Instance Manager also attempts a connection to nonguarded server instances when you use the
SHOW INSTANCES
or
SHOW INSTANCE STATUS
-command. This is the only status monitoring done for nonguarded instances.
+command\&. This is the only status monitoring done for nonguarded instances\&.
.PP
-Instance Manager knows if a server instance fails at startup because it receives a status from the attempt. For an instance that starts but later crashes, Instance Manager receives a signal because it is the parent process of the instance.
+Instance Manager knows if a server instance fails at startup because it receives a status from the attempt\&. For an instance that starts but later crashes, Instance Manager receives a signal because it is the parent process of the instance\&.
.PP
-Beginning with MySQL 5.1.12, Instance Manager tracks instance states so that it can determine which commands are allowed for each instance. For example, commands that modify an instance's configuration are allowed only while the instance is offline.
+Beginning with MySQL 5\&.1\&.12, Instance Manager tracks instance states so that it can determine which commands are allowed for each instance\&. For example, commands that modify an instance\'s configuration are allowed only while the instance is offline\&.
.PP
-Each instance is in one of the states described in the following table. Guarded instances can be in any of the states. Nonguarded instances can only be offline or online. Instance state information is displayed in the
+Each instance is in one of the states described in the following table\&. Guarded instances can be in any of the states\&. Nonguarded instances can only be offline or online\&. Instance state information is displayed in the
status
column of the
SHOW INSTANCES
and
SHOW INSTANCE STATUS
-commands.
+commands\&.
.TS
allbox tab(:);
l l
@@ -827,26 +1456,26 @@ T}
T{
offline
T}:T{
-The instance has not been started and is not running.
+The instance has not been started and is not running\&.
T}
T{
starting
T}:T{
-The instance is starting (initializing). Nonguarded instances cannot be
- in this state. A nonguarded instance goes directly from
- offline to online.
+The instance is starting (initializing)\&. Nonguarded instances cannot be
+ in this state\&. A nonguarded instance goes directly from
+ offline to online\&.
T}
T{
stopping
T}:T{
-The instance is stopping. Nonguarded instances cannot be in this state.
+The instance is stopping\&. Nonguarded instances cannot be in this state\&.
A nonguarded instance goes directly from online to
- offline, or stays offline if startup fails.
+ offline, or stays offline if startup fails\&.
T}
T{
online
T}:T{
-The instance has started and is running.
+The instance has started and is running\&.
T}
T{
failed
@@ -854,191 +1483,321 @@ T}:T{
The instance was online but it crashed and is being restarted by
Instance Manager, or else the instance failed to start
at all and Instance Manager is again attempting to start
- it. Nonguarded instances cannot be in this state.
+ it\&. Nonguarded instances cannot be in this state\&.
T}
T{
crashed
T}:T{
-Instance Manager failed to start the instance after several attempts.
- (Instance Manager will try again later.) Nonguarded
- instances cannot be in this state.
+Instance Manager failed to start the instance after several attempts\&.
+ (Instance Manager will try again later\&.) Nonguarded
+ instances cannot be in this state\&.
T}
T{
abandoned
T}:T{
Instance Manager was not able to start the instance, has given up, and
will make no further attempts until instructed
- otherwise. To tell Instance Manager to try again, you
+ otherwise\&. To tell Instance Manager to try again, you
must first use STOP INSTANCE to put
the instance in offline state, and then use
- START INSTANCE to start the instance.
+ START INSTANCE to start the instance\&.
If it is necessary to make configuration changes for the
instance, you must do so after putting the instance
- offline and before starting it. (Instance Manager
+ offline and before starting it\&. (Instance Manager
accepts configuration\-changing commands only for offline
- instances.) Nonguarded instances cannot be in this
- state.
+ instances\&.) Nonguarded instances cannot be in this
+ state\&.
T}
.TE
-.sp
+.sp 1
.SH "CONNECTING TO MYSQL INSTANCE MANAGER"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-After you set up a password file for the MySQL Instance Manager and Instance Manager is running, you can connect to it. The MySQL client\-server protocol is used to communicate with the Instance Manager. For example, you can connect to it using the standard
+After you set up a password file for the MySQL Instance Manager and Instance Manager is running, you can connect to it\&. The MySQL client\-server protocol is used to communicate with the Instance Manager\&. For example, you can connect to it using the standard
\fBmysql\fR
client program:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-\-port=2273 \-\-host=im.example.org \-\-user=mysql \-\-password\fR
+shell> \fBmysql \-\-port=2273 \-\-host=im\&.example\&.org \-\-user=mysql \-\-password\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Instance Manager supports the version of the MySQL client\-server protocol used by the client tools and libraries distributed with MySQL 4.1 or later, so other programs that use the MySQL C API also can connect to it.
+Instance Manager supports the version of the MySQL client\-server protocol used by the client tools and libraries distributed with MySQL 4\&.1 or later, so other programs that use the MySQL C API also can connect to it\&.
.SH "MYSQL INSTANCE MANAGER COMMANDS"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-After you connect to MySQL Instance Manager, you can issue commands. The following general principles apply to Instance Manager command execution:
-.TP 3n
-\(bu
-Commands that take an instance name fail if the name is not a valid instance name.
-.TP 3n
-\(bu
+After you connect to MySQL Instance Manager, you can issue commands\&. The following general principles apply to Instance Manager command execution:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Commands that take an instance name fail if the name is not a valid instance name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Commands that take an instance name (other than
-CREATE INSTANCE) fail if the instance does not exist.
-.TP 3n
-\(bu
-As of MySQL 5.1.12, commands for an instance require that the instance be in an appropriate state. You cannot configure or start an instance that is not offline. You cannot start an instance that is online.
-.TP 3n
-\(bu
-Instance Manager maintains information about instance configuration in an internal (in\-memory) cache. Initially, this information comes from the configuration file if it exists, but some commands change the configuration of an instance. Commands that modify the configuration file fail if the file does not exist or is not accessible to Instance Manager.
-.sp
-As of MySQL 5.1.12, configuration\-changing commands modify both the in\-memory cache and the server instance section recorded in the configuration file to maintain consistency between them. For this to occur, the instance must be offline and the configuration file must be accessible and not malformed. If the configuration file cannot be updated, the command fails and the cache remains unchanged.
-.TP 3n
-\(bu
+CREATE INSTANCE) fail if the instance does not exist\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+As of MySQL 5\&.1\&.12, commands for an instance require that the instance be in an appropriate state\&. You cannot configure or start an instance that is not offline\&. You cannot start an instance that is online\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager maintains information about instance configuration in an internal (in\-memory) cache\&. Initially, this information comes from the configuration file if it exists, but some commands change the configuration of an instance\&. Commands that modify the configuration file fail if the file does not exist or is not accessible to Instance Manager\&.
+.sp
+As of MySQL 5\&.1\&.12, configuration\-changing commands modify both the in\-memory cache and the server instance section recorded in the configuration file to maintain consistency between them\&. For this to occur, the instance must be offline and the configuration file must be accessible and not malformed\&. If the configuration file cannot be updated, the command fails and the cache remains unchanged\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
On Windows, the standard file is
-\fImy.ini\fR
-in the directory where Instance Manager is installed. On Unix, the standard configuration file is
-\fI/etc/my.cnf\fR. To specify a different configuration file, start Instance Manager with the
+my\&.ini
+in the directory where Instance Manager is installed\&. On Unix, the standard configuration file is
+/etc/my\&.cnf\&. To specify a different configuration file, start Instance Manager with the
\fB\-\-defaults\-file\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
If a
[mysqld]
instance section exists in the configuration file, it must not contain any Instance Manager\-specific options (see
-the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq). Therefore, you must not add any of these options if you change the configuration for an instance named
-mysqld.
-.sp
+the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq)\&. Therefore, you must not add any of these options if you change the configuration for an instance named
+mysqld\&.
.RE
.PP
-The following list describes the commands that Instance Manager accepts, with examples.
-.TP 3n
-\(bu
-CREATE INSTANCE \fIinstance_name\fR [\fIoption_name\fR[=\fIoption_value\fR], ...]
+The following list describes the commands that Instance Manager accepts, with examples\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+CREATE INSTANCE \fIinstance_name\fR [\fIoption_name\fR[=\fIoption_value\fR], \&.\&.\&.]
.sp
This command configures a new instance by creating an
[\fIinstance_name\fR]
-section in the configuration file. The command fails if
+section in the configuration file\&. The command fails if
\fIinstance_name\fR
-is not a valid instance name or the instance already exists.
+is not a valid instance name or the instance already exists\&.
.sp
-The created section instance is empty if no options are given. Otherwise, the options are added to the section. Options should be given in the same format used when you write options in option files. (See
-Section\ 4.2.3.2, \(lqUsing Option Files\(rq
-for a description of the allowable syntax.) If you specify multiple options, separate them by commas.
+The created section instance is empty if no options are given\&. Otherwise, the options are added to the section\&. Options should be given in the same format used when you write options in option files\&. (See
+Section\ \&4.2.3.3, \(lqUsing Option Files\(rq
+for a description of the allowable syntax\&.) If you specify multiple options, separate them by commas\&.
.sp
For example, to create an instance section named
[mysqld98], you might write something like this were you to modify the configuration file directly:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld98]
basedir=/var/mysql98
.fi
+.if n \{\
.RE
+.\}
+.sp
To achieve the same effect via
CREATE INSTANCE, issue this command to Instance Manager:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBCREATE INSTANCE mysqld98 basedir="/var/mysql98";\fR
Query OK, 0 rows affected (0,00 sec)
.fi
+.if n \{\
.RE
+.\}
+.sp
CREATE INSTANCE
-creates the instance but does not start it.
+creates the instance but does not start it\&.
.sp
If the instance name is the (deprecated) name
mysqld, the option list cannot include any options that are specific to Instance Manager, such as
nonguarded
(see
-the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq).
+the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq)\&.
.sp
-This command was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+This command was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
DROP INSTANCE \fIinstance_name\fR
.sp
This command removes the configuration for
\fIinstance_name\fR
-from the configuration file.
+from the configuration file\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBDROP INSTANCE mysqld98;\fR
Query OK, 0 rows affected (0,00 sec)
.fi
+.if n \{\
.RE
+.\}
+.sp
The command fails if
\fIinstance_name\fR
-is not a valid instance name, the instance does not exist, or is not offline.
+is not a valid instance name, the instance does not exist, or is not offline\&.
.sp
-This command was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+This command was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
START INSTANCE \fIinstance_name\fR
.sp
-This command attempts to start an offline instance. The command is asynchronous; it does not wait for the instance to start.
+This command attempts to start an offline instance\&. The command is asynchronous; it does not wait for the instance to start\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSTART INSTANCE mysqld4;\fR
Query OK, 0 rows affected (0,00 sec)
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
STOP INSTANCE \fIinstance_name\fR
.sp
-This command attempts to stop an instance. The command is synchronous; it waits for the instance to stop.
+This command attempts to stop an instance\&. The command is synchronous; it waits for the instance to stop\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSTOP INSTANCE mysqld4;\fR
Query OK, 0 rows affected (0,00 sec)
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW INSTANCES
.sp
-Shows the names and status of all loaded instances.
+Shows the names and status of all loaded instances\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW INSTANCES;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+
@@ -1049,14 +1808,26 @@ mysql> \fBSHOW INSTANCES;\fR
| mysqld2 | offline |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW INSTANCE STATUS \fIinstance_name\fR
.sp
-Shows status and version information for an instance.
+Shows status and version information for an instance\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW INSTANCE STATUS mysqld3;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+
@@ -1065,65 +1836,102 @@ mysql> \fBSHOW INSTANCE STATUS mysqld3;\
| mysqld3 | online | unknown |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW INSTANCE OPTIONS \fIinstance_name\fR
.sp
-Shows the options used by an instance.
+Shows the options used by an instance\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW INSTANCE OPTIONS mysqld3;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
| option_name | value |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
| instance_name | mysqld3 |
-| mysqld\-path | /home/cps/mysql/trees/mysql\-4.1/sql/mysqld |
+| mysqld\-path | /home/cps/mysql/trees/mysql\-4\&.1/sql/mysqld |
| port | 3309 |
-| socket | /tmp/mysql.sock3 |
-| pid\-file | hostname.pid3 |
+| socket | /tmp/mysql\&.sock3 |
+| pid\-file | hostname\&.pid3 |
| datadir | /home/cps/mysql_data/data_dir1/ |
-| language | /home/cps/mysql/trees/mysql\-4.1/sql/share/english |
+| language | /home/cps/mysql/trees/mysql\-4\&.1/sql/share/english |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW \fIinstance_name\fR LOG FILES
.sp
-The command lists all log files used by the instance. The result set contains the path to the log file and the log file size. If no log file path is specified in the instance section of the configuration file (for example,
-log=/var/mysql.log), the Instance Manager tries to guess its placement. If Instance Manager is unable to guess the log file placement you should specify the log file location explicitly by using a log option in the appropriate instance section of the configuration file.
+The command lists all log files used by the instance\&. The result set contains the path to the log file and the log file size\&. If no log file path is specified in the instance section of the configuration file (for example,
+log=/var/mysql\&.log), the Instance Manager tries to guess its placement\&. If Instance Manager is unable to guess the log file placement you should specify the log file location explicitly by using a log option in the appropriate instance section of the configuration file\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW mysqld LOG FILES;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+
| Logfile | Path | Filesize |
+\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+
-| ERROR LOG | /home/cps/var/mysql/owlet.err | 9186 |
-| GENERAL LOG | /home/cps/var/mysql/owlet.log | 471503 |
-| SLOW LOG | /home/cps/var/mysql/owlet\-slow.log | 4463 |
+| ERROR LOG | /home/cps/var/mysql/owlet\&.err | 9186 |
+| GENERAL LOG | /home/cps/var/mysql/owlet\&.log | 471503 |
+| SLOW LOG | /home/cps/var/mysql/owlet\-slow\&.log | 4463 |
+\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
.RE
-SHOW ... LOG FILES
-displays information only about log files. If a server instance uses log tables (see
-Section\ 5.2.1, \(lqSelecting General Query and Slow Query Log Output Destinations\(rq), no information about those tables is shown.
+.\}
+.sp
+SHOW \&.\&.\&. LOG FILES
+displays information only about log files\&. If a server instance uses log tables (see
+Section\ \&5.2.1, \(lqSelecting General Query and Slow Query Log Output Destinations\(rq), no information about those tables is shown\&.
.sp
Log options are described in
-Section\ 5.1.2, \(lqServer Command Options\(rq.
-.TP 3n
-\(bu
+Section\ \&5.1.2, \(lqServer Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW \fIinstance_name\fR LOG {ERROR | SLOW | GENERAL} \fIsize\fR[,\fIoffset_from_end\fR]
.sp
-This command retrieves a portion of the specified log file. Because most users are interested in the latest log messages, the
+This command retrieves a portion of the specified log file\&. Because most users are interested in the latest log messages, the
\fIsize\fR
-parameter defines the number of bytes to retrieve from the end of the log. To retrieve data from the middle of the log file, specify the optional
+parameter defines the number of bytes to retrieve from the end of the log\&. To retrieve data from the middle of the log file, specify the optional
\fIoffset_from_end\fR
-parameter. The following example retrieves 21 bytes of data, starting 23 bytes before the end of the log file and ending 2 bytes before the end:
+parameter\&. The following example retrieves 21 bytes of data, starting 23 bytes before the end of the log file and ending 2 bytes before the end:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW mysqld LOG GENERAL 21, 2;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
@@ -1132,85 +1940,138 @@ mysql> \fBSHOW mysqld LOG GENERAL 21, 2;
| using password: YES |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
-SET \fIinstance_name\fR.\fIoption_name\fR[=\fIoption_value\fR]
.sp
-This command edits the specified instance's configuration section to change or add instance options. The option is added to the section is it is not already present. Otherwise, the new setting replaces the existing one.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+SET \fIinstance_name\fR\&.\fIoption_name\fR[=\fIoption_value\fR]
+.sp
+This command edits the specified instance\'s configuration section to change or add instance options\&. The option is added to the section is it is not already present\&. Otherwise, the new setting replaces the existing one\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBSET mysqld2.port=3322;\fR
-Query OK, 0 rows affected (0.00 sec)
+mysql> \fBSET mysqld2\&.port=3322;\fR
+Query OK, 0 rows affected (0\&.00 sec)
.fi
+.if n \{\
.RE
-As of MySQL 5.1.12, you can specify multiple options (separated by commas), and
+.\}
+.sp
+As of MySQL 5\&.1\&.12, you can specify multiple options (separated by commas), and
SET
-can be used only for offline instances. Each option must indicate the instance name:
+can be used only for offline instances\&. Each option must indicate the instance name:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBSET mysqld2.port=3322, mysqld3.nonguarded;\fR
-Query OK, 0 rows affected (0.00 sec)
+mysql> \fBSET mysqld2\&.port=3322, mysqld3\&.nonguarded;\fR
+Query OK, 0 rows affected (0\&.00 sec)
.fi
+.if n \{\
.RE
-Before MySQL 5.1.12, only a single option can be specified. Also, changes made to the configuration file do not take effect until the MySQL server is restarted. In addition, these changes are not stored in the instance manager's local cache of instance settings until a
+.\}
+.sp
+Before MySQL 5\&.1\&.12, only a single option can be specified\&. Also, changes made to the configuration file do not take effect until the MySQL server is restarted\&. In addition, these changes are not stored in the instance manager\'s local cache of instance settings until a
FLUSH INSTANCES
-command is executed.
-.TP 3n
-\(bu
-UNSET \fIinstance_name\fR.\fIoption_name\fR
+command is executed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+UNSET \fIinstance_name\fR\&.\fIoption_name\fR
.sp
-This command removes an option from an instance's configuration section.
+This command removes an option from an instance\'s configuration section\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBUNSET mysqld2.port;\fR
-Query OK, 0 rows affected (0.00 sec)
+mysql> \fBUNSET mysqld2\&.port;\fR
+Query OK, 0 rows affected (0\&.00 sec)
.fi
+.if n \{\
.RE
-As of MySQL 5.1.12, you can specify multiple options (separated by commas), and
+.\}
+.sp
+As of MySQL 5\&.1\&.12, you can specify multiple options (separated by commas), and
UNSET
-can be used only for offline instances. Each option must indicate the instance name:
+can be used only for offline instances\&. Each option must indicate the instance name:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBUNSET mysqld2.port, mysqld4.nonguarded;\fR
-Query OK, 0 rows affected (0.00 sec)
+mysql> \fBUNSET mysqld2\&.port, mysqld4\&.nonguarded;\fR
+Query OK, 0 rows affected (0\&.00 sec)
.fi
+.if n \{\
.RE
-Before MySQL 5.1.12, only a single option can be specified. Also, changes made to the configuration file do not take effect until the MySQL server is restarted. In addition, these changes are not stored in the instance manager's local cache of instance settings until a
+.\}
+.sp
+Before MySQL 5\&.1\&.12, only a single option can be specified\&. Also, changes made to the configuration file do not take effect until the MySQL server is restarted\&. In addition, these changes are not stored in the instance manager\'s local cache of instance settings until a
FLUSH INSTANCES
-command is executed.
-.TP 3n
-\(bu
+command is executed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
FLUSH INSTANCES
.sp
-As of MySQL 5.1.12,
+As of MySQL 5\&.1\&.12,
FLUSH INSTANCES
-cannot be used unless all instances are offline. The command causes Instance Manager to reread the configuration file, update its in\-memory configuration cache, and start any guarded instances.
+cannot be used unless all instances are offline\&. The command causes Instance Manager to reread the configuration file, update its in\-memory configuration cache, and start any guarded instances\&.
.sp
-Before MySQL 5.1.12, this command forces Instance Manager reread the configuration file and to refresh internal structures. This command should be performed after editing the configuration file. The command does not restart instances.
+Before MySQL 5\&.1\&.12, this command forces Instance Manager reread the configuration file and to refresh internal structures\&. This command should be performed after editing the configuration file\&. The command does not restart instances\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBFLUSH INSTANCES;\fR
-Query OK, 0 rows affected (0.04 sec)
+Query OK, 0 rows affected (0\&.04 sec)
.fi
+.if n \{\
+.RE
+.\}
.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlshow.1'
--- a/man/mysqlshow.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlshow.1 2009-09-16 12:03:18 +0000
@@ -1,61 +1,101 @@
+'\" t
.\" Title: \fBmysqlshow\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLSHOW\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLSHOW\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlshow
+.\" databases: displaying
+.\" displaying: database information
+.\" tables: displaying
+.\" columns: displaying
+.\" showing: database information
.SH "NAME"
mysqlshow \- display database, table, and column information
.SH "SYNOPSIS"
-.HP 52
+.HP \w'\fBmysqlshow\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB\ [\fR\fB\fItbl_name\fR\fR\fB\ [\fR\fB\fIcol_name\fR\fR\fB]]]\fR\ 'u
\fBmysqlshow [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB [\fR\fB\fIcol_name\fR\fR\fB]]]\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqlshow\fR
-client can be used to quickly see which databases exist, their tables, or a table's columns or indexes.
+client can be used to quickly see which databases exist, their tables, or a table\'s columns or indexes\&.
.PP
\fBmysqlshow\fR
provides a command\-line interface to several SQL
SHOW
-statements. See
-Section\ 12.5.5, \(lqSHOW Syntax\(rq. The same information can be obtained by using those statements directly. For example, you can issue them from the
+statements\&. See
+Section\ \&12.5.5, \(lqSHOW Syntax\(rq\&. The same information can be obtained by using those statements directly\&. For example, you can issue them from the
\fBmysql\fR
-client program.
+client program\&.
.PP
Invoke
\fBmysqlshow\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlshow [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB [\fR\fB\fIcol_name\fR\fR\fB]]]\fR
.fi
+.if n \{\
.RE
-.TP 3n
-\(bu
-If no database is given, a list of database names is shown.
-.TP 3n
-\(bu
-If no table is given, all matching tables in the database are shown.
-.TP 3n
-\(bu
-If no column is given, all matching columns and column types in the table are shown.
+.\}
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+If no database is given, a list of database names is shown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+If no table is given, all matching tables in the database are shown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+If no column is given, all matching columns and column types in the table are shown\&.
.RE
.PP
-The output displays only the names of those databases, tables, or columns for which you have some privileges.
+The output displays only the names of those databases, tables, or columns for which you have some privileges\&.
.PP
If the last argument contains shell or SQL wildcard characters (\(lq*\(rq,
\(lq?\(rq,
\(lq%\(rq, or
-\(lq_\(rq), only those names that are matched by the wildcard are shown. If a database name contains any underscores, those should be escaped with a backslash (some Unix shells require two) to get a list of the proper tables or columns.
+\(lq_\(rq), only those names that are matched by the wildcard are shown\&. If a database name contains any underscores, those should be escaped with a backslash (some Unix shells require two) to get a list of the proper tables or columns\&.
\(lq*\(rq
and
\(lq?\(rq
@@ -63,175 +103,389 @@ characters are converted into SQL
\(lq%\(rq
and
\(lq_\(rq
-wildcard characters. This might cause some confusion when you try to display the columns for a table with a
+wildcard characters\&. This might cause some confusion when you try to display the columns for a table with a
\(lq_\(rq
in the name, because in this case,
\fBmysqlshow\fR
-shows you only the table names that match the pattern. This is easily fixed by adding an extra
+shows you only the table names that match the pattern\&. This is easily fixed by adding an extra
\(lq%\(rq
-last on the command line as a separate argument.
+last on the command line as a separate argument\&.
.PP
\fBmysqlshow\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: help option
+.\" help option: mysqlshow
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: character-sets-dir option
+.\" character-sets-dir option: mysqlshow
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: compress option
+.\" compress option: mysqlshow
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: count option
+.\" count option: mysqlshow
\fB\-\-count\fR
.sp
-Show the number of rows per table. This can be slow for non\-MyISAM
-tables.
-.TP 3n
-\(bu
+Show the number of rows per table\&. This can be slow for non\-MyISAM
+tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: debug option
+.\" debug option: mysqlshow
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: debug-check option
+.\" debug-check option: mysqlshow
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: debug-info option
+.\" debug-info option: mysqlshow
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: default-character-set option
+.\" default-character-set option: mysqlshow
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: host option
+.\" host option: mysqlshow
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: keys option
+.\" keys option: mysqlshow
\fB\-\-keys\fR,
\fB\-k\fR
.sp
-Show table indexes.
-.TP 3n
-\(bu
+Show table indexes\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: password option
+.\" password option: mysqlshow
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: pipe option
+.\" pipe option: mysqlshow
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: port option
+.\" port option: mysqlshow
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: protocol option
+.\" protocol option: mysqlshow
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: show-table-type option
+.\" show-table-type option: mysqlshow
\fB\-\-show\-table\-type\fR,
\fB\-t\fR
.sp
Show a column indicating the table type, as in
-SHOW FULL TABLES. The type is
+SHOW FULL TABLES\&. The type is
BASE TABLE
or
-VIEW.
-.TP 3n
-\(bu
+VIEW\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: socket option
+.\" socket option: mysqlshow
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: SSL options
+.\" SSL options: mysqlshow
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: status option
+.\" status option: mysqlshow
\fB\-\-status\fR,
\fB\-i\fR
.sp
-Display extra information about each table.
-.TP 3n
-\(bu
+Display extra information about each table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: user option
+.\" user option: mysqlshow
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: verbose option
+.\" verbose option: mysqlshow
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does. This option can be used multiple times to increase the amount of information.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&. This option can be used multiple times to increase the amount of information\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: version option
+.\" version option: mysqlshow
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlslap.1'
--- a/man/mysqlslap.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlslap.1 2009-09-16 12:03:18 +0000
@@ -1,72 +1,112 @@
+'\" t
.\" Title: \fBmysqlslap\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLSLAP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLSLAP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlslap
+.\" load emulation
.SH "NAME"
mysqlslap \- load emulation client
.SH "SYNOPSIS"
-.HP 20
+.HP \w'\fBmysqlslap\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysqlslap [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysqlslap\fR
-is a diagnostic program designed to emulate client load for a MySQL server and to report the timing of each stage. It works as if multiple clients are accessing the server.
+is a diagnostic program designed to emulate client load for a MySQL server and to report the timing of each stage\&. It works as if multiple clients are accessing the server\&.
\fBmysqlslap\fR
-is available as of MySQL 5.1.4.
+is available as of MySQL 5\&.1\&.4\&.
.PP
Invoke
\fBmysqlslap\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlslap [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Some options such as
\fB\-\-create\fR
or
\fB\-\-query\fR
-enable you to specify a string containing an SQL statement or a file containing statements. If you specify a file, by default it must contain one statement per line. (That is, the implicit statement delimiter is the newline character.) Use the
+enable you to specify a string containing an SQL statement or a file containing statements\&. If you specify a file, by default it must contain one statement per line\&. (That is, the implicit statement delimiter is the newline character\&.) Use the
\fB\-\-delimiter\fR
-option to specify a different delimiter, which enables you to specify statements that span multiple lines or place multiple statements on a single line. You cannot include comments in a file;
+option to specify a different delimiter, which enables you to specify statements that span multiple lines or place multiple statements on a single line\&. You cannot include comments in a file;
\fBmysqlslap\fR
-does not understand them.
+does not understand them\&.
.PP
\fBmysqlslap\fR
runs in three stages:
-.TP 3n
-1.
-Create schema, table, and optionally any stored programs or data you want to using for the test. This stage uses a single client connection.
-.TP 3n
-2.
-Run the load test. This stage can use many client connections.
-.TP 3n
-3.
-Clean up (disconnect, drop table if specified). This stage uses a single client connection.
.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+Create schema, table, and optionally any stored programs or data you want to using for the test\&. This stage uses a single client connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+Run the load test\&. This stage can use many client connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
+Clean up (disconnect, drop table if specified)\&. This stage uses a single client connection\&.
.RE
.PP
Examples:
.PP
Supply your own create and query SQL statements, with 50 clients querying and 200 selects for each:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlslap \-\-delimiter=";" \\
- \-\-create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" \\
+mysqlslap \-\-delimiter=";" \e
+ \-\-create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" \e
\-\-query="SELECT * FROM a" \-\-concurrency=50 \-\-iterations=200
.fi
+.if n \{\
.RE
+.\}
.PP
Let
\fBmysqlslap\fR
@@ -74,71 +114,138 @@ build the query SQL statement with a tab
INT
columns and three
VARCHAR
-columns. Use five clients querying 20 times each. Do not create the table or insert the data (that is, use the previous test's schema and data):
+columns\&. Use five clients querying 20 times each\&. Do not create the table or insert the data (that is, use the previous test\'s schema and data):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlslap \-\-concurrency=5 \-\-iterations=20 \\
- \-\-number\-int\-cols=2 \-\-number\-char\-cols=3 \\
+mysqlslap \-\-concurrency=5 \-\-iterations=20 \e
+ \-\-number\-int\-cols=2 \-\-number\-char\-cols=3 \e
\-\-auto\-generate\-sql
.fi
+.if n \{\
.RE
+.\}
.PP
Tell the program to load the create, insert, and query SQL statements from the specified files, where the
-\fIcreate.sql\fR
+create\&.sql
file has multiple table creation statements delimited by
-\';'
+\';\'
and multiple insert statements delimited by
-\';'. The
+\';\'\&. The
\fB\-\-query\fR
file will have multiple queries delimited by
-\';'. Run all the load statements, then run all the queries in the query file with five clients (five times each):
+\';\'\&. Run all the load statements, then run all the queries in the query file with five clients (five times each):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlslap \-\-concurrency=5 \\
- \-\-iterations=5 \-\-query=query.sql \-\-create=create.sql \\
+mysqlslap \-\-concurrency=5 \e
+ \-\-iterations=5 \-\-query=query\&.sql \-\-create=create\&.sql \e
\-\-delimiter=";"
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqlslap\fR
-supports the options in the following list. It also reads option files and supports the options for processing them described at
-Section\ 4.2.3.2.1, \(lqCommand\-Line Options that Affect Option\-File Handling\(rq.
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: help option
+.\" help option: mysqlslap
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql option
+.\" auto-generate-sql option: mysqlslap
\fB\-\-auto\-generate\-sql\fR,
\fB\-a\fR
.sp
-Generate SQL statements automatically when they are not supplied in files or via command options.
-.TP 3n
-\(bu
+Generate SQL statements automatically when they are not supplied in files or via command options\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-add-autoincrement option
+.\" auto-generate-sql-add-autoincrement option: mysqlslap
\fB\-\-auto\-generate\-sql\-add\-autoincrement\fR
.sp
Add an
AUTO_INCREMENT
-column to automatically generated tables. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+column to automatically generated tables\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-execute-number option
+.\" auto-generate-sql-execute-number option: mysqlslap
\fB\-\-auto\-generate\-sql\-execute\-number=\fR\fB\fIN\fR\fR
.sp
-Specify how many queries to generate automatically. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+Specify how many queries to generate automatically\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-guid-primary option
+.\" auto-generate-sql-guid-primary option: mysqlslap
\fB\-\-auto\-generate\-sql\-guid\-primary\fR
.sp
-Add a GUID\-based primary key to automatically generated tables. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+Add a GUID\-based primary key to automatically generated tables\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-load-type option
+.\" auto-generate-sql-load-type option: mysqlslap
\fB\-\-auto\-generate\-sql\-load\-type=\fR\fB\fItype\fR\fR
.sp
-Specify the test load type. The allowable values are
+Specify the test load type\&. The allowable values are
read
(scan tables),
write
@@ -148,123 +255,324 @@ key
update
(update primary keys), or
mixed
-(half inserts, half scanning selects). The default is
-mixed. This option was added in MySQL 5.1.16.
-.TP 3n
-\(bu
+(half inserts, half scanning selects)\&. The default is
+mixed\&. This option was added in MySQL 5\&.1\&.16\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-secondary-indexes option
+.\" auto-generate-sql-secondary-indexes option: mysqlslap
\fB\-\-auto\-generate\-sql\-secondary\-indexes=\fR\fB\fIN\fR\fR
.sp
-Specify how many secondary indexes to add to automatically generated tables. By default, none are added. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+Specify how many secondary indexes to add to automatically generated tables\&. By default, none are added\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-unique-query-number option
+.\" auto-generate-sql-unique-query-number option: mysqlslap
\fB\-\-auto\-generate\-sql\-unique\-query\-number=\fR\fB\fIN\fR\fR
.sp
-How many different queries to generate for automatic tests. For example, if you run a
+How many different queries to generate for automatic tests\&. For example, if you run a
key
-test that performs 1000 selects, you can use this option with a value of 1000 to run 1000 unique queries, or with a value of 50 to perform 50 different selects. The default is 10. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+test that performs 1000 selects, you can use this option with a value of 1000 to run 1000 unique queries, or with a value of 50 to perform 50 different selects\&. The default is 10\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-unique-write-number option
+.\" auto-generate-sql-unique-write-number option: mysqlslap
\fB\-\-auto\-generate\-sql\-unique\-write\-number=\fR\fB\fIN\fR\fR
.sp
How many different queries to generate for
-\fB\-\-auto\-generate\-sql\-write\-number\fR. The default is 10. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+\fB\-\-auto\-generate\-sql\-write\-number\fR\&. The default is 10\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-write-number option
+.\" auto-generate-sql-write-number option: mysqlslap
\fB\-\-auto\-generate\-sql\-write\-number=\fR\fB\fIN\fR\fR
.sp
-How many row inserts to perform on each thread. The default is 100. This option was added in MySQL 5.1.16.
-.TP 3n
-\(bu
+How many row inserts to perform on each thread\&. The default is 100\&. This option was added in MySQL 5\&.1\&.16\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: commit option
+.\" commit option: mysqlslap
\fB\-\-commit=\fR\fB\fIN\fR\fR
.sp
-How many statements to execute before committing. The default is 0 (no commits are done). This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+How many statements to execute before committing\&. The default is 0 (no commits are done)\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: compress option
+.\" compress option: mysqlslap
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: concurrency option
+.\" concurrency option: mysqlslap
\fB\-\-concurrency=\fR\fB\fIN\fR\fR,
\fB\-c \fR\fB\fIN\fR\fR
.sp
The number of clients to simulate when issuing the
SELECT
-statement.
-.TP 3n
-\(bu
+statement\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: create option
+.\" create option: mysqlslap
\fB\-\-create=\fR\fB\fIvalue\fR\fR
.sp
-The file or string containing the statement to use for creating the table.
-.TP 3n
-\(bu
+The file or string containing the statement to use for creating the table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: create-schema option
+.\" create-schema option: mysqlslap
\fB\-\-create\-schema=\fR\fB\fIvalue\fR\fR
.sp
-The schema in which to run the tests. This option was added in MySQL 5.1.5.
-.TP 3n
-\(bu
+The schema in which to run the tests\&. This option was added in MySQL 5\&.1\&.5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: csv option
+.\" csv option: mysqlslap
\fB\-\-csv[=\fR\fB\fIfile_name\fR\fR\fB]\fR
.sp
-Generate output in comma\-separated values format. The output goes to the named file, or to the standard output if no file is given. This option was added in MySQL 5.1.5.
-.TP 3n
-\(bu
+Generate output in comma\-separated values format\&. The output goes to the named file, or to the standard output if no file is given\&. This option was added in MySQL 5\&.1\&.5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: debug option
+.\" debug option: mysqlslap
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/mysqlslap\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: debug-check option
+.\" debug-check option: mysqlslap
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: debug-info option
+.\" debug-info option: mysqlslap
\fB\-\-debug\-info\fR,
\fB\-T\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: delimiter option
+.\" delimiter option: mysqlslap
\fB\-\-delimiter=\fR\fB\fIstr\fR\fR,
\fB\-F \fR\fB\fIstr\fR\fR
.sp
-The delimiter to use in SQL statements supplied in files or via command options.
-.TP 3n
-\(bu
+The delimiter to use in SQL statements supplied in files or via command options\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: detach option
+.\" detach option: mysqlslap
\fB\-\-detach=\fR\fB\fIN\fR\fR
.sp
Detach (close and reopen) each connection after each
\fIN\fR
-statements. The default is 0 (connections are not detached). This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+statements\&. The default is 0 (connections are not detached)\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: engine option
+.\" engine option: mysqlslap
\fB\-\-engine=\fR\fB\fIengine_name\fR\fR,
\fB\-e \fR\fB\fIengine_name\fR\fR
.sp
-The storage engine to use for creating tables.
-.TP 3n
-\(bu
+The storage engine to use for creating tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: host option
+.\" host option: mysqlslap
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: iterations option
+.\" iterations option: mysqlslap
\fB\-\-iterations=\fR\fB\fIN\fR\fR,
\fB\-i \fR\fB\fIN\fR\fR
.sp
-The number of times to run the tests.
-.TP 3n
-\(bu
+The number of times to run the tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: lock-directory option
+.\" lock-directory option: mysqlslap
\fB\-\-lock\-directory=\fR\fB\fIpath\fR\fR
.sp
-The directory to use for storing locks. This option was added in MySQL 5.1.5 and removed in 5.1.18.
-.TP 3n
-\(bu
+The directory to use for storing locks\&. This option was added in MySQL 5\&.1\&.5 and removed in 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: number-char-cols option
+.\" number-char-cols option: mysqlslap
\fB\-\-number\-char\-cols=\fR\fB\fIN\fR\fR,
\fB\-x \fR\fB\fIN\fR\fR
.sp
@@ -272,9 +580,19 @@ The number of
VARCHAR
columns to use if
\fB\-\-auto\-generate\-sql\fR
-is specified.
-.TP 3n
-\(bu
+is specified\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: number-int-cols option
+.\" number-int-cols option: mysqlslap
\fB\-\-number\-int\-cols=\fR\fB\fIN\fR\fR,
\fB\-y \fR\fB\fIN\fR\fR
.sp
@@ -282,173 +600,388 @@ The number of
INT
columns to use if
\fB\-\-auto\-generate\-sql\fR
-is specified.
-.TP 3n
-\(bu
+is specified\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: number-of-queries option
+.\" number-of-queries option: mysqlslap
\fB\-\-number\-of\-queries=\fR\fB\fIN\fR\fR
.sp
-Limit each client to approximately this number of queries. This option was added in MySQL 5.1.5.
-.TP 3n
-\(bu
+Limit each client to approximately this number of queries\&. This option was added in MySQL 5\&.1\&.5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: only-print option
+.\" only-print option: mysqlslap
\fB\-\-only\-print\fR
.sp
-Do not connect to databases.
+Do not connect to databases\&.
\fBmysqlslap\fR
-only prints what it would have done. This option was added in MySQL 5.1.5.
-.TP 3n
-\(bu
+only prints what it would have done\&. This option was added in MySQL 5\&.1\&.5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: password option
+.\" password option: mysqlslap
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
+.\" mysqlslap: password option
+.\" password option: mysqlslap
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: pipe option
+.\" pipe option: mysqlslap
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: port option
+.\" port option: mysqlslap
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: post-query option
+.\" post-query option: mysqlslap
\fB\-\-post\-query=\fR\fB\fIvalue\fR\fR
.sp
-The file or string containing the statement to execute after the tests have completed. This execution is not counted for timing purposes. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+The file or string containing the statement to execute after the tests have completed\&. This execution is not counted for timing purposes\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: shared-memory-base-name option
+.\" shared-memory-base-name option: mysqlslap
\fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
.sp
-On Windows, the shared\-memory name to use, for connections made via shared memory to a local server. This option applies only if the server supports shared\-memory connections.
-.TP 3n
-\(bu
+On Windows, the shared\-memory name to use, for connections made via shared memory to a local server\&. This option applies only if the server supports shared\-memory connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: post-system option
+.\" post-system option: mysqlslap
\fB\-\-post\-system=\fR\fB\fIstr\fR\fR
.sp
The string to execute via
system()
-after the tests have completed. This execution is not counted for timing purposes. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+after the tests have completed\&. This execution is not counted for timing purposes\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: pre-query option
+.\" pre-query option: mysqlslap
\fB\-\-pre\-query=\fR\fB\fIvalue\fR\fR
.sp
-The file or string containing the statement to execute before running the tests. This execution is not counted for timing purposes. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+The file or string containing the statement to execute before running the tests\&. This execution is not counted for timing purposes\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: pre-system option
+.\" pre-system option: mysqlslap
\fB\-\-pre\-system=\fR\fB\fIstr\fR\fR
.sp
The string to execute via
system()
-before running the tests. This execution is not counted for timing purposes. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+before running the tests\&. This execution is not counted for timing purposes\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: preserve-schema option
+.\" preserve-schema option: mysqlslap
\fB\-\-preserve\-schema\fR
.sp
Preserve the schema from the
\fBmysqlslap\fR
-run. The
+run\&. The
\fB\-\-auto\-generate\-sql\fR
and
\fB\-\-create\fR
-options disable this option. This option was added in MySQL 5.1.5 and removed in MySQL 5.1.23.
-.TP 3n
-\(bu
+options disable this option\&. This option was added in MySQL 5\&.1\&.5 and removed in MySQL 5\&.1\&.23\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: protocol option
+.\" protocol option: mysqlslap
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: query option
+.\" query option: mysqlslap
\fB\-\-query=\fR\fB\fIvalue\fR\fR,
\fB\-q \fR\fB\fIvalue\fR\fR
.sp
The file or string containing the
SELECT
-statement to use for retrieving data.
-.TP 3n
-\(bu
+statement to use for retrieving data\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: silent option
+.\" silent option: mysqlslap
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. No output.
-.TP 3n
-\(bu
+Silent mode\&. No output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: slave option
+.\" slave option: mysqlslap
\fB\-\-slave\fR
.sp
Follow master locks for other
\fBmysqlslap\fR
-clients. Use this option if you are trying to synchronize around one master server with
+clients\&. Use this option if you are trying to synchronize around one master server with
\fB\-\-lock\-directory\fR
-plus NFS. This option was added in MySQL 5.1.5 and removed in 5.1.18.
-.TP 3n
-\(bu
+plus NFS\&. This option was added in MySQL 5\&.1\&.5 and removed in 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: socket option
+.\" socket option: mysqlslap
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: SSL options
+.\" SSL options: mysqlslap
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: use-threads option
+.\" use-threads option: mysqlslap
\fB\-\-use\-threads\fR
.sp
On Unix, the default is to use
fork()
calls and this option causes
\fBpthread\fR
-calls to be used instead. (On Windows, the default is to use
+calls to be used instead\&. (On Windows, the default is to use
pthread
-calls and the option has no effect.) This option was added in MySQL 5.1.6 and removed in 5.1.18.
-.TP 3n
-\(bu
+calls and the option has no effect\&.) This option was added in MySQL 5\&.1\&.6 and removed in 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: user option
+.\" user option: mysqlslap
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: verbose option
+.\" verbose option: mysqlslap
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does. This option can be used multiple times to increase the amount of information.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&. This option can be used multiple times to increase the amount of information\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: version option
+.\" version option: mysqlslap
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqltest.1'
--- a/man/mysqltest.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqltest.1 2009-09-16 12:03:18 +0000
@@ -1,101 +1,182 @@
+'\" t
.\" Title: \fBmysqltest\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/27/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/08/2009
.\" Manual: MySQL Database System
.\" Source: MySQL
+.\" Language: English
.\"
-.TH "\fBMYSQLTEST\fR" "1" "03/27/2009" "MySQL" "MySQL Database System"
+.TH "\FBMYSQLTEST\FR" "1" "08/08/2009" "MySQL" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqltest
+.\" mysqltest_embedded
.SH "NAME"
mysqltest \- program to run test cases
.br
mysqltest_embedded \- program to run embedded test cases
.SH "SYNOPSIS"
-.HP 30
+.HP \w'\fBmysqltest\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB]\fR\ 'u
\fBmysqltest [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB]\fR
-.HP 39
+.HP \w'\fBmysqltest_embedded\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB]\fR\ 'u
\fBmysqltest_embedded [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqltest\fR
-program runs a test case against a MySQL server and optionally compares the output with a result file. This program reads input written in a special test language. Typically, you invoke
+program runs a test case against a MySQL server and optionally compares the output with a result file\&. This program reads input written in a special test language\&. Typically, you invoke
\fBmysqltest\fR
via
-\fBmysql\-test\-run.pl\fR
-rather than invoking it directly.
+\fBmysql\-test\-run\&.pl\fR
+rather than invoking it directly\&.
.PP
\fBmysqltest_embedded\fR
is similar but is built with support for the
libmysqld
-embedded server.
+embedded server\&.
.PP
Features of
\fBmysqltest\fR:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can send SQL statements to MySQL servers for execution
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can execute external shell commands
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can test whether the result from an SQL statement or shell command is as expected
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can connect to one or more standalone
\fBmysqld\fR
servers and switch between connections
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can connect to an embedded server (libmysqld), if MySQL is compiled with support for
-libmysqld. (In this case, the executable is named
+libmysqld\&. (In this case, the executable is named
\fBmysqltest_embedded\fR
rather than
-\fBmysqltest\fR.)
-.sp
+\fBmysqltest\fR\&.)
.RE
.PP
By default,
\fBmysqltest\fR
-reads the test case on the standard input. To run
+reads the test case on the standard input\&. To run
\fBmysqltest\fR
this way, you normally invoke it like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqltest [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB] < \fR\fB\fItest_file\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
You can also name the test case file with a
\fB\-\-test\-file=\fR\fB\fIfile_name\fR\fR
-option.
+option\&.
.PP
The exit value from
\fBmysqltest\fR
-is 0 for success, 1 for failure, and 62 if it skips the test case (for example, if after checking some preconditions it decides not to run the test).
+is 0 for success, 1 for failure, and 62 if it skips the test case (for example, if after checking some preconditions it decides not to run the test)\&.
.PP
\fBmysqltest\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: help option
+.\" help option: mysqltest
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: basedir option
+.\" basedir option: mysqltest
\fB\-\-basedir=\fR\fB\fIdir_name\fR\fR,
\fB\-b \fR\fB\fIdir_name\fR\fR
.sp
-The base directory for tests.
-.TP 3n
-\(bu
+The base directory for tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: big-test option
+.\" big-test option: mysqltest
\fB\-\-big\-test\fR,
\fB\-B\fR
.sp
@@ -103,197 +184,469 @@ Define the
\fBmysqltest\fR
variable
$BIG_TEST
-as 1. This option was removed in MySQL 4.1.23, 5.0.30, and 5.1.13.
-.TP 3n
-\(bu
+as 1\&. This option was removed in MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.13\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: character-sets-dir option
+.\" character-sets-dir option: mysqltest
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. This option was added in MySQL 4.1.23, 5.0.32, and 5.1.13.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. This option was added in MySQL 4\&.1\&.23, 5\&.0\&.32, and 5\&.1\&.13\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: compress option
+.\" compress option: mysqltest
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: cursor-protocol option
+.\" cursor-protocol option: mysqltest
\fB\-\-cursor\-protocol\fR
.sp
Use cursors for prepared statements (implies
-\fB\-\-ps\-protocol\fR). This option was added in MySQL 5.0.19.
-.TP 3n
-\(bu
+\fB\-\-ps\-protocol\fR)\&. This option was added in MySQL 5\&.0\&.19\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: database option
+.\" database option: mysqltest
\fB\-\-database=\fR\fB\fIdb_name\fR\fR,
\fB\-D \fR\fB\fIdb_name\fR\fR
.sp
-The default database to use.
-.TP 3n
-\(bu
+The default database to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: debug option
+.\" debug option: mysqltest
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-#[\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log if MySQL is built with debugging support. The default
+Write a debugging log if MySQL is built with debugging support\&. The default
\fIdebug_options\fR
value is
-\'d:t:S:i:O,/tmp/mysqltest.trace'.
-.TP 3n
-\(bu
+\'d:t:S:i:O,/tmp/mysqltest\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: debug-check option
+.\" debug-check option: mysqltest
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: debug-info option
+.\" debug-info option: mysqltest
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: host option
+.\" host option: mysqltest
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: include option
+.\" include option: mysqltest
\fB\-\-include=\fR\fB\fIfile_name\fR\fR,
\fB\-i \fR\fB\fIfile_name\fR\fR
.sp
-Include the contents of the given file before processing the contents of the test file. The included file should have the same format as other
+Include the contents of the given file before processing the contents of the test file\&. The included file should have the same format as other
\fBmysqltest\fR
-test files. This option has the same effect as putting a
+test files\&. This option has the same effect as putting a
\-\-source \fIfile_name\fR
-command as the first line of the test file. This option was added in MySQL 4.1.23, 5.0.30, and 5.1.7.
-.TP 3n
-\(bu
+command as the first line of the test file\&. This option was added in MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: logdir option
+.\" logdir option: mysqltest
\fB\-\-logdir=\fR\fB\fIdir_name\fR\fR
.sp
-The directory to use for log files. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+The directory to use for log files\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: mark-progress option
+.\" mark-progress option: mysqltest
\fB\-\-mark\-progress\fR
.sp
Write the line number and elapsed time to
-\fI\fItest_file\fR\fR\fI.progress\fR. This option was added in MySQL 4.1.23, 5.0.30, and 5.1.12.
-.TP 3n
-\(bu
+\fItest_file\fR\&.progress\&. This option was added in MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: max-connect-retries option
+.\" max-connect-retries option: mysqltest
\fB\-\-max\-connect\-retries=\fR\fB\fInum\fR\fR
.sp
-The maximum number of connection attempts when connecting to server. This option was added in MySQL 4.1.23, 5.0.23, and 5.1.11.
-.TP 3n
-\(bu
+The maximum number of connection attempts when connecting to server\&. This option was added in MySQL 4\&.1\&.23, 5\&.0\&.23, and 5\&.1\&.11\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: no-defaults option
+.\" no-defaults option: mysqltest
\fB\-\-no\-defaults\fR
.sp
-Do not read default options from any option files.
-.TP 3n
-\(bu
+Do not read default options from any option files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: password option
+.\" password option: mysqltest
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
-.TP 3n
-\(bu
+option on the command line, you are prompted for one\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: port option
+.\" port option: mysqltest
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: ps-protocol option
+.\" ps-protocol option: mysqltest
\fB\-\-ps\-protocol\fR
.sp
-Use the prepared\-statement protocol for communication.
-.TP 3n
-\(bu
+Use the prepared\-statement protocol for communication\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: quiet option
+.\" quiet option: mysqltest
\fB\-\-quiet\fR
.sp
-Suppress all normal output. This is a synonym for
-\fB\-\-silent\fR.
-.TP 3n
-\(bu
+Suppress all normal output\&. This is a synonym for
+.\" mysqltest: silent option
+.\" silent option: mysqltest
+\fB\-\-silent\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: record option
+.\" record option: mysqltest
\fB\-\-record\fR,
\fB\-r\fR
.sp
Record the output that results from running the test file into the file named by the
\fB\-\-result\-file\fR
-option, if that option is given.
-.TP 3n
-\(bu
+option, if that option is given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: result-file option
+.\" result-file option: mysqltest
\fB\-\-result\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-R \fR\fB\fIfile_name\fR\fR
.sp
-This option specifies the file for test case expected results.
+This option specifies the file for test case expected results\&.
\fB\-\-result\-file\fR, together with
\fB\-\-record\fR, determines how
\fBmysqltest\fR
treats the test actual and expected results for a test case:
-.RS 3n
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
If the test produces no results,
\fBmysqltest\fR
-exits with an error message to that effect.
-.TP 3n
-\(bu
+exits with an error message to that effect\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Otherwise, if
\fB\-\-result\-file\fR
is not given,
\fBmysqltest\fR
-sends test results to the standard output.
-.TP 3n
-\(bu
+sends test results to the standard output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
With
\fB\-\-result\-file\fR
but not
\fB\-\-record\fR,
\fBmysqltest\fR
-reads the expected results from the given file and compares them with the actual results. If the results do not match,
+reads the expected results from the given file and compares them with the actual results\&. If the results do not match,
\fBmysqltest\fR
writes a
-\fI.reject\fR
-file in the same directory as the result file and exits with an error.
-.TP 3n
-\(bu
+\&.reject
+file in the same directory as the result file and exits with an error\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
With both
\fB\-\-result\-file\fR
and
\fB\-\-record\fR,
\fBmysqltest\fR
-updates the given file by writing the actual test results to it.
+updates the given file by writing the actual test results to it\&.
+.RE
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: server-arg option
+.\" server-arg option: mysqltest
\fB\-\-server\-arg=\fR\fB\fIvalue\fR\fR,
\fB\-A \fR\fB\fIvalue\fR\fR
.sp
-Pass the argument as an argument to the embedded server. For example,
+Pass the argument as an argument to the embedded server\&. For example,
\fB\-\-server\-arg=\-\-tmpdir=/tmp\fR
or
-\fB\-\-server\-arg=\-\-core\fR. Up to 64 arguments can be given.
-.TP 3n
-\(bu
+\fB\-\-server\-arg=\-\-core\fR\&. Up to 64 arguments can be given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: server-file option
+.\" server-file option: mysqltest
\fB\-\-server\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-F \fR\fB\fIfile_name\fR\fR
.sp
-Read arguments for the embedded server from the given file. The file should contain one argument per line.
-.TP 3n
-\(bu
+Read arguments for the embedded server from the given file\&. The file should contain one argument per line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: silent option
+.\" silent option: mysqltest
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Suppress all normal output.
-.TP 3n
-\(bu
+Suppress all normal output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: skip-safemalloc option
+.\" skip-safemalloc option: mysqltest
\fB\-\-skip\-safemalloc\fR
.sp
-Do not use memory allocation checking.
-.TP 3n
-\(bu
+Do not use memory allocation checking\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: sleep option
+.\" sleep option: mysqltest
\fB\-\-sleep=\fR\fB\fInum\fR\fR,
\fB\-T \fR\fB\fInum\fR\fR
.sp
@@ -301,83 +654,176 @@ Cause all
sleep
commands in the test case file to sleep
\fInum\fR
-seconds. This option does not affect
+seconds\&. This option does not affect
real_sleep
-commands.
+commands\&.
.sp
-As of MySQL 5.0.23, an option value of 0 can be used, which effectively disables
+As of MySQL 5\&.0\&.23, an option value of 0 can be used, which effectively disables
sleep
-commands in the test case.
-.TP 3n
-\(bu
+commands in the test case\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: socket option
+.\" socket option: mysqltest
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
The socket file to use when connecting to
localhost
-(which is the default host).
-.TP 3n
-\(bu
+(which is the default host)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: sp-protocol option
+.\" sp-protocol option: mysqltest
\fB\-\-sp\-protocol\fR
.sp
-Execute DML statements within a stored procedure. For every DML statement,
+Execute DML statements within a stored procedure\&. For every DML statement,
\fBmysqltest\fR
-creates and invokes a stored procedure that executes the statement rather than executing the statement directly. This option was added in MySQL 5.0.19.
-.TP 3n
-\(bu
+creates and invokes a stored procedure that executes the statement rather than executing the statement directly\&. This option was added in MySQL 5\&.0\&.19\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: test-file option
+.\" test-file option: mysqltest
\fB\-\-test\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-x \fR\fB\fIfile_name\fR\fR
.sp
-Read test input from this file. The default is to read from the standard input.
-.TP 3n
-\(bu
+Read test input from this file\&. The default is to read from the standard input\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: timer-file option
+.\" timer-file option: mysqltest
\fB\-\-timer\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-m \fR\fB\fIfile_name\fR\fR
.sp
-The file where the timing in microseconds is written.
-.TP 3n
-\(bu
+The file where the timing in microseconds is written\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: tmpdir option
+.\" tmpdir option: mysqltest
\fB\-\-tmpdir=\fR\fB\fIdir_name\fR\fR,
\fB\-t \fR\fB\fIdir_name\fR\fR
.sp
-The temporary directory where socket files are put.
-.TP 3n
-\(bu
+The temporary directory where socket files are put\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: user option
+.\" user option: mysqltest
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: verbose option
+.\" verbose option: mysqltest
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print out more information what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print out more information what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: version option
+.\" version option: mysqltest
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: view-protocol option
+.\" view-protocol option: mysqltest
\fB\-\-view\-protocol\fR
.sp
Every
SELECT
-statement is wrapped inside a view. This option was added in MySQL 5.0.19.
+statement is wrapped inside a view\&. This option was added in MySQL 5\&.0\&.19\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/ndbd.8'
--- a/man/ndbd.8 2009-05-25 09:59:47 +0000
+++ b/man/ndbd.8 2009-09-16 12:03:18 +0000
@@ -1,174 +1,841 @@
+'\" t
.\" Title: \fBndbd\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBNDBD\fR" "8" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBNDBD\FR" "8" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" ndbd
+.\" MySQL Cluster: ndbd
+.\" MySQL Cluster: data nodes
+.\" data nodes (MySQL Cluster)
+.\" storage nodes - see data nodes, ndbd
.SH "NAME"
-ndbd \- the storage engine node process
+ndbd \- the MySQL Cluster data node daemon
.SH "SYNOPSIS"
-.HP 13
+.HP \w'\fBndbd\ \fR\fB\fIoptions\fR\fR\ 'u
\fBndbd \fR\fB\fIoptions\fR\fR
.SH "DESCRIPTION"
.PP
\fBndbd\fR
-is the process that is used to handle all the data in tables using the NDB Cluster storage engine. This is the process that empowers a data node to accomplish distributed transaction handling, node recovery, checkpointing to disk, online backup, and related tasks.
+is the process that is used to handle all the data in tables using the NDB Cluster storage engine\&. This is the process that empowers a data node to accomplish distributed transaction handling, node recovery, checkpointing to disk, online backup, and related tasks\&.
.PP
In a MySQL Cluster, a set of
\fBndbd\fR
-processes cooperate in handling data. These processes can execute on the same computer (host) or on different computers. The correspondences between data nodes and Cluster hosts is completely configurable.
+processes cooperate in handling data\&. These processes can execute on the same computer (host) or on different computers\&. The correspondences between data nodes and Cluster hosts is completely configurable\&.
+.\" MySQL Cluster: administration
+.\" MySQL Cluster: commands
+.\" command options (MySQL Cluster): ndbd
+.\" MySQL Cluster: ndbd process
+.PP
+The following list describes command options specific to the MySQL Cluster data node program
+\fBndbd\fR\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBNote\fR
+.ps -1
+.br
+.PP
+All of these options also apply to the multi\-threaded version of this program \(em
+\fBndbmtd\fR, which is available in MySQL Cluster NDB 7\&.0 \(em and you may substitute
+\(lq\fBndbmtd\fR\(rq
+for
+\(lq\fBndbd\fR\(rq
+wherever the latter occurs in this section\&.
+.sp .5v
+.RE
+.PP
+For options common to all
+NDBCLUSTER
+programs, see
+Section\ \&17.6.2, \(lqOptions Common to MySQL Cluster Programs\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-\-bind\-address\fR
+.TS
+allbox tab(:);
+l l
+l l
+l l.
+T{
+\fBVersion Introduced\fR
+T}:T{
+5\&.1\&.12
+T}
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-bind\-address=name
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+string
+T}
+T{
+\fBDefault\fR
+T}:T{
+T}
+.TE
+.sp 1
+Causes
+\fBndbd\fR
+to bind to a specific network interface (host name or IP address)\&. This option has no default value\&.
+.sp
+This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-\-daemon\fR,
+\fB\-d\fR
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-daemon
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+TRUE
+T}
+.TE
+.sp 1
+Instructs
+\fBndbd\fR
+to execute as a daemon process\&. This is the default behavior\&.
+\fB\-\-nodaemon\fR
+can be used to prevent the process from running as a daemon\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --initial option (ndbd)
+.\" --initial option (ndbmtd)
+\fB\-\-initial\fR
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-initial
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+Instructs
+\fBndbd\fR
+to perform an initial start\&. An initial start erases any files created for recovery purposes by earlier instances of
+\fBndbd\fR\&. It also re\-creates recovery log files\&. Note that on some operating systems this process can take a substantial amount of time\&.
+.sp
+An
+\fB\-\-initial\fR
+start is to be used
+\fIonly\fR
+when starting the
+\fBndbd\fR
+process under very special circumstances; this is because this option causes all files to be removed from the Cluster file system and all redo log files to be re\-created\&. These circumstances are listed here:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+When performing a software upgrade which has changed the contents of any files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+When restarting the node with a new version of
+\fBndbd\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+As a measure of last resort when for some reason the node restart or system restart repeatedly fails\&. In this case, be aware that this node can no longer be used to restore data due to the destruction of the data files\&.
+.RE
+.RS 4
+Use of this option prevents the
+StartPartialTimeout
+and
+StartPartitionedTimeout
+configuration parameters from having any effect\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBImportant\fR
+.ps -1
+.br
+This option does
+\fInot\fR
+affect either of the following:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Backup files that have already been created by the affected node
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+MySQL Cluster Disk Data files (see
+Section\ \&17.10, \(lqMySQL Cluster Disk Data Tables\(rq)\&.
+.RE
+.RS 4
+.sp .5v
+.RE
+It is permissible to use this option when starting the cluster for the very first time (that is, before any data node files have been created); however, it is
+\fInot\fR
+necessary to do so\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --initial-start option (ndbd)
+.\" --initial-start option (ndbmtd)
+\fB\-\-initial\-start\fR
+.TS
+allbox tab(:);
+l l
+l l
+l l.
+T{
+\fBVersion Introduced\fR
+T}:T{
+5\&.1\&.11
+T}
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-initial\-start
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+This option is used when performing a partial initial start of the cluster\&. Each node should be started with this option, as well as
+\fB\-\-nowait\-nodes\fR\&.
+.sp
+For example, suppose you have a 4\-node cluster whose data nodes have the IDs 2, 3, 4, and 5, and you wish to perform a partial initial start using only nodes 2, 4, and 5 \(em that is, omitting node 3:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ndbd \-\-ndbd\-nodeid=2 \-\-nowait\-nodes=3 \-\-initial\-start
+ndbd \-\-ndbd\-nodeid=4 \-\-nowait\-nodes=3 \-\-initial\-start
+ndbd \-\-ndbd\-nodeid=5 \-\-nowait\-nodes=3 \-\-initial\-start
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+This option was added in MySQL 5\&.1\&.11\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBImportant\fR
+.ps -1
+.br
+Prior to MySQL 5\&.1\&.19, it was not possible to perform DDL operations involving Disk Data tables on a partially started cluster\&. (See
+\m[blue]\fBBug#24631\fR\m[]\&\s-2\u[1]\d\s+2\&.)
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --nowait-nodes option (ndbd)
+.\" --nowait-nodes option (ndbmtd)
+\fB\-\-nowait\-nodes=\fR\fB\fInode_id_1\fR\fR\fB[, \fR\fB\fInode_id_2\fR\fR\fB[, \&.\&.\&.]]\fR
+.TS
+allbox tab(:);
+l l
+l l
+l l.
+T{
+\fBVersion Introduced\fR
+T}:T{
+5\&.1\&.11
+T}
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-nowait\-nodes=list
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+string
+T}
+T{
+\fBDefault\fR
+T}:T{
+T}
+.TE
+.sp 1
+This option takes a list of data nodes which for which the cluster will not wait for before starting\&.
+.sp
+This can be used to start the cluster in a partitioned state\&. For example, to start the cluster with only half of the data nodes (nodes 2, 3, 4, and 5) running in a 4\-node cluster, you can start each
+\fBndbd\fR
+process with
+\fB\-\-nowait\-nodes=3,5\fR\&. In this case, the cluster starts as soon as nodes 2 and 4 connect, and does
+\fInot\fR
+wait
+StartPartitionedTimeout
+milliseconds for nodes 3 and 5 to connect as it would otherwise\&.
+.sp
+If you wanted to start up the same cluster as in the previous example without one
+\fBndbd\fR
+\(em say, for example, that the host machine for node 3 has suffered a hardware failure \(em then start nodes 2, 4, and 5 with
+\fB\-\-nowait\-nodes=3\fR\&. Then the cluster will start as soon as nodes 2, 4, and 5 connect and will not wait for node 3 to start\&.
+.sp
+This option was added in MySQL 5\&.1\&.9\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --nodaemon option (ndbd)
+.\" --nodaemon option (ndbmtd)
+\fB\-\-nodaemon\fR
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-nodaemon
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+Instructs
+\fBndbd\fR
+not to start as a daemon process\&. This is useful when
+\fBndbd\fR
+is being debugged and you want output to be redirected to the screen\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --nostart option (ndbd)
+.\" -n option (ndbd)
+.\" --nostart option (ndbmtd)
+.\" -n option (ndbmtd)
+\fB\-\-nostart\fR,
+\fB\-n\fR
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-nostart
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+Instructs
+\fBndbd\fR
+not to start automatically\&. When this option is used,
+\fBndbd\fR
+connects to the management server, obtains configuration data from it, and initializes communication objects\&. However, it does not actually start the execution engine until specifically requested to do so by the management server\&. This can be accomplished by issuing the proper
+START
+command in the management client (see
+Section\ \&17.7.2, \(lqCommands in the MySQL Cluster Management Client\(rq)\&.
+.RE
+.\" MySQL Cluster: log files
+.\" log files (MySQL Cluster)
.PP
\fBndbd\fR
generates a set of log files which are placed in the directory specified by
DataDir
in the
-\fIconfig.ini\fR
-configuration file.
+config\&.ini
+configuration file\&.
.PP
-These log files are listed below.
+These log files are listed below\&.
\fInode_id\fR
-is the node's unique identifier. Note that
+is the node\'s unique identifier\&. Note that
\fInode_id\fR
-represents the node's unique identifier. For example,
-\fIndb_2_error.log\fR
+represents the node\'s unique identifier\&. For example,
+ndb_2_error\&.log
is the error log generated by the data node whose node ID is
-2.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_error.log\fR
+2\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" MySQL Cluster: error logs
+.\" error logs (MySQL Cluster)
+ndb_\fInode_id\fR_error\&.log
is a file containing records of all crashes which the referenced
\fBndbd\fR
-process has encountered. Each record in this file contains a brief error string and a reference to a trace file for this crash. A typical entry in this file might appear as shown here:
+process has encountered\&. Each record in this file contains a brief error string and a reference to a trace file for this crash\&. A typical entry in this file might appear as shown here:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
Date/Time: Saturday 30 July 2004 \- 00:20:01
Type of error: error
Message: Internal program error (failed ndbrequire)
Fault ID: 2341
-Problem data: DbtupFixAlloc.cpp
+Problem data: DbtupFixAlloc\&.cpp
Object of reference: DBTUP (Line: 173)
ProgramName: NDB Kernel
ProcessID: 14909
-TraceFile: ndb_2_trace.log.2
+TraceFile: ndb_2_trace\&.log\&.2
***EOM***
.fi
+.if n \{\
.RE
+.\}
+.sp
Listings of possible
\fBndbd\fR
exit codes and messages generated when a data node process shuts down prematurely can be found in
-[1]\&\fIndbd Error Messages\fR.
+\m[blue]\fBndbd Error Messages\fR\m[]\&\s-2\u[2]\d\s+2\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
\fIThe last entry in the error log file is not necessarily the newest one\fR
-(nor is it likely to be). Entries in the error log are
+(nor is it likely to be)\&. Entries in the error log are
\fInot\fR
listed in chronological order; rather, they correspond to the order of the trace files as determined in the
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_trace.log.next\fR
-file (see below). Error log entries are thus overwritten in a cyclical and not sequential fashion.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_trace.log.\fR\fI\fItrace_id\fR\fR
-is a trace file describing exactly what happened just before the error occurred. This information is useful for analysis by the MySQL Cluster development team.
+ndb_\fInode_id\fR_trace\&.log\&.next
+file (see below)\&. Error log entries are thus overwritten in a cyclical and not sequential fashion\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" MySQL Cluster: trace files
+.\" trace files (MySQL Cluster)
+ndb_\fInode_id\fR_trace\&.log\&.\fItrace_id\fR
+is a trace file describing exactly what happened just before the error occurred\&. This information is useful for analysis by the MySQL Cluster development team\&.
.sp
-It is possible to configure the number of these trace files that will be created before old files are overwritten.
+It is possible to configure the number of these trace files that will be created before old files are overwritten\&.
\fItrace_id\fR
-is a number which is incremented for each successive trace file.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_trace.log.next\fR
-is the file that keeps track of the next trace file number to be assigned.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_out.log\fR
+is a number which is incremented for each successive trace file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+ndb_\fInode_id\fR_trace\&.log\&.next
+is the file that keeps track of the next trace file number to be assigned\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+ndb_\fInode_id\fR_out\&.log
is a file containing any data output by the
\fBndbd\fR
-process. This file is created only if
+process\&. This file is created only if
\fBndbd\fR
-is started as a daemon, which is the default behavior.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI.pid\fR
+is started as a daemon, which is the default behavior\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+ndb_\fInode_id\fR\&.pid
is a file containing the process ID of the
\fBndbd\fR
-process when started as a daemon. It also functions as a lock file to avoid the starting of nodes with the same identifier.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_signal.log\fR
+process when started as a daemon\&. It also functions as a lock file to avoid the starting of nodes with the same identifier\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+ndb_\fInode_id\fR_signal\&.log
is a file used only in debug versions of
\fBndbd\fR, where it is possible to trace all incoming, outgoing, and internal messages with their data in the
\fBndbd\fR
-process.
-.sp
+process\&.
.RE
.PP
It is recommended not to use a directory mounted through NFS because in some environments this can cause problems whereby the lock on the
-\fI.pid\fR
-file remains in effect even after the process has terminated.
+\&.pid
+file remains in effect even after the process has terminated\&.
.PP
To start
-\fBndbd\fR, it may also be necessary to specify the host name of the management server and the port on which it is listening. Optionally, one may also specify the node ID that the process is to use.
+\fBndbd\fR, it may also be necessary to specify the host name of the management server and the port on which it is listening\&. Optionally, one may also specify the node ID that the process is to use\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBndbd \-\-connect\-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"\fR
+shell> \fBndbd \-\-connect\-string="nodeid=2;host=ndb_mgmd\&.mysql\&.com:1186"\fR
.fi
+.if n \{\
.RE
+.\}
.PP
See
-Section\ 17.3.4.3, \(lqThe MySQL Cluster Connectstring\(rq, for additional information about this issue.
-Section\ 17.6.2, \(lqCommand Options for MySQL Cluster Processes\(rq, describes other options for
-\fBndbd\fR.
+Section\ \&17.3.4.3, \(lqThe MySQL Cluster Connectstring\(rq, for additional information about this issue\&.
+\fBndbd\fR(8), describes other options for
+\fBndbd\fR\&.
.PP
When
\fBndbd\fR
-starts, it actually initiates two processes. The first of these is called the
+starts, it actually initiates two processes\&. The first of these is called the
\(lqangel process\(rq; its only job is to discover when the execution process has been completed, and then to restart the
\fBndbd\fR
-process if it is configured to do so. Thus, if you attempt to kill
+process if it is configured to do so\&. Thus, if you attempt to kill
\fBndbd\fR
via the Unix
\fBkill\fR
-command, it is necessary to kill both processes, beginning with the angel process. The preferred method of terminating an
+command, it is necessary to kill both processes, beginning with the angel process\&. The preferred method of terminating an
\fBndbd\fR
-process is to use the management client and stop the process from there.
+process is to use the management client and stop the process from there\&.
.PP
-The execution process uses one thread for reading, writing, and scanning data, as well as all other activities. This thread is implemented asynchronously so that it can easily handle thousands of concurrent actions. In addition, a watch\-dog thread supervises the execution thread to make sure that it does not hang in an endless loop. A pool of threads handles file I/O, with each thread able to handle one open file. Threads can also be used for transporter connections by the transporters in the
+The execution process uses one thread for reading, writing, and scanning data, as well as all other activities\&. This thread is implemented asynchronously so that it can easily handle thousands of concurrent actions\&. In addition, a watch\-dog thread supervises the execution thread to make sure that it does not hang in an endless loop\&. A pool of threads handles file I/O, with each thread able to handle one open file\&. Threads can also be used for transporter connections by the transporters in the
\fBndbd\fR
-process. In a multi\-processor system performing a large number of operations (including updates), the
+process\&. In a multi\-processor system performing a large number of operations (including updates), the
\fBndbd\fR
-process can consume up to 2 CPUs if permitted to do so.
+process can consume up to 2 CPUs if permitted to do so\&.
.PP
For a machine with many CPUs it is possible to use several
\fBndbd\fR
-processes which belong to different node groups; however, such a configuration is still considered experimental and is not supported for MySQL 5.1 in a production setting. See
-Section\ 17.13, \(lqKnown Limitations of MySQL Cluster\(rq.
+processes which belong to different node groups; however, such a configuration is still considered experimental and is not supported for MySQL 5\&.1 in a production setting\&. See
+Section\ \&17.12, \(lqKnown Limitations of MySQL Cluster\(rq\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ ndbd Error Messages
-\%http://dev.mysql.com/doc/ndbapi/en/ndbd\-error\-messages.html
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#24631
+.RS 4
+\%http://bugs.mysql.com/24631
+.RE
+.IP " 2." 4
+ndbd Error Messages
+.RS 4
+\%http://dev.mysql.com/doc/ndbapi/en/ndbd-error-messages.html
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/ndbd_redo_log_reader.1'
--- a/man/ndbd_redo_log_reader.1 2009-05-25 09:59:47 +0000
+++ b/man/ndbd_redo_log_reader.1 2009-09-16 12:03:18 +0000
@@ -1,57 +1,162 @@
+'\" t
.\" Title: \fBndbd_redo_log_reader\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBNDBD_REDO_LOG_REA" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBNDBD_REDO_LOG_REA" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" ndbd_redo_log_reader
.SH "NAME"
ndbd_redo_log_reader \- check and print content of cluster redo log
.SH "SYNOPSIS"
-.HP 41
+.HP \w'\fBndbd_redo_log_reader\ \fR\fB\fIfile_name\fR\fR\fB\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBndbd_redo_log_reader \fR\fB\fIfile_name\fR\fR\fB [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
-Reads a redo log file, checking it for errors, printing its contents in a human\-readable format, or both.
+Reads a redo log file, checking it for errors, printing its contents in a human\-readable format, or both\&.
\fBndbd_redo_log_reader\fR
-is intended for use primarily by MySQL developers and support personnel in debugging and diagnosing problems.
+is intended for use primarily by MySQL developers and support personnel in debugging and diagnosing problems\&.
.PP
-This utility was made available as part of default builds beginning with MySQL Cluster NDB 6.1.3. It remains under development, and its syntax and behavior are subject to change in future releases. For this reason, it should be considered experimental at this time.
+This utility was made available as part of default builds beginning with MySQL Cluster NDB 6\&.1\&.3\&. It remains under development, and its syntax and behavior are subject to change in future releases\&. For this reason, it should be considered experimental at this time\&.
.PP
The C++ source files for
\fBndbd_redo_log_reader\fR
can be found in the directory
-\fI/storage/ndb/src/kernel/blocks/dblqh/redoLogReader\fR.
+/storage/ndb/src/kernel/blocks/dblqh/redoLogReader\&.
.PP
\fBUsage\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
ndbd_redo_log_reader \fIfile_name\fR [\fIoptions\fR]
.fi
+.if n \{\
.RE
+.\}
.PP
\fIfile_name\fR
-is the name of a cluster REDO log file. REDO log files are located in the numbered directories under the data node's data directory (DataDir); the path under this directory to the REDO log files matches the pattern
-\fIndb_\fR\fI\fI#\fR\fR\fI_fs/D\fR\fI\fI#\fR\fR\fI/LCP/\fR\fI\fI#\fR\fR\fI/T\fR\fI\fI#\fR\fR\fIF\fR\fI\fI#\fR\fR\fI.Data\fR. In each case, the
+is the name of a cluster REDO log file\&. REDO log files are located in the numbered directories under the data node\'s data directory (DataDir); the path under this directory to the REDO log files matches the pattern
+ndb_\fI#\fR_fs/D\fI#\fR/LCP/\fI#\fR/T\fI#\fRF\fI#\fR\&.Data\&. In each case, the
\fI#\fR
-represents a number (not necessarily the same number). For more information, see
-[1]\&\fICluster Data Node FileSystemDir Files\fR.
+represents a number (not necessarily the same number)\&. For more information, see
+\m[blue]\fBCluster Data Node FileSystemDir Files\fR\m[]\&\s-2\u[1]\d\s+2\&.
.PP
\fBAdditional Options\fR:
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-noprint
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-nocheck
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
.PP
The name of the file to be read may be followed by one or more of the options listed here:
-.TP 3n
-\(bu
-\fB\-noprint\fR: Do not print the contents of the log file.
-.TP 3n
-\(bu
-\fB\-nocheck\fR: Do not check the log filre for errors.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-noprint\fR: Do not print the contents of the log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-nocheck\fR: Do not check the log file for errors\&.
+.RE
.sp
.RE
.PP
@@ -63,23 +168,27 @@ and
NDB
utilities that are intended to be run on a management server host or to connect to a management server)
\fBndbd_redo_log_reader\fR
-must be run on a cluster data node, since it accesses the data node file system directly. Because it does not make use of the management server, this utility can be used when the management server is not running, and even when the cluster has been completely shut down.
+must be run on a cluster data node, since it accesses the data node file system directly\&. Because it does not make use of the management server, this utility can be used when the management server is not running, and even when the cluster has been completely shut down\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ Cluster Data Node FileSystemDir Files
-\%http://dev.mysql.com/doc/ndbapi/en/ndb\-internals\-ndbd\-filesystem.html#ndb\-internals\-ndbd\-filesystemdir\-files
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Cluster Data Node FileSystemDir Files
+.RS 4
+\%http://dev.mysql.com/doc/ndbapi/en/ndb-internals-ndbd-filesystem.html#ndb-internals-ndbd-filesystemdir-files
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/ndbmtd.8'
--- a/man/ndbmtd.8 2009-05-25 09:59:47 +0000
+++ b/man/ndbmtd.8 2009-09-16 12:03:18 +0000
@@ -1,19 +1,32 @@
+'\" t
.\" Title: \fBndbmtd\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBNDBMTD\fR" "8" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBNDBMTD\FR" "8" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" ndbmtd
+.\" MySQL Cluster: ndbmtd
+.\" MySQL Cluster: data nodes
+.\" data nodes (MySQL Cluster)
+.\" storage nodes - see data nodes, ndbd, ndbmtd
.SH "NAME"
-ndbmtd \- the MySQL Cluster storage engine node process (multi\-threaded version)
+ndbmtd \- the MySQL Cluster data node daemon (multi\-threaded version)
.SH "SYNOPSIS"
-.HP 15
+.HP \w'\fBndbmtd\ \fR\fB\fIoptions\fR\fR\ 'u
\fBndbmtd \fR\fB\fIoptions\fR\fR
.SH "DESCRIPTION"
.PP
@@ -21,84 +34,121 @@ ndbmtd \- the MySQL Cluster storage engi
is a multi\-threaded version of
\fBndbd\fR, the process that is used to handle all the data in tables using the
NDBCLUSTER
-storage engine.
+storage engine\&.
\fBndbmtd\fR
-is intended for use on host computers having multiple CPU cores. Except where otherwise noted,
+is intended for use on host computers having multiple CPU cores\&. Except where otherwise noted,
\fBndbmtd\fR
functions in the same way as
\fBndbd\fR; therefore, in this section, we concentrate on the ways in which
\fBndbmtd\fR
differs from
\fBndbd\fR, and you should consult
-\fBndbd\fR(8), for additional information about running MySQL Cluster data nodes that apply to both the single\-threaded and multi\-threaded versions of the data node process.
+\fBndbd\fR(8), for additional information about running MySQL Cluster data nodes that apply to both the single\-threaded and multi\-threaded versions of the data node process\&.
.PP
Command\-line options and configuration parameters used with
\fBndbd\fR
also apply to
-\fBndbmtd\fR. For more information about these options and parameters, see
-Section\ 17.6.2.1, \(lqCommand Options for \fBndbd\fR and \fBndbmtd\fR\(rq, and
-Section\ 17.3.4.6, \(lqDefining MySQL Cluster Data Nodes\(rq, respectively.
+\fBndbmtd\fR\&. For more information about these options and parameters, see
+Section\ \&17.6.3.2, \(lqProgram Options for ndbd and ndbmtd\(rq, and
+Section\ \&17.3.4.6, \(lqDefining MySQL Cluster Data Nodes\(rq, respectively\&.
.PP
\fBndbmtd\fR
is also file system\-compatible with
-\fBndbd\fR. In other words, a data node running
+\fBndbd\fR\&. In other words, a data node running
\fBndbd\fR
can be stopped, the binary replaced with
-\fBndbmtd\fR, and then restarted without any loss of data. (However, when doing this, you must make sure that
+\fBndbmtd\fR, and then restarted without any loss of data\&. (However, when doing this, you must make sure that
MaxNoOfExecutionThreads
is set to an apppriate value before restarting the node if you wish for
\fBndbmtd\fR
-to run in multi\-threaded fashion.) Similarly, an
+to run in multi\-threaded fashion\&.) Similarly, an
\fBndbmtd\fR
binary can be replaced with
\fBndbd\fR
simply by stopping the node and then starting
\fBndbd\fR
-in place of the multi\-threaded binary. It is not necessary when switching between the two to start the data node binary using
-\fB\-\-initial\fR.
+in place of the multi\-threaded binary\&. It is not necessary when switching between the two to start the data node binary using
+\fB\-\-initial\fR\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBImportant\fR
+.ps -1
+.br
+.PP
+We do not currently recommend using
+\fBndbmtd\fR
+with MySQL Cluster Disk Data tables in production, due to known issues which we are working to fix in a future MySQL Cluster release\&. (\m[blue]\fBBug#41915\fR\m[]\&\s-2\u[1]\d\s+2,
+\m[blue]\fBBug#44915\fR\m[]\&\s-2\u[2]\d\s+2)
+.sp .5v
+.RE
.PP
Using
\fBndbmtd\fR
differs from using
\fBndbd\fR
in two key respects:
-.TP 3n
-1.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
You must set an appropriate value for the
MaxNoOfExecutionThreads
configuration parameter in the
-\fIconfig.ini\fR
-file. If you do not do so,
+config\&.ini
+file\&. If you do not do so,
\fBndbmtd\fR
runs in single\-threaded mode \(em that is, it behaves like
-\fBndbd\fR.
-.TP 3n
-2.
+\fBndbd\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
Trace files are generated by critical errors in
\fBndbmtd\fR
processes in a somewhat different fashion from how these are generated by
\fBndbd\fR
-failures.
-.sp
+failures\&.
.RE
.PP
-These differences are discussed in more detail in the next few paragraphs.
+These differences are discussed in more detail in the next few paragraphs\&.
+.\" ndbmtd: MaxNoOfExecutionThreads
+.\" MaxNoOfExecutionThreads: ndbmtd
+.\" ndbmtd: trace files
+.\" trace files: ndbmtd
.PP
\fBNumber of execution threads\fR. The
MaxNoOfExecutionThreads
configuration parameter is used to determine the number of local query handler (LQH) threads spawned by
-\fBndbmtd\fR. Although this parameter is set in
+\fBndbmtd\fR\&. Although this parameter is set in
[ndbd]
or
[ndbd default]
sections of the
-\fIconfig.ini\fR
+config\&.ini
file, it is exclusive to
\fBndbmtd\fR
and does not apply to
-\fBndbd\fR.
+\fBndbd\fR\&.
.PP
-This parameter takes an integer value from 2 to 8 inclusive. Generally, you should set this to the number of CPU cores on the data node host, as shown in the following table:
+This parameter takes an integer value from 2 to 8 inclusive\&. Generally, you should set this to the number of CPU cores on the data node host, as shown in the following table:
.TS
allbox tab(:);
lB lB.
@@ -127,26 +177,56 @@ T}:T{
8
T}
.TE
-.sp
+.sp 1
.PP
(It is possible to set this parameter to other values within the permitted range, but these are automatically rounded as shown in the
\fBValue Used\fR
-column of the next table in this section.)
+column of the next table in this section\&.)
.PP
The multi\-threaded data node process always spawns at least 4 threads:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
1 local query handler (LQH) thread
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
1 transaction coordinator (TC) thread
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
1 transporter thread
-.TP 3n
-\(bu
-1 subscription manager (SUMA) thread
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+1 subscription manager (SUMA) thread
.RE
.PP
Setting this parameter to a value between 4 and 8 inclusive causes additional LQH threads to be used by
@@ -156,7 +236,7 @@ Setting this parameter to a value betwee
allbox tab(:);
lB lB lB.
T{
-\fIconfig.ini\fR Value
+config\&.ini Value
T}:T{
Value Used
T}:T{
@@ -188,30 +268,41 @@ T}:T{
4
T}
.TE
-.sp
+.sp 1
.PP
Setting this parameter outside the permitted range of values causes the management server to abort on startup with the error
-Error line \fInumber\fR: Illegal value \fIvalue\fR for parameter MaxNoOfExecutionThreads.
+Error line \fInumber\fR: Illegal value \fIvalue\fR for parameter MaxNoOfExecutionThreads\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-In MySQL Cluster NDB 6.4.0, it is not possible to set
+In MySQL Cluster NDB 6\&.4\&.0, it is not possible to set
MaxNoOfExecutionThreads
-to 2. You can safely use the value 3 instead (it is treated as 2 internally). This issue is resolved in MySQL Cluster NDB 6.4.1.
+to 2\&. You can safely use the value 3 instead (it is treated as 2 internally)\&. This issue is resolved in MySQL Cluster NDB 6\&.4\&.1\&.
+.sp .5v
+.RE
.PP
-In MySQL Cluster NDB 6.4.0 through 6.4.3, the default value for this parameter was undefined, although the default behavior for
+In MySQL Cluster NDB 6\&.4\&.0 through 6\&.4\&.3, the default value for this parameter was undefined, although the default behavior for
\fBndbmtd\fR
was to use 1 LQH thread, as though
MaxNoOfExecutionThreads
-had been set to 2. Beginning with MySQL Cluster NDB 7.0.4, this parameter has an explcit default value of 2, thus guaranteeing this default behavior.
+had been set to 2\&. Beginning with MySQL Cluster NDB 7\&.0\&.4, this parameter has an explcit default value of 2, thus guaranteeing this default behavior\&.
.PP
-In MySQL Cluster NDB 7.0, it is not possible to cause
+In MySQL Cluster NDB 7\&.0, it is not possible to cause
\fBndbmtd\fR
-to use more than 1 TC thread, although we plan to introduce this capability in a future MySQL Cluster release series.
+to use more than 1 TC thread, although we plan to introduce this capability in a future MySQL Cluster release series\&.
+.\" MySQL Cluster: log files
+.\" log files (MySQL Cluster): ndbmtd
+.\" ndbmtd: trace files
.PP
Like
\fBndbd\fR,
@@ -219,67 +310,89 @@ Like
generates a set of log files which are placed in the directory specified by
DataDir
in the
-\fIconfig.ini\fR
-configuration file. Except for trace files, these are generated in the same way and have the same names as those generated by
-\fBndbd\fR.
+config\&.ini
+configuration file\&. Except for trace files, these are generated in the same way and have the same names as those generated by
+\fBndbd\fR\&.
.PP
In the event of a critical error,
\fBndbmtd\fR
-generates trace files describing what happened just prior to the error' occurrence. These files, which can be found in the data node's
-DataDir, are useful for analysis of problems by the MySQL Cluster Development and Support teams. One trace file is generated for each
+generates trace files describing what happened just prior to the error\' occurrence\&. These files, which can be found in the data node\'s
+DataDir, are useful for analysis of problems by the MySQL Cluster Development and Support teams\&. One trace file is generated for each
\fBndbmtd\fR
-thread. The names of these files follow the pattern
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_trace.log.\fR\fI\fItrace_id\fR\fR\fI_t\fR\fI\fIthread_id\fR\fR, where
+thread\&. The names of these files follow the pattern
+ndb_\fInode_id\fR_trace\&.log\&.\fItrace_id\fR_t\fIthread_id\fR, where
\fInode_id\fR
-is the data node's unique node ID in the cluster,
+is the data node\'s unique node ID in the cluster,
\fItrace_id\fR
is a trace sequence number, and
\fIthread_id\fR
-is the thread ID. For example, in the event of the failure of an
+is the thread ID\&. For example, in the event of the failure of an
\fBndbmtd\fR
process running as a MySQL Cluster data node having the node ID 3 and with
MaxNoOfExecutionThreads
-equal to 4, four trace files are generated in the data node's data directory; if the is the first time this node has failed, then these files are named
-\fIndb_3_trace.log.1_t1\fR,
-\fIndb_3_trace.log.1_t2\fR,
-\fIndb_3_trace.log.1_t3\fR, and
-\fIndb_3_trace.log.1_t4\fR. Internally, these trace files follow the same format as
+equal to 4, four trace files are generated in the data node\'s data directory; if the is the first time this node has failed, then these files are named
+ndb_3_trace\&.log\&.1_t1,
+ndb_3_trace\&.log\&.1_t2,
+ndb_3_trace\&.log\&.1_t3, and
+ndb_3_trace\&.log\&.1_t4\&. Internally, these trace files follow the same format as
\fBndbd\fR
-trace files.
+trace files\&.
.PP
The
\fBndbd\fR
exit codes and messages that are generated when a data node process shuts down prematurely are also used by
-\fBndbmtd\fR. See
-[1]\&\fIndbd Error Messages\fR, for a listing of these.
+\fBndbmtd\fR\&. See
+\m[blue]\fBndbd Error Messages\fR\m[]\&\s-2\u[3]\d\s+2, for a listing of these\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
It is possible to use
\fBndbd\fR
and
\fBndbmtd\fR
-concurrently on different data nodes in the same MySQL Cluster. However, such configurations have not been tested extensively; thus, we cannot not recommend doing so in a production setting at this time.
+concurrently on different data nodes in the same MySQL Cluster\&. However, such configurations have not been tested extensively; thus, we cannot not recommend doing so in a production setting at this time\&.
+.sp .5v
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ ndbd Error Messages
-\%http://dev.mysql.com/doc/ndbapi/en/ndbd\-error\-messages.html
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#41915
+.RS 4
+\%http://bugs.mysql.com/41915
+.RE
+.IP " 2." 4
+Bug#44915
+.RS 4
+\%http://bugs.mysql.com/44915
+.RE
+.IP " 3." 4
+ndbd Error Messages
+.RS 4
+\%http://dev.mysql.com/doc/ndbapi/en/ndbd-error-messages.html
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/perror.1'
--- a/man/perror.1 2009-05-25 09:59:47 +0000
+++ b/man/perror.1 2009-09-16 12:03:18 +0000
@@ -1,57 +1,81 @@
+'\" t
.\" Title: \fBperror\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBPERROR\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBPERROR\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" perror
+.\" error messages: displaying
+.\" errno
+.\" Errcode
.SH "NAME"
perror \- explain error codes
.SH "SYNOPSIS"
-.HP 31
-\fBperror [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIerrorcode\fR\fR\fB ...\fR
+.HP \w'\fBperror\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIerrorcode\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBperror [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIerrorcode\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
For most system errors, MySQL displays, in addition to an internal text message, the system error code in one of the following styles:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-message ... (errno: #)
-message ... (Errcode: #)
+message \&.\&.\&. (errno: #)
+message \&.\&.\&. (Errcode: #)
.fi
+.if n \{\
.RE
+.\}
.PP
You can find out what the error code means by examining the documentation for your system or by using the
\fBperror\fR
-utility.
+utility\&.
.PP
\fBperror\fR
-prints a description for a system error code or for a storage engine (table handler) error code.
+prints a description for a system error code or for a storage engine (table handler) error code\&.
.PP
Invoke
\fBperror\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBperror [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIerrorcode\fR\fR\fB ...\fR
+shell> \fBperror [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIerrorcode\fR\fR\fB \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBperror 13 64\fR
OS error code 13: Permission denied
OS error code 64: Machine is not on the network
.fi
+.if n \{\
.RE
+.\}
.PP
To obtain the error message for a MySQL Cluster error code, invoke
\fBperror\fR
@@ -59,59 +83,115 @@ with the
\fB\-\-ndb\fR
option:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBperror \-\-ndb \fR\fB\fIerrorcode\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Note that the meaning of system error messages may be dependent on your operating system. A given error code may mean different things on different operating systems.
+Note that the meaning of system error messages may be dependent on your operating system\&. A given error code may mean different things on different operating systems\&.
.PP
\fBperror\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: help option
+.\" help option: perror
\fB\-\-help\fR,
\fB\-\-info\fR,
\fB\-I\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: ndb option
+.\" ndb option: perror
\fB\-\-ndb\fR
.sp
-Print the error message for a MySQL Cluster error code.
-.TP 3n
-\(bu
+Print the error message for a MySQL Cluster error code\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: silent option
+.\" silent option: perror
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Print only the error message.
-.TP 3n
-\(bu
+Silent mode\&. Print only the error message\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: verbose option
+.\" verbose option: perror
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print error code and message. This is the default behavior.
-.TP 3n
-\(bu
+Verbose mode\&. Print error code and message\&. This is the default behavior\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: version option
+.\" version option: perror
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/replace.1'
--- a/man/replace.1 2009-05-25 09:59:47 +0000
+++ b/man/replace.1 2009-09-16 12:03:18 +0000
@@ -1,116 +1,176 @@
+'\" t
.\" Title: \fBreplace\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBREPLACE\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBREPLACE\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" replace utility
+.\" string replacement: replace utility
.SH "NAME"
replace \- a string\-replacement utility
.SH "SYNOPSIS"
-.HP 18
+.HP \w'\fBreplace\ \fR\fB\fIarguments\fR\fR\ 'u
\fBreplace \fR\fB\fIarguments\fR\fR
.SH "DESCRIPTION"
.PP
The
\fBreplace\fR
-utility program changes strings in place in files or on the standard input.
+utility program changes strings in place in files or on the standard input\&.
.PP
Invoke
\fBreplace\fR
in one of the following ways:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBreplace \fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB [\fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB] ... \-\- \fR\fB\fIfile_name\fR\fR\fB [\fR\fB\fIfile_name\fR\fR\fB] ...\fR
-shell> \fBreplace \fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB [\fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB] ... < \fR\fB\fIfile_name\fR\fR
+shell> \fBreplace \fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB [\fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB] \&.\&.\&. \-\- \fR\fB\fIfile_name\fR\fR\fB [\fR\fB\fIfile_name\fR\fR\fB] \&.\&.\&.\fR
+shell> \fBreplace \fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB [\fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB] \&.\&.\&. < \fR\fB\fIfile_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fIfrom\fR
represents a string to look for and
\fIto\fR
-represents its replacement. There can be one or more pairs of strings.
+represents its replacement\&. There can be one or more pairs of strings\&.
.PP
Use the
\fB\-\-\fR
-option to indicate where the string\-replacement list ends and the file names begin. In this case, any file named on the command line is modified in place, so you may want to make a copy of the original before converting it.
+option to indicate where the string\-replacement list ends and the file names begin\&. In this case, any file named on the command line is modified in place, so you may want to make a copy of the original before converting it\&.
\fIreplace\fR
-prints a message indicating which of the input files it actually modifies.
+prints a message indicating which of the input files it actually modifies\&.
.PP
If the
\fB\-\-\fR
option is not given,
\fBreplace\fR
-reads the standard input and writes to the standard output.
+reads the standard input and writes to the standard output\&.
.PP
\fBreplace\fR
-uses a finite state machine to match longer strings first. It can be used to swap strings. For example, the following command swaps
+uses a finite state machine to match longer strings first\&. It can be used to swap strings\&. For example, the following command swaps
a
and
b
in the given files,
-\fIfile1\fR
+file1
and
-\fIfile2\fR:
+file2:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBreplace a b b a \-\- file1 file2 ...\fR
+shell> \fBreplace a b b a \-\- file1 file2 \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fBreplace\fR
program is used by
-\fBmsql2mysql\fR. See
-\fBmsql2mysql\fR(1).
+\fBmsql2mysql\fR\&. See
+\fBmsql2mysql\fR(1)\&.
.PP
\fBreplace\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-#\fR\fB\fIdebug_options\fR\fR
.sp
-Enable debugging.
-.TP 3n
-\(bu
+Enable debugging\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-s\fR
.sp
-Silent mode. Print less information what the program does.
-.TP 3n
-\(bu
+Silent mode\&. Print less information what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/resolve_stack_dump.1'
--- a/man/resolve_stack_dump.1 2009-05-25 09:59:47 +0000
+++ b/man/resolve_stack_dump.1 2009-09-16 12:03:18 +0000
@@ -1,78 +1,133 @@
+'\" t
.\" Title: \fBresolve_stack_dump\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBRESOLVE_STACK_DUM" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBRESOLVE_STACK_DUM" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" resolve_stack_dump
.SH "NAME"
resolve_stack_dump \- resolve numeric stack trace dump to symbols
.SH "SYNOPSIS"
-.HP 62
+.HP \w'\fBresolve_stack_dump\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIsymbols_file\fR\fR\fB\ [\fR\fB\fInumeric_dump_file\fR\fR\fB]\fR\ 'u
\fBresolve_stack_dump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIsymbols_file\fR\fR\fB [\fR\fB\fInumeric_dump_file\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBresolve_stack_dump\fR
-resolves a numeric stack dump to symbols.
+resolves a numeric stack dump to symbols\&.
.PP
Invoke
\fBresolve_stack_dump\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBresolve_stack_dump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIsymbols_file\fR\fR\fB [\fR\fB\fInumeric_dump_file\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The symbols file should include the output from the
\fBnm \-\-numeric\-sort mysqld\fR
-command. The numeric dump file should contain a numeric stack track from
-\fBmysqld\fR. If no numeric dump file is named on the command line, the stack trace is read from the standard input.
+command\&. The numeric dump file should contain a numeric stack track from
+\fBmysqld\fR\&. If no numeric dump file is named on the command line, the stack trace is read from the standard input\&.
.PP
\fBresolve_stack_dump\fR
-understands the options described in the following list.
-.TP 3n
-\(bu
+supports the options described in the following list\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolve_stack_dump: help option
+.\" help option: resolve_stack_dump
\fB\-\-help\fR,
\fB\-h\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolve_stack_dump: numeric-dump-file option
+.\" numeric-dump-file option: resolve_stack_dump
\fB\-\-numeric\-dump\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-n \fR\fB\fIfile_name\fR\fR
.sp
-Read the stack trace from the given file.
-.TP 3n
-\(bu
+Read the stack trace from the given file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolve_stack_dump: symbols-file option
+.\" symbols-file option: resolve_stack_dump
\fB\-\-symbols\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-s \fR\fB\fIfile_name\fR\fR
.sp
-Use the given symbols file.
-.TP 3n
-\(bu
+Use the given symbols file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolve_stack_dump: version option
+.\" version option: resolve_stack_dump
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/resolveip.1'
--- a/man/resolveip.1 2009-05-25 09:59:47 +0000
+++ b/man/resolveip.1 2009-09-16 12:03:18 +0000
@@ -1,70 +1,115 @@
+'\" t
.\" Title: \fBresolveip\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBRESOLVEIP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBRESOLVEIP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" resolveip
.SH "NAME"
resolveip \- resolve host name to IP address or vice versa
.SH "SYNOPSIS"
-.HP 44
-\fBresolveip [\fR\fB\fIoptions\fR\fR\fB] {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB} ...\fR
+.HP \w'\fBresolveip\ [\fR\fB\fIoptions\fR\fR\fB]\ {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB}\ \&.\&.\&.\fR\ 'u
+\fBresolveip [\fR\fB\fIoptions\fR\fR\fB] {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB} \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBresolveip\fR
-utility resolves host names to IP addresses and vice versa.
+utility resolves host names to IP addresses and vice versa\&.
.PP
Invoke
\fBresolveip\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBresolveip [\fR\fB\fIoptions\fR\fR\fB] {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB} ...\fR
+shell> \fBresolveip [\fR\fB\fIoptions\fR\fR\fB] {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB} \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBresolveip\fR
-understands the options described in the following list.
-.TP 3n
-\(bu
+supports the options described in the following list\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolveip: help option
+.\" help option: resolveip
\fB\-\-help\fR,
\fB\-\-info\fR,
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolveip: silent option
+.\" silent option: resolveip
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Produce less output.
-.TP 3n
-\(bu
+Silent mode\&. Produce less output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolveip: version option
+.\" version option: resolveip
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'scripts/fill_help_tables.sql'
--- a/scripts/fill_help_tables.sql 2009-05-25 09:59:47 +0000
+++ b/scripts/fill_help_tables.sql 2009-09-16 12:03:18 +0000
@@ -73,99 +73,99 @@ insert into help_topic (help_topic_id,he
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (4,29,'CONTAINS','Contains(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 completely contains g2. This\ntests the opposite relationship as Within().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (5,34,'SRID','SRID(g)\n\nReturns an integer indicating the Spatial Reference System ID for the\ngeometry value g.\n\nIn MySQL, the SRID value is just an integer associated with the\ngeometry value. All calculations are done assuming Euclidean (planar)\ngeometry.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT SRID(GeomFromText(\'LineString(1 1,2 2)\',101));\n+-----------------------------------------------+\n| SRID(GeomFromText(\'LineString(1 1,2 2)\',101)) |\n+-----------------------------------------------+\n| 101 |\n+-----------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (6,30,'CURRENT_TIMESTAMP','Syntax:\nCURRENT_TIMESTAMP, CURRENT_TIMESTAMP()\n\nCURRENT_TIMESTAMP and CURRENT_TIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (7,26,'SHOW CONTRIBUTORS','Syntax:\nSHOW CONTRIBUTORS\n\nThe SHOW CONTRIBUTORS statement displays information about the people\nwho contribute to MySQL source or to causes that MySQL AB supports. For\neach contributor, it displays Name, Location, and Comment values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-contributors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-contributors.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (7,25,'SHOW CONTRIBUTORS','Syntax:\nSHOW CONTRIBUTORS\n\nThe SHOW CONTRIBUTORS statement displays information about the people\nwho contribute to MySQL source or to causes that we support. For each\ncontributor, it displays Name, Location, and Comment values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-contributors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-contributors.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (8,16,'VARIANCE','Syntax:\nVARIANCE(expr)\n\nReturns the population standard variance of expr. This is an extension\nto standard SQL. The standard SQL function VAR_POP() can be used\ninstead.\n\nVARIANCE() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (9,37,'DROP SERVER','Syntax:\nDROP SERVER [ IF EXISTS ] server_name\n\nDrops the server definition for the server named server_name. The\ncorresponding row within the mysql.servers table will be deleted. This\nstatement requires the SUPER privilege.\n\nDropping a server for a table does not affect any FEDERATED tables that\nused this connection information when they were created. See [HELP\nCREATE SERVER].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-server.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-server.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (10,26,'SHOW AUTHORS','Syntax:\nSHOW AUTHORS\n\nThe SHOW AUTHORS statement displays information about the people who\nwork on MySQL. For each author, it displays Name, Location, and Comment\nvalues.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-authors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-authors.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (10,25,'SHOW AUTHORS','Syntax:\nSHOW AUTHORS\n\nThe SHOW AUTHORS statement displays information about the people who\nwork on MySQL. For each author, it displays Name, Location, and Comment\nvalues.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-authors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-authors.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (11,16,'VAR_SAMP','Syntax:\nVAR_SAMP(expr)\n\nReturns the sample variance of expr. That is, the denominator is the\nnumber of rows minus one.\n\nVAR_SAMP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (12,35,'CONCAT','Syntax:\nCONCAT(str1,str2,...)\n\nReturns the string that results from concatenating the arguments. May\nhave one or more arguments. If all arguments are non-binary strings,\nthe result is a non-binary string. If the arguments include any binary\nstrings, the result is a binary string. A numeric argument is converted\nto its equivalent binary string form; if you want to avoid that, you\ncan use an explicit type cast, as in this example:\n\nSELECT CONCAT(CAST(int_col AS CHAR), char_col);\n\nCONCAT() returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT CONCAT(\'My\', \'S\', \'QL\');\n -> \'MySQL\'\nmysql> SELECT CONCAT(\'My\', NULL, \'QL\');\n -> NULL\nmysql> SELECT CONCAT(14.3);\n -> \'14.3\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (13,32,'GEOMETRY HIERARCHY','Geometry is the base class. It is an abstract class. The instantiable\nsubclasses of Geometry are restricted to zero-, one-, and\ntwo-dimensional geometric objects that exist in two-dimensional\ncoordinate space. All instantiable geometry classes are defined so that\nvalid instances of a geometry class are topologically closed (that is,\nall defined geometries include their boundary).\n\nThe base Geometry class has subclasses for Point, Curve, Surface, and\nGeometryCollection:\n\no Point represents zero-dimensional objects.\n\no Curve represents one-dimensional objects, and has subclass\n LineString, with sub-subclasses Line and LinearRing.\n\no Surface is designed for two-dimensional objects and has subclass\n Polygon.\n\no GeometryCollection has specialized zero-, one-, and two-dimensional\n collection classes named MultiPoint, MultiLineString, and\n MultiPolygon for modeling geometries corresponding to collections of\n Points, LineStrings, and Polygons, respectively. MultiCurve and\n MultiSurface are introduced as abstract superclasses that generalize\n the collection interfaces to handle Curves and Surfaces.\n\nGeometry, Curve, Surface, MultiCurve, and MultiSurface are defined as\nnon-instantiable classes. They define a common set of methods for their\nsubclasses and are included for extensibility.\n\nPoint, LineString, Polygon, GeometryCollection, MultiPoint,\nMultiLineString, and MultiPolygon are instantiable classes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-geometry-class-hierarchy.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/gis-geometry-class-hierarchy.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (12,35,'CONCAT','Syntax:\nCONCAT(str1,str2,...)\n\nReturns the string that results from concatenating the arguments. May\nhave one or more arguments. If all arguments are nonbinary strings, the\nresult is a nonbinary string. If the arguments include any binary\nstrings, the result is a binary string. A numeric argument is converted\nto its equivalent binary string form; if you want to avoid that, you\ncan use an explicit type cast, as in this example:\n\nSELECT CONCAT(CAST(int_col AS CHAR), char_col);\n\nCONCAT() returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT CONCAT(\'My\', \'S\', \'QL\');\n -> \'MySQL\'\nmysql> SELECT CONCAT(\'My\', NULL, \'QL\');\n -> NULL\nmysql> SELECT CONCAT(14.3);\n -> \'14.3\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (13,32,'GEOMETRY HIERARCHY','Geometry is the base class. It is an abstract class. The instantiable\nsubclasses of Geometry are restricted to zero-, one-, and\ntwo-dimensional geometric objects that exist in two-dimensional\ncoordinate space. All instantiable geometry classes are defined so that\nvalid instances of a geometry class are topologically closed (that is,\nall defined geometries include their boundary).\n\nThe base Geometry class has subclasses for Point, Curve, Surface, and\nGeometryCollection:\n\no Point represents zero-dimensional objects.\n\no Curve represents one-dimensional objects, and has subclass\n LineString, with sub-subclasses Line and LinearRing.\n\no Surface is designed for two-dimensional objects and has subclass\n Polygon.\n\no GeometryCollection has specialized zero-, one-, and two-dimensional\n collection classes named MultiPoint, MultiLineString, and\n MultiPolygon for modeling geometries corresponding to collections of\n Points, LineStrings, and Polygons, respectively. MultiCurve and\n MultiSurface are introduced as abstract superclasses that generalize\n the collection interfaces to handle Curves and Surfaces.\n\nGeometry, Curve, Surface, MultiCurve, and MultiSurface are defined as\nnoninstantiable classes. They define a common set of methods for their\nsubclasses and are included for extensibility.\n\nPoint, LineString, Polygon, GeometryCollection, MultiPoint,\nMultiLineString, and MultiPolygon are instantiable classes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-geometry-class-hierarchy.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/gis-geometry-class-hierarchy.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (14,35,'CHAR FUNCTION','Syntax:\nCHAR(N,... [USING charset_name])\n\nCHAR() interprets each argument N as an integer and returns a string\nconsisting of the characters given by the code values of those\nintegers. NULL values are skipped.\nBy default, CHAR() returns a binary string. To produce a string in a\ngiven character set, use the optional USING clause:\n\nmysql> SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));\n+---------------------+--------------------------------+\n| CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) |\n+---------------------+--------------------------------+\n| binary | utf8 |\n+---------------------+--------------------------------+\n\nIf USING is given and the result string is illegal for the given\ncharacter set, a warning is issued. Also, if strict SQL mode is\nenabled, the result from CHAR() becomes NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT CHAR(77,121,83,81,\'76\');\n -> \'MySQL\'\nmysql> SELECT CHAR(77,77.3,\'77.3\');\n -> \'MMM\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (15,20,'DATETIME','DATETIME\n\nA date and time combination. The supported range is \'1000-01-01\n00:00:00\' to \'9999-12-31 23:59:59\'. MySQL displays DATETIME values in\n\'YYYY-MM-DD HH:MM:SS\' format, but allows assignment of values to\nDATETIME columns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (16,22,'OPEN','Syntax:\nOPEN cursor_name\n\nThis statement opens a previously declared cursor.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/open.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/open.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (17,26,'SHOW CREATE TRIGGER','Syntax:\nSHOW CREATE TRIGGER trigger_name\n\nThis statement shows a CREATE TRIGGER statement that creates the given\ntrigger.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-trigger.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (18,26,'SHOW CREATE PROCEDURE','Syntax:\nSHOW CREATE PROCEDURE proc_name\n\nThis statement is a MySQL extension. It returns the exact string that\ncan be used to re-create the named stored procedure. A similar\nstatement, SHOW CREATE FUNCTION, displays information about stored\nfunctions (see [HELP SHOW CREATE FUNCTION]).\n\nBoth statements require that you be the owner of the routine or have\nSELECT access to the mysql.proc table. If you do not have privileges\nfor the routine itself, the value displayed for the Create Procedure or\nCreate Function field will be NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-procedure.html\n\n','mysql> SHOW CREATE PROCEDURE test.simpleproc\\G\n*************************** 1. row ***************************\n Procedure: simpleproc\n sql_mode: \n Create Procedure: CREATE PROCEDURE `simpleproc`(OUT param1 INT)\n BEGIN\n SELECT COUNT(*) INTO param1 FROM t;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\nmysql> SHOW CREATE FUNCTION test.hello\\G\n*************************** 1. row ***************************\n Function: hello\n sql_mode:\n Create Function: CREATE FUNCTION `hello`(s CHAR(20))\n RETURNS CHAR(50)\n RETURN CONCAT(\'Hello, \',s,\'!\')\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-procedure.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (17,25,'SHOW CREATE TRIGGER','Syntax:\nSHOW CREATE TRIGGER trigger_name\n\nThis statement shows a CREATE TRIGGER statement that creates the given\ntrigger.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-trigger.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (18,25,'SHOW CREATE PROCEDURE','Syntax:\nSHOW CREATE PROCEDURE proc_name\n\nThis statement is a MySQL extension. It returns the exact string that\ncan be used to re-create the named stored procedure. A similar\nstatement, SHOW CREATE FUNCTION, displays information about stored\nfunctions (see [HELP SHOW CREATE FUNCTION]).\n\nBoth statements require that you be the owner of the routine or have\nSELECT access to the mysql.proc table. If you do not have privileges\nfor the routine itself, the value displayed for the Create Procedure or\nCreate Function field will be NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-procedure.html\n\n','mysql> SHOW CREATE PROCEDURE test.simpleproc\\G\n*************************** 1. row ***************************\n Procedure: simpleproc\n sql_mode:\n Create Procedure: CREATE PROCEDURE `simpleproc`(OUT param1 INT)\n BEGIN\n SELECT COUNT(*) INTO param1 FROM t;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\nmysql> SHOW CREATE FUNCTION test.hello\\G\n*************************** 1. row ***************************\n Function: hello\n sql_mode:\n Create Function: CREATE FUNCTION `hello`(s CHAR(20))\n RETURNS CHAR(50)\n RETURN CONCAT(\'Hello, \',s,\'!\')\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-procedure.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (19,20,'INTEGER','INTEGER[(M)] [UNSIGNED] [ZEROFILL]\n\nThis type is a synonym for INT.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (20,35,'LOWER','Syntax:\nLOWER(str)\n\nReturns the string str with all characters changed to lowercase\naccording to the current character set mapping. The default is latin1\n(cp1252 West European).\n\nmysql> SELECT LOWER(\'QUADRATICALLY\');\n -> \'quadratically\'\n\nLOWER() (and UPPER()) are ineffective when applied to binary strings\n(BINARY, VARBINARY, BLOB). To perform lettercase conversion, convert\nthe string to a non-binary string:\n\nmysql> SET @str = BINARY \'New York\';\nmysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1));\n+-------------+-----------------------------------+\n| LOWER(@str) | LOWER(CONVERT(@str USING latin1)) |\n+-------------+-----------------------------------+\n| New York | new york | \n+-------------+-----------------------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (21,26,'SHOW COLUMNS','Syntax:\nSHOW [FULL] COLUMNS FROM tbl_name [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW COLUMNS displays information about the columns in a given table.\nIt also works for views. The LIKE clause, if present, indicates which\ncolumn names to match. The WHERE clause can be given to select rows\nusing more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nmysql> SHOW COLUMNS FROM City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n5 rows in set (0.00 sec)\n\nIf the data types differ from what you expect them to be based on a\nCREATE TABLE statement, note that MySQL sometimes changes data types\nwhen you create or alter a table. The conditions under which this\noccurs are described in\nhttp://dev.mysql.com/doc/refman/5.1/en/silent-column-changes.html.\n\nT… FULL keyword causes the output to include the column collation and\ncomments, as well as the privileges you have for each column.\n\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. In other words, these two statements are equivalent:\n\nmysql> SHOW COLUMNS FROM mytable FROM mydb;\nmysql> SHOW COLUMNS FROM mydb.mytable;\n\nSHOW COLUMNS displays the following values for each table column:\n\nField indicates the column name.\n\nType indicates the column data type.\n\nCollation indicates the collation for non-binary string columns, or\nNULL for other columns. This value is displayed only if you use the\nFULL keyword.\n\nThe Null field contains YES if NULL values can be stored in the column,\nNO if not.\n\nThe Key field indicates whether the column is indexed:\n\no If Key is empty, the column either is not indexed or is indexed only\n as a secondary column in a multiple-column, non-unique index.\n\no If Key is PRI, the column is a PRIMARY KEY or is one of the columns\n in a multiple-column PRIMARY KEY.\n\no If Key is UNI, the column is the first column of a unique-valued\n index that cannot contain NULL values.\n\no If Key is MUL, multiple occurrences of a given value are allowed\n within the column. The column is the first column of a non-unique\n index or a unique-valued index that can contain NULL values.\n\nIf more than one of the Key values applies to a given column of a\ntable, Key displays the one with the highest priority, in the order\nPRI, UNI, MUL.\n\nA UNIQUE index may be displayed as PRI if it cannot contain NULL values\nand there is no PRIMARY KEY in the table. A UNIQUE index may display as\nMUL if several columns form a composite UNIQUE index; although the\ncombination of the columns is unique, each column can still hold\nmultiple occurrences of a given value.\n\nThe Default field indicates the default value that is assigned to the\ncolumn.\n\nThe Extra field contains any additional information that is available\nabout a given column. The value is auto_increment if the column was\ncreated with the AUTO_INCREMENT keyword and empty otherwise.\n\nPrivileges indicates the privileges you have for the column. This value\nis displayed only if you use the FULL keyword.\n\nComment indicates any comment the column has. This value is displayed\nonly if you use the FULL keyword.\n\nSHOW FIELDS is a synonym for SHOW COLUMNS. You can also list a table\'s\ncolumns with the mysqlshow db_name tbl_name command.\n\nThe DESCRIBE statement provides information similar to SHOW COLUMNS.\nSee [HELP DESCRIBE].\n\nThe SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements\nalso provide information about tables. See [HELP SHOW].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-columns.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-columns.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (20,35,'LOWER','Syntax:\nLOWER(str)\n\nReturns the string str with all characters changed to lowercase\naccording to the current character set mapping. The default is latin1\n(cp1252 West European).\n\nmysql> SELECT LOWER(\'QUADRATICALLY\');\n -> \'quadratically\'\n\nLOWER() (and UPPER()) are ineffective when applied to binary strings\n(BINARY, VARBINARY, BLOB). To perform lettercase conversion, convert\nthe string to a nonbinary string:\n\nmysql> SET @str = BINARY \'New York\';\nmysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1));\n+-------------+-----------------------------------+\n| LOWER(@str) | LOWER(CONVERT(@str USING latin1)) |\n+-------------+-----------------------------------+\n| New York | new york |\n+-------------+-----------------------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (21,25,'SHOW COLUMNS','Syntax:\nSHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW COLUMNS displays information about the columns in a given table.\nIt also works for views. The LIKE clause, if present, indicates which\ncolumn names to match. The WHERE clause can be given to select rows\nusing more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nmysql> SHOW COLUMNS FROM City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n5 rows in set (0.00 sec)\n\nIf the data types differ from what you expect them to be based on a\nCREATE TABLE statement, note that MySQL sometimes changes data types\nwhen you create or alter a table. The conditions under which this\noccurs are described in\nhttp://dev.mysql.com/doc/refman/5.1/en/silent-column-changes.html.\n\nT… FULL keyword causes the output to include the column collation and\ncomments, as well as the privileges you have for each column.\n\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. In other words, these two statements are equivalent:\n\nmysql> SHOW COLUMNS FROM mytable FROM mydb;\nmysql> SHOW COLUMNS FROM mydb.mytable;\n\nSHOW COLUMNS displays the following values for each table column:\n\nField indicates the column name.\n\nType indicates the column data type.\n\nCollation indicates the collation for nonbinary string columns, or NULL\nfor other columns. This value is displayed only if you use the FULL\nkeyword.\n\nThe Null field contains YES if NULL values can be stored in the column,\nNO if not.\n\nThe Key field indicates whether the column is indexed:\n\no If Key is empty, the column either is not indexed or is indexed only\n as a secondary column in a multiple-column, nonunique index.\n\no If Key is PRI, the column is a PRIMARY KEY or is one of the columns\n in a multiple-column PRIMARY KEY.\n\no If Key is UNI, the column is the first column of a unique-valued\n index that cannot contain NULL values.\n\no If Key is MUL, multiple occurrences of a given value are allowed\n within the column. The column is the first column of a nonunique\n index or a unique-valued index that can contain NULL values.\n\nIf more than one of the Key values applies to a given column of a\ntable, Key displays the one with the highest priority, in the order\nPRI, UNI, MUL.\n\nA UNIQUE index may be displayed as PRI if it cannot contain NULL values\nand there is no PRIMARY KEY in the table. A UNIQUE index may display as\nMUL if several columns form a composite UNIQUE index; although the\ncombination of the columns is unique, each column can still hold\nmultiple occurrences of a given value.\n\nThe Default field indicates the default value that is assigned to the\ncolumn.\n\nThe Extra field contains any additional information that is available\nabout a given column. The value is auto_increment if the column was\ncreated with the AUTO_INCREMENT keyword and empty otherwise.\n\nPrivileges indicates the privileges you have for the column. This value\nis displayed only if you use the FULL keyword.\n\nComment indicates any comment the column has. This value is displayed\nonly if you use the FULL keyword.\n\nSHOW FIELDS is a synonym for SHOW COLUMNS. You can also list a table\'s\ncolumns with the mysqlshow db_name tbl_name command.\n\nThe DESCRIBE statement provides information similar to SHOW COLUMNS.\nSee [HELP DESCRIBE].\n\nThe SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements\nalso provide information about tables. See [HELP SHOW].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-columns.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-columns.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (22,37,'CREATE TRIGGER','Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n TRIGGER trigger_name trigger_time trigger_event\n ON tbl_name FOR EACH ROW trigger_stmt\n\nThis statement creates a new trigger. A trigger is a named database\nobject that is associated with a table, and that activates when a\nparticular event occurs for the table. The trigger becomes associated\nwith the table named tbl_name, which must refer to a permanent table.\nYou cannot associate a trigger with a TEMPORARY table or a view.\n\nCREATE TRIGGER requires the TRIGGER privilege for the table associated\nwith the trigger. (Before MySQL 5.1.6, this statement requires the\nSUPER privilege.)\n\nThe DEFINER clause determines the security context to be used when\nchecking access privileges at trigger activation time.\n\ntrigger_time is the trigger action time. It can be BEFORE or AFTER to\nindicate that the trigger activates before or after each row to be\nmodified.\n\ntrigger_event indicates the kind of statement that activates the\ntrigger. The trigger_event can be one of the following:\n\no INSERT: The trigger is activated whenever a new row is inserted into\n the table; for example, through INSERT, LOAD DATA, and REPLACE\n statements.\n\no UPDATE: The trigger is activated whenever a row is modified; for\n example, through UPDATE statements.\n\no DELETE: The trigger is activated whenever a row is deleted from the\n table; for example, through DELETE and REPLACE statements. However,\n DROP TABLE and TRUNCATE statements on the table do not activate this\n trigger, because they do not use DELETE. Dropping a partition does\n not activate DELETE triggers, either. See [HELP TRUNCATE TABLE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (23,30,'MONTH','Syntax:\nMONTH(date)\n\nReturns the month for date, in the range 1 to 12 for January to\nDecember, or 0 for dates such as \'0000-00-00\' or \'2008-00-00\' that have\na zero month part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MONTH(\'2008-02-03\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (24,20,'TINYINT','TINYINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA very small integer. The signed range is -128 to 127. The unsigned\nrange is 0 to 255.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (25,26,'SHOW TRIGGERS','Syntax:\nSHOW TRIGGERS [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TRIGGERS lists the triggers currently defined for tables in a\ndatabase (the default database unless a FROM clause is given). This\nstatement requires the TRIGGER privilege (prior to MySQL 5.1.22, it\nrequires the SUPER privilege). The LIKE clause, if present, indicates\nwhich table names to match and causes the statement to display triggers\nfor those tables. The WHERE clause can be given to select rows using\nmore general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nFor the trigger ins_sum as defined in\nhttp://dev.mysql.com/doc/refman/5.1/en/triggers.html, the output of\nthis statement is as shown here:\n\nmysql> SHOW TRIGGERS LIKE \'acc%\'\\G\n*************************** 1. row ***************************\n Trigger: ins_sum\n Event: INSERT\n Table: account\n Statement: SET @sum = @sum + NEW.amount\n Timing: BEFORE\n Created: NULL\n sql_mode:\n Definer: myname@localhost\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\ncharacter_set_client is the session value of the character_set_client\nsystem variable when the trigger was created. collation_connection is\nthe session value of the collation_connection system variable when the\ntrigger was created. Database Collation is the collation of the\ndatabase with which the trigger is associated. These columns were added\nin MySQL 5.1.21.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-triggers.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-triggers.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (25,25,'SHOW TRIGGERS','Syntax:\nSHOW TRIGGERS [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TRIGGERS lists the triggers currently defined for tables in a\ndatabase (the default database unless a FROM clause is given). This\nstatement requires the TRIGGER privilege (prior to MySQL 5.1.22, it\nrequires the SUPER privilege). The LIKE clause, if present, indicates\nwhich table names to match and causes the statement to display triggers\nfor those tables. The WHERE clause can be given to select rows using\nmore general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nFor the trigger ins_sum as defined in\nhttp://dev.mysql.com/doc/refman/5.1/en/triggers.html, the output of\nthis statement is as shown here:\n\nmysql> SHOW TRIGGERS LIKE \'acc%\'\\G\n*************************** 1. row ***************************\n Trigger: ins_sum\n Event: INSERT\n Table: account\n Statement: SET @sum = @sum + NEW.amount\n Timing: BEFORE\n Created: NULL\n sql_mode:\n Definer: myname@localhost\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\ncharacter_set_client is the session value of the character_set_client\nsystem variable when the trigger was created. collation_connection is\nthe session value of the collation_connection system variable when the\ntrigger was created. Database Collation is the collation of the\ndatabase with which the trigger is associated. These columns were added\nin MySQL 5.1.21.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-triggers.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-triggers.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (26,14,'MASTER_POS_WAIT','Syntax:\nMASTER_POS_WAIT(log_name,log_pos[,timeout])\n\nThis function is useful for control of master/slave synchronization. It\nblocks until the slave has read and applied all updates up to the\nspecified position in the master log. The return value is the number of\nlog events the slave had to wait for to advance to the specified\nposition. The function returns NULL if the slave SQL thread is not\nstarted, the slave\'s master information is not initialized, the\narguments are incorrect, or an error occurs. It returns -1 if the\ntimeout has been exceeded. If the slave SQL thread stops while\nMASTER_POS_WAIT() is waiting, the function returns NULL. If the slave\nis past the specified position, the function returns immediately.\n\nIf a timeout value is specified, MASTER_POS_WAIT() stops waiting when\ntimeout seconds have elapsed. timeout must be greater than 0; a zero or\nnegative timeout means no timeout.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (27,35,'REGEXP','Syntax:\nexpr REGEXP pat, expr RLIKE pat\n\nPerforms a pattern match of a string expression expr against a pattern\npat. The pattern can be an extended regular expression. The syntax for\nregular expressions is discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/regexp.html. Returns 1 if expr\nmatches pat; otherwise it returns 0. If either expr or pat is NULL, the\nresult is NULL. RLIKE is a synonym for REGEXP, provided for mSQL\ncompatibility.\n\nThe pattern need not be a literal string. For example, it can be\nspecified as a string expression or table column.\n\n*Note*: Because MySQL uses the C escape syntax in strings (for example,\n"\\n" to represent the newline character), you must double any "\\" that\nyou use in your REGEXP strings.\n\nREGEXP is not case sensitive, except when used with binary strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/regexp.html\n\n','mysql> SELECT \'Monty!\' REGEXP \'m%y%%\';\n -> 0\nmysql> SELECT \'Monty!\' REGEXP \'.*\';\n -> 1\nmysql> SELECT \'new*\\n*line\' REGEXP \'new\\\\*.\\\\*line\';\n -> 1\nmysql> SELECT \'a\' REGEXP \'A\', \'a\' REGEXP BINARY \'A\';\n -> 1 0\nmysql> SELECT \'a\' REGEXP \'^[a-d]\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/regexp.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (28,22,'IF STATEMENT','Syntax:\nIF search_condition THEN statement_list\n [ELSEIF search_condition THEN statement_list] ...\n [ELSE statement_list]\nEND IF\n\nIF implements a basic conditional construct. If the search_condition\nevaluates to true, the corresponding SQL statement list is executed. If\nno search_condition matches, the statement list in the ELSE clause is\nexecuted. Each statement_list consists of one or more statements.\n\n*Note*: There is also an IF() function, which differs from the IF\nstatement described here. See\nhttp://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/if-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/if-statement.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (29,18,'^','Syntax:\n^\n\nBitwise XOR:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 1 ^ 1;\n -> 0\nmysql> SELECT 1 ^ 0;\n -> 1\nmysql> SELECT 11 ^ 3;\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (30,37,'DROP VIEW','Syntax:\nDROP VIEW [IF EXISTS]\n view_name [, view_name] ...\n [RESTRICT | CASCADE]\n\nDROP VIEW removes one or more views. You must have the DROP privilege\nfor each view. If any of the views named in the argument list do not\nexist, MySQL returns an error indicating by name which non-existing\nviews it was unable to drop, but it also drops all of the views in the\nlist that do exist.\n\nThe IF EXISTS clause prevents an error from occurring for views that\ndon\'t exist. When this clause is given, a NOTE is generated for each\nnon-existent view. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE, if given, are parsed and ignored.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-view.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (30,37,'DROP VIEW','Syntax:\nDROP VIEW [IF EXISTS]\n view_name [, view_name] ...\n [RESTRICT | CASCADE]\n\nDROP VIEW removes one or more views. You must have the DROP privilege\nfor each view. If any of the views named in the argument list do not\nexist, MySQL returns an error indicating by name which nonexisting\nviews it was unable to drop, but it also drops all of the views in the\nlist that do exist.\n\nThe IF EXISTS clause prevents an error from occurring for views that\ndon\'t exist. When this clause is given, a NOTE is generated for each\nnonexistent view. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE, if given, are parsed and ignored.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-view.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (31,29,'WITHIN','Within(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially within g2. This\ntests the opposite relationship as Contains().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (32,30,'WEEK','Syntax:\nWEEK(date[,mode])\n\nThis function returns the week number for date. The two-argument form\nof WEEK() allows you to specify whether the week starts on Sunday or\nMonday and whether the return value should be in the range from 0 to 53\nor from 1 to 53. If the mode argument is omitted, the value of the\ndefault_week_format system variable is used. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEK(\'2008-02-20\');\n -> 7\nmysql> SELECT WEEK(\'2008-02-20\',0);\n -> 7\nmysql> SELECT WEEK(\'2008-02-20\',1);\n -> 8\nmysql> SELECT WEEK(\'2008-12-31\',1);\n -> 53\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (33,26,'SHOW PLUGINS','Syntax:\nSHOW PLUGINS\n\nSHOW PLUGINS displays information about known plugins.\n\nmysql> SHOW PLUGINS;\n+------------+--------+----------------+---------+\n| Name | Status | Type | Library |\n+------------+--------+----------------+---------+\n| MEMORY | ACTIVE | STORAGE ENGINE | NULL |\n| MyISAM | ACTIVE | STORAGE ENGINE | NULL |\n| InnoDB | ACTIVE | STORAGE ENGINE | NULL |\n| ARCHIVE | ACTIVE | STORAGE ENGINE | NULL |\n| CSV | ACTIVE | STORAGE ENGINE | NULL |\n| BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL |\n| FEDERATED | ACTIVE | STORAGE ENGINE | NULL |\n| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL |\n+------------+--------+----------------+---------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-plugins.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-plugins.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (33,25,'SHOW PLUGINS','Syntax:\nSHOW PLUGINS\n\nSHOW PLUGINS displays information about known plugins.\n\nmysql> SHOW PLUGINS;\n+------------+--------+----------------+---------+\n| Name | Status | Type | Library |\n+------------+--------+----------------+---------+\n| MEMORY | ACTIVE | STORAGE ENGINE | NULL |\n| MyISAM | ACTIVE | STORAGE ENGINE | NULL |\n| InnoDB | ACTIVE | STORAGE ENGINE | NULL |\n| ARCHIVE | ACTIVE | STORAGE ENGINE | NULL |\n| CSV | ACTIVE | STORAGE ENGINE | NULL |\n| BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL |\n| FEDERATED | ACTIVE | STORAGE ENGINE | NULL |\n| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL |\n+------------+--------+----------------+---------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-plugins.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-plugins.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (34,21,'DROP FUNCTION UDF','Syntax:\nDROP FUNCTION function_name\n\nThis statement drops the user-defined function (UDF) named\nfunction_name.\n\nTo drop a function, you must have the DELETE privilege for the mysql\ndatabase. This is because DROP FUNCTION removes a row from the\nmysql.func system table that records the function\'s name, type, and\nshared library name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-function-udf.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-function-udf.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (35,26,'PREPARE','Syntax:\nPREPARE stmt_name FROM preparable_stmt\n\nThe PREPARE statement prepares a statement and assigns it a name,\nstmt_name, by which to refer to the statement later. Statement names\nare not case sensitive. preparable_stmt is either a string literal or a\nuser variable that contains the text of the statement. The text must\nrepresent a single SQL statement, not multiple statements. Within the\nstatement, "?" characters can be used as parameter markers to indicate\nwhere data values are to be bound to the query later when you execute\nit. The "?" characters should not be enclosed within quotes, even if\nyou intend to bind them to string values. Parameter markers can be used\nonly where data values should appear, not for SQL keywords,\nidentifiers, and so forth.\n\nIf a prepared statement with the given name already exists, it is\ndeallocated implicitly before the new statement is prepared. This means\nthat if the new statement contains an error and cannot be prepared, an\nerror is returned and no statement with the given name exists.\n\nA prepared statement is executed with EXECUTE and released with\nDEALLOCATE PREPARE.\n\nThe scope of a prepared statement is the session within which it is\ncreated. Other sessions cannot see it.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/prepare.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (36,8,'LOCK','Syntax:\nLOCK TABLES\n tbl_name [[AS] alias] lock_type\n [, tbl_name [[AS] alias] lock_type] ...\n\nlock_type:\n READ [LOCAL]\n | [LOW_PRIORITY] WRITE\n\nUNLOCK TABLES\n\nMySQL enables client sessions to acquire table locks explicitly for the\npurpose of cooperating with other sessions for access to tables, or to\nprevent other sessions from modifying tables during periods when a\nsession requires exclusive access to them. A session can acquire or\nrelease locks only for itself. One session cannot acquire locks for\nanother session or release locks held by another session.\n\nLOCK TABLES acquires table locks for the current thread. It locks base\ntables or views. (For view locking, LOCK TABLES adds all base tables\nused in the view to the set of tables to be locked and locks them\nautomatically.) To use LOCK TABLES, you must have the LOCK TABLES\nprivilege, and the SELECT privilege for each object to be locked.\n\nMySQL enables client sessions to acquire table locks explicitly Locks\nmay be used to emulate transactions or to get more speed when updating\ntables. This is explained in more detail later in this section.\n\nUNLOCK TABLES explicitly releases any table locks held by the current\nthread. Another use for UNLOCK TABLES is to release the global read\nlock acquired with FLUSH TABLES WITH READ LOCK. (You can lock all\ntables in all databases with a read lock with the FLUSH TABLES WITH\nREAD LOCK statement. See [HELP FLUSH]. This is a very convenient way to\nget backups if you have a file system such as Veritas that can take\nsnapshots in time.)\n\nThe following discussion applies only to non-TEMPORARY tables. LOCK\nTABLES is allowed (but ignored) for a TEMPORARY table. The table can be\naccessed freely by the session within which it was created, regardless\nof what other locking may be in effect. No lock is necessary because no\nother session can see the table.\n\nThe following general rules apply to acquisition and release of locks\nby a given thread:\n\no Table locks are acquired with LOCK TABLES.\n\no If the LOCK TABLES statement must wait due to locks held by other\n threads on any of the tables, it blocks until all locks can be\n acquired.\n\no Table locks are released explicitly with UNLOCK TABLES.\n\no Table locks are released implicitly under these conditions:\n\n o LOCK TABLES releases any table locks currently held by the thread\n before acquiring new locks.\n\n o Beginning a transaction (for example, with START TRANSACTION)\n implicitly performs an UNLOCK TABLES. (Additional information about\n the interaction between table locking and transactions is given\n later in this section.)\n\n o If a client connection drops, the server releases table locks held\n by the client. If the client reconnects, the locks will no longer\n be in effect. In addition, if the client had an active transaction,\n the server rolls back the transaction upon disconnect, and if\n reconnect occurs, the new session begins with autocommit enabled.\n For this reason, clients may wish to disable auto-reconnect. With\n auto-reconnect in effect, the client is not notified if reconnect\n occurs but any table locks or current transaction will have been\n lost. With auto-reconnect disabled, if the connection drops, an\n error occurs for the next statement issued. The client can detect\n the error and take appropriate action such as reacquiring the locks\n or redoing the transaction. See\n http://dev.mysql.com/doc/refman/5.1/en/auto-reconnect.html.\n\n*Note*: If you use ALTER TABLE on a locked table, it may become\nunlocked. See\nhttp://dev.mysql.com/doc/refman/5.1/en/alter-table-problems.html.\n\nA table lock protects only against inappropriate reads or writes by\nother clients. The client holding the lock, even a read lock, can\nperform table-level operations such as DROP TABLE. Truncate operations\nare not transaction-safe, so an error occurs if the client attempts one\nduring an active transaction or while holding a table lock.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (35,25,'PREPARE','Syntax:\nPREPARE stmt_name FROM preparable_stmt\n\nThe PREPARE statement prepares a statement and assigns it a name,\nstmt_name, by which to refer to the statement later. Statement names\nare not case sensitive. preparable_stmt is either a string literal or a\nuser variable that contains the text of the statement. The text must\nrepresent a single SQL statement, not multiple statements. Within the\nstatement, "?" characters can be used as parameter markers to indicate\nwhere data values are to be bound to the query later when you execute\nit. The "?" characters should not be enclosed within quotes, even if\nyou intend to bind them to string values. Parameter markers can be used\nonly where data values should appear, not for SQL keywords,\nidentifiers, and so forth.\n\nIf a prepared statement with the given name already exists, it is\ndeallocated implicitly before the new statement is prepared. This means\nthat if the new statement contains an error and cannot be prepared, an\nerror is returned and no statement with the given name exists.\n\nA prepared statement is executed with EXECUTE and released with\nDEALLOCATE PREPARE.\n\nThe scope of a prepared statement is the session within which it is\ncreated. Other sessions cannot see it.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/prepare.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (36,8,'LOCK','Syntax:\nLOCK TABLES\n tbl_name [[AS] alias] lock_type\n [, tbl_name [[AS] alias] lock_type] ...\n\nlock_type:\n READ [LOCAL]\n | [LOW_PRIORITY] WRITE\n\nUNLOCK TABLES\n\nMySQL enables client sessions to acquire table locks explicitly for the\npurpose of cooperating with other sessions for access to tables, or to\nprevent other sessions from modifying tables during periods when a\nsession requires exclusive access to them. A session can acquire or\nrelease locks only for itself. One session cannot acquire locks for\nanother session or release locks held by another session.\n\nLocks may be used to emulate transactions or to get more speed when\nupdating tables. This is explained in more detail later in this\nsection.\n\nLOCK TABLES explicitly acquires table locks for the current client\nsession. Table locks can be acquired for base tables or views. You must\nhave the LOCK TABLES privilege, and the SELECT privilege for each\nobject to be locked.\n\nFor view locking, LOCK TABLES adds all base tables used in the view to\nthe set of tables to be locked and locks them automatically. If you\nlock a table explicitly with LOCK TABLES, any tables used in triggers\nare also locked implicitly, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/lock-tables-and-triggers.html.\n… TABLES explicitly releases any table locks held by the current\nsession.\n\nAnother use for UNLOCK TABLES is to release the global read lock\nacquired with the FLUSH TABLES WITH READ LOCK statement, which enables\nyou to lock all tables in all databases. See [HELP FLUSH]. (This is a\nvery convenient way to get backups if you have a file system such as\nVeritas that can take snapshots in time.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (37,35,'UPDATEXML','Syntax:\nUpdateXML(xml_target, xpath_expr, new_xml)\n\nThis function replaces a single portion of a given fragment of XML\nmarkup xml_target with a new XML fragment new_xml, and then returns the\nchanged XML. The portion of xml_target that is replaced matches an\nXPath expression xpath_expr supplied by the user. If no expression\nmatching xpath_expr is found, or if multiple matches are found, the\nfunction returns the original xml_target XML fragment. All three\narguments should be strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html\n\n','mysql> SELECT\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/a\', \'<e>fff</e>\') AS val1,\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/b\', \'<e>fff</e>\') AS val2,\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'//b\', \'<e>fff</e>\') AS val3,\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/a/d\', \'<e>fff</e>\') AS val4,\n -> UpdateXML(\'<a><d></d><b>ccc</b><d></d></a>\', \'/a/d\', \'<e>fff</e>\') AS val5\n -> \\G\n\n*************************** 1. row ***************************\nval1: <e>fff</e>\nval2: <a><b>ccc</b><d></d></a>\nval3: <a><e>fff</e><d></d></a>\nval4: <a><b>ccc</b><e>fff</e></a>\nval5: <a><d></d><b>ccc</b><d></d></a>\n','http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (38,26,'RESET SLAVE','Syntax:\nRESET SLAVE\n\nRESET SLAVE makes the slave forget its replication position in the\nmaster\'s binary logs. This statement is meant to be used for a clean\nstart: It deletes the master.info and relay-log.info files, all the\nrelay logs, and starts a new relay log.\n\n*Note*: All relay logs are deleted, even if they have not been\ncompletely executed by the slave SQL thread. (This is a condition\nlikely to exist on a replication slave if you have issued a STOP SLAVE\nstatement or if the slave is highly loaded.)\n\nConnection information stored in the master.info file is immediately\nreset using any values specified in the corresponding startup options.\nThis information includes values such as master host, master port,\nmaster user, and master password. If the slave SQL thread was in the\nmiddle of replicating temporary tables when it was stopped, and RESET\nSLAVE is issued, these replicated temporary tables are deleted on the\nslave.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset-slave.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (39,26,'SHOW BINARY LOGS','Syntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [HELP PURGE BINARY LOGS], that shows\nhow to determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-binary-logs.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-binary-logs.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (40,23,'POLYGON','Polygon(ls1,ls2,...)\n\nConstructs a WKB Polygon value from a number of WKB LineString\narguments. If any argument does not represent the WKB of a LinearRing\n(that is, not a closed and simple LineString) the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (38,25,'RESET SLAVE','Syntax:\nRESET SLAVE\n\nRESET SLAVE makes the slave forget its replication position in the\nmaster\'s binary logs. This statement is meant to be used for a clean\nstart: It deletes the master.info and relay-log.info files, all the\nrelay logs, and starts a new relay log.\n\n*Note*: All relay logs are deleted, even if they have not been\ncompletely executed by the slave SQL thread. (This is a condition\nlikely to exist on a replication slave if you have issued a STOP SLAVE\nstatement or if the slave is highly loaded.)\n\nConnection information stored in the master.info file is immediately\nreset using any values specified in the corresponding startup options.\nThis information includes values such as master host, master port,\nmaster user, and master password. If the slave SQL thread was in the\nmiddle of replicating temporary tables when it was stopped, and RESET\nSLAVE is issued, these replicated temporary tables are deleted on the\nslave.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset-slave.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (39,25,'SHOW BINARY LOGS','Syntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [HELP PURGE BINARY LOGS], that shows\nhow to determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-binary-logs.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-binary-logs.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (40,23,'POLYGON','Polygon(ls1,ls2,...)\n\nConstructs a Polygon value from a number of LineString or WKB\nLineString arguments. If any argument does not represent a LinearRing\n(that is, not a closed and simple LineString), the return value is\nNULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (41,30,'MINUTE','Syntax:\nMINUTE(time)\n\nReturns the minute for time, in the range 0 to 59.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MINUTE(\'2008-02-03 10:05:03\');\n -> 5\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (42,30,'DAY','Syntax:\nDAY(date)\n\nDAY() is a synonym for DAYOFMONTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (43,35,'MID','Syntax:\nMID(str,pos,len)\n\nMID(str,pos,len) is a synonym for SUBSTRING(str,pos,len).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (44,14,'UUID','Syntax:\nUUID()\n\nReturns a Universal Unique Identifier (UUID) generated according to\n"DCE 1.1: Remote Procedure Call" (Appendix A) CAE (Common Applications\nEnvironment) Specifications published by The Open Group in October 1997\n(Document Number C706,\nhttp://www.opengroup.org/public/pubs/catalog/c706.htm).\n\nA UUID is designed as a number that is globally unique in space and\ntime. Two calls to UUID() are expected to generate two different\nvalues, even if these calls are performed on two separate computers\nthat are not connected to each other.\n\nA UUID is a 128-bit number represented by a utf8 string of five\nhexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format:\n\no The first three numbers are generated from a timestamp.\n\no The fourth number preserves temporal uniqueness in case the timestamp\n value loses monotonicity (for example, due to daylight saving time).\n\no The fifth number is an IEEE 802 node number that provides spatial\n uniqueness. A random number is substituted if the latter is not\n available (for example, because the host computer has no Ethernet\n card, or we do not know how to find the hardware address of an\n interface on your operating system). In this case, spatial uniqueness\n cannot be guaranteed. Nevertheless, a collision should have very low\n probability.\n\n Currently, the MAC address of an interface is taken into account only\n on FreeBSD and Linux. On other operating systems, MySQL uses a\n randomly generated 48-bit number.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID();\n -> \'6ccd780c-baba-1026-9564-0040f4311e29\'\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (45,23,'LINESTRING','LineString(pt1,pt2,...)\n\nConstructs a WKB LineString value from a number of WKB Point arguments.\nIf any argument is not a WKB Point, the return value is NULL. If the\nnumber of Point arguments is less than two, the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (45,23,'LINESTRING','LineString(pt1,pt2,...)\n\nConstructs a LineString value from a number of Point or WKB Point\narguments. If the number of arguments is less than two, the return\nvalue is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (46,14,'SLEEP','Syntax:\nSLEEP(duration)\n\nSleeps (pauses) for the number of seconds given by the duration\nargument, then returns 0. If SLEEP() is interrupted, it returns 1. The\nduration may have a fractional part given in microseconds.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (47,15,'CONNECTION_ID','Syntax:\nCONNECTION_ID()\n\nReturns the connection ID (thread ID) for the connection. Every\nconnection has an ID that is unique among the set of currently\nconnected clients.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT CONNECTION_ID();\n -> 23786\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (48,26,'DELETE','Syntax:\nSingle-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n tbl_name[.*] [, tbl_name[.*]] ...\n FROM table_references\n [WHERE where_condition]\n\nOr:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n FROM tbl_name[.*] [, tbl_name[.*]] ...\n USING table_references\n [WHERE where_condition]\n\nFor the single-table syntax, the DELETE statement deletes rows from\ntbl_name and returns a count of the number of deleted rows. This count\ncan be obtained by calling the ROW_COUNT() function (see\nhttp://dev.mysql.com/doc/refman/5.1/en/information-functions.html) The\nWHERE clause, if given, specifies the conditions that identify which\nrows to delete. With no WHERE clause, all rows are deleted. If the\nORDER BY clause is specified, the rows are deleted in the order that is\nspecified. The LIMIT clause places a limit on the number of rows that\ncan be deleted.\n\nFor the multiple-table syntax, DELETE deletes from each tbl_name the\nrows that satisfy the conditions. In this case, ORDER BY and LIMIT\ncannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe deleted. It is specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nCurrently, you cannot delete from a table and select from the same\ntable in a subquery.\n\nAs stated, a DELETE statement with no WHERE clause deletes all rows. A\nfaster way to do this, when you do not need to know the number of\ndeleted rows, is to use TRUNCATE TABLE. However, within a transaction\nor if you have a lock on the table, TRUNCATE TABLE cannot be used\nwhereas DELETE can. See [HELP TRUNCATE TABLE], and [HELP LOCK].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/delete.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/delete.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (48,26,'DELETE','Syntax:\nSingle-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n tbl_name[.*] [, tbl_name[.*]] ...\n FROM table_references\n [WHERE where_condition]\n\nOr:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n FROM tbl_name[.*] [, tbl_name[.*]] ...\n USING table_references\n [WHERE where_condition]\n\nFor the single-table syntax, the DELETE statement deletes rows from\ntbl_name and returns a count of the number of deleted rows. This count\ncan be obtained by calling the ROW_COUNT() function (see\nhttp://dev.mysql.com/doc/refman/5.1/en/information-functions.html) The\nWHERE clause, if given, specifies the conditions that identify which\nrows to delete. With no WHERE clause, all rows are deleted. If the\nORDER BY clause is specified, the rows are deleted in the order that is\nspecified. The LIMIT clause places a limit on the number of rows that\ncan be deleted.\n\nFor the multiple-table syntax, DELETE deletes from each tbl_name the\nrows that satisfy the conditions. In this case, ORDER BY and LIMIT\ncannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe deleted. It is specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nCurrently, you cannot delete from a table and select from the same\ntable in a subquery.\n\nYou need the DELETE privilege on a table to delete rows from it. You\nneed only the SELECT privilege for any columns that are only read, such\nas those named in the WHERE clause.\n\nAs stated, a DELETE statement with no WHERE clause deletes all rows. A\nfaster way to do this, when you do not need to know the number of\ndeleted rows, is to use TRUNCATE TABLE. However, within a transaction\nor if you have a lock on the table, TRUNCATE TABLE cannot be used\nwhereas DELETE can. See [HELP TRUNCATE TABLE], and [HELP LOCK].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/delete.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/delete.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (49,4,'ROUND','Syntax:\nROUND(X), ROUND(X,D)\n\nRounds the argument X to D decimal places. The rounding algorithm\ndepends on the data type of X. D defaults to 0 if not specified. D can\nbe negative to cause D digits left of the decimal point of the value X\nto become zero.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ROUND(-1.23);\n -> -1\nmysql> SELECT ROUND(-1.58);\n -> -2\nmysql> SELECT ROUND(1.58);\n -> 2\nmysql> SELECT ROUND(1.298, 1);\n -> 1.3\nmysql> SELECT ROUND(1.298, 0);\n -> 1\nmysql> SELECT ROUND(23.298, -1);\n -> 20\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (50,7,'NULLIF','Syntax:\nNULLIF(expr1,expr2)\n\nReturns NULL if expr1 = expr2 is true, otherwise returns expr1. This is\nthe same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT NULLIF(1,1);\n -> NULL\nmysql> SELECT NULLIF(1,2);\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (51,22,'CLOSE','Syntax:\nCLOSE cursor_name\n\nThis statement closes a previously opened cursor.\n\nIf not closed explicitly, a cursor is closed at the end of the compound\nstatement in which it was declared.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/close.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/close.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (52,26,'STOP SLAVE','Syntax:\nSTOP SLAVE [thread_type [, thread_type] ... ]\n\nthread_type: IO_THREAD | SQL_THREAD\n\nStops the slave threads. STOP SLAVE requires the SUPER privilege.\n\nLike START SLAVE, this statement may be used with the IO_THREAD and\nSQL_THREAD options to name the thread or threads to be stopped.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/stop-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/stop-slave.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (52,25,'STOP SLAVE','Syntax:\nSTOP SLAVE [thread_type [, thread_type] ... ]\n\nthread_type: IO_THREAD | SQL_THREAD\n\nStops the slave threads. STOP SLAVE requires the SUPER privilege.\n\nLike START SLAVE, this statement may be used with the IO_THREAD and\nSQL_THREAD options to name the thread or threads to be stopped.\n\n*Note*: The transactional behavior of STOP SLAVE changed in MySQL\n5.1.35. Previously, it took effect immediately; beginning with MySQL\n5.1.35, it waits until the current replication event group (if any) has\nfinished executing, or until the user issues a KILL QUERY or KILL\nCONNECTION statement. (Bug#319 (http://bugs.mysql.com/319) Bug#38205\n(http://bugs.mysql.com/38205))\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/stop-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/stop-slave.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (53,30,'TIMEDIFF','Syntax:\nTIMEDIFF(expr1,expr2)\n\nTIMEDIFF() returns expr1 - expr2 expressed as a time value. expr1 and\nexpr2 are time or date-and-time expressions, but both must be of the\nsame type.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMEDIFF(\'2000:01:01 00:00:00\',\n -> \'2000:01:01 00:00:00.000001\');\n -> \'-00:00:00.000001\'\nmysql> SELECT TIMEDIFF(\'2008-12-31 23:59:59.000001\',\n -> \'2008-12-30 01:01:01.000002\');\n -> \'46:58:57.999999\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (54,35,'REPLACE FUNCTION','Syntax:\nREPLACE(str,from_str,to_str)\n\nReturns the string str with all occurrences of the string from_str\nreplaced by the string to_str. REPLACE() performs a case-sensitive\nmatch when searching for from_str.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT REPLACE(\'www.mysql.com\', \'w\', \'Ww\');\n -> \'WwWwWw.mysql.com\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (55,27,'USE','Syntax:\nUSE db_name\n\nThe USE db_name statement tells MySQL to use the db_name database as\nthe default (current) database for subsequent statements. The database\nremains the default until the end of the session or another USE\nstatement is issued:\n\nUSE db1;\nSELECT COUNT(*) FROM mytable; # selects from db1.mytable\nUSE db2;\nSELECT COUNT(*) FROM mytable; # selects from db2.mytable\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/use.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/use.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (56,3,'LINEFROMTEXT','LineFromText(wkt[,srid]), LineStringFromText(wkt[,srid])\n\nConstructs a LINESTRING value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (57,7,'CASE OPERATOR','Syntax:\nCASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN\nresult ...] [ELSE result] END\n\nCASE WHEN [condition] THEN result [WHEN [condition] THEN result ...]\n[ELSE result] END\n\nThe first version returns the result where value=compare_value. The\nsecond version returns the result for the first condition that is true.\nIf there was no matching result value, the result after ELSE is\nreturned, or NULL if there is no ELSE part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT CASE 1 WHEN 1 THEN \'one\'\n -> WHEN 2 THEN \'two\' ELSE \'more\' END;\n -> \'one\'\nmysql> SELECT CASE WHEN 1>0 THEN \'true\' ELSE \'false\' END;\n -> \'true\'\nmysql> SELECT CASE BINARY \'B\'\n -> WHEN \'a\' THEN 1 WHEN \'b\' THEN 2 END;\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (58,26,'SHOW MASTER STATUS','Syntax:\nSHOW MASTER STATUS\n\nProvides status information about the binary log files of the master.\nExample:\n\nmysql> SHOW MASTER STATUS;\n+---------------+----------+--------------+------------------+\n| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |\n+---------------+----------+--------------+------------------+\n| mysql-bin.003 | 73 | test | manual,mysql |\n+---------------+----------+--------------+------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-master-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-master-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (58,25,'SHOW MASTER STATUS','Syntax:\nSHOW MASTER STATUS\n\nThis statement provides status information about the binary log files\nof the master. It requires either the SUPER or REPLICATION CLIENT\nprivilege.\n\nExample:\n\nmysql> SHOW MASTER STATUS;\n+---------------+----------+--------------+------------------+\n| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |\n+---------------+----------+--------------+------------------+\n| mysql-bin.003 | 73 | test | manual,mysql |\n+---------------+----------+--------------+------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-master-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-master-status.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (59,30,'ADDTIME','Syntax:\nADDTIME(expr1,expr2)\n\nADDTIME() adds expr2 to expr1 and returns the result. expr1 is a time\nor datetime expression, and expr2 is a time expression.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT ADDTIME(\'2007-12-31 23:59:59.999999\', \'1 1:1:1.000002\');\n -> \'2008-01-02 01:01:01.000001\'\nmysql> SELECT ADDTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'03:00:01.999997\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (60,32,'SPATIAL','MySQL can create spatial indexes using syntax similar to that for\ncreating regular indexes, but extended with the SPATIAL keyword.\nCurrently, columns in spatial indexes must be declared NOT NULL. The\nfollowing examples demonstrate how to create spatial indexes:\n\no With CREATE TABLE:\n\nCREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g));\n\no With ALTER TABLE:\n\nALTER TABLE geom ADD SPATIAL INDEX(g);\n\no With CREATE INDEX:\n\nCREATE SPATIAL INDEX sp_index ON geom (g);\n\nFor MyISAM tables, SPATIAL INDEX creates an R-tree index. For storage\nengines that support non-spatial indexing of spatial columns, the\nengine creates a B-tree index. A B-tree index on spatial values will be\nuseful for exact-value lookups, but not for range scans.\n\nFor more information on indexing spatial columns, see [HELP CREATE\nINDEX].\n\nTo drop spatial indexes, use ALTER TABLE or DROP INDEX:\n\no With ALTER TABLE:\n\nALTER TABLE geom DROP INDEX g;\n\no With DROP INDEX:\n\nDROP INDEX sp_index ON geom;\n\nExample: Suppose that a table geom contains more than 32,000\ngeometries, which are stored in the column g of type GEOMETRY. The\ntable also has an AUTO_INCREMENT column fid for storing object ID\nvalues.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (60,32,'SPATIAL','MySQL can create spatial indexes using syntax similar to that for\ncreating regular indexes, but extended with the SPATIAL keyword.\nCurrently, columns in spatial indexes must be declared NOT NULL. The\nfollowing examples demonstrate how to create spatial indexes:\n\no With CREATE TABLE:\n\nCREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g));\n\no With ALTER TABLE:\n\nALTER TABLE geom ADD SPATIAL INDEX(g);\n\no With CREATE INDEX:\n\nCREATE SPATIAL INDEX sp_index ON geom (g);\n\nFor MyISAM tables, SPATIAL INDEX creates an R-tree index. For storage\nengines that support nonspatial indexing of spatial columns, the engine\ncreates a B-tree index. A B-tree index on spatial values will be useful\nfor exact-value lookups, but not for range scans.\n\nFor more information on indexing spatial columns, see [HELP CREATE\nINDEX].\n\nTo drop spatial indexes, use ALTER TABLE or DROP INDEX:\n\no With ALTER TABLE:\n\nALTER TABLE geom DROP INDEX g;\n\no With DROP INDEX:\n\nDROP INDEX sp_index ON geom;\n\nExample: Suppose that a table geom contains more than 32,000\ngeometries, which are stored in the column g of type GEOMETRY. The\ntable also has an AUTO_INCREMENT column fid for storing object ID\nvalues.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (61,30,'TIMESTAMPDIFF','Syntax:\nTIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)\n\nReturns datetime_expr2 - datetime_expr1, where datetime_expr1 and\ndatetime_expr2 are date or datetime expressions. One expression may be\na date and the other a datetime; a date value is treated as a datetime\nhaving the time part \'00:00:00\' where necessary. The unit for the\nresult (an integer) is given by the unit argument. The legal values for\nunit are the same as those listed in the description of the\nTIMESTAMPADD() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPDIFF(MONTH,\'2003-02-01\',\'2003-05-01\');\n -> 3\nmysql> SELECT TIMESTAMPDIFF(YEAR,\'2002-05-01\',\'2001-01-01\');\n -> -1\nmysql> SELECT TIMESTAMPDIFF(MINUTE,\'2003-02-01\',\'2003-05-01 12:05:55\');\n -> 128885\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (62,35,'UPPER','Syntax:\nUPPER(str)\n\nReturns the string str with all characters changed to uppercase\naccording to the current character set mapping. The default is latin1\n(cp1252 West European).\n\nmysql> SELECT UPPER(\'Hej\');\n -> \'HEJ\'\n\nUPPER() is ineffective when applied to binary strings (BINARY,\nVARBINARY, BLOB). The description of LOWER() shows how to perform\nlettercase conversion of binary strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (63,30,'FROM_UNIXTIME','Syntax:\nFROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)\n\nReturns a representation of the unix_timestamp argument as a value in\n\'YYYY-MM-DD HH:MM:SS\' or YYYYMMDDHHMMSS.uuuuuu format, depending on\nwhether the function is used in a string or numeric context. The value\nis expressed in the current time zone. unix_timestamp is an internal\ntimestamp value such as is produced by the UNIX_TIMESTAMP() function.\n\nIf format is given, the result is formatted according to the format\nstring, which is used the same way as listed in the entry for the\nDATE_FORMAT() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_UNIXTIME(1196440219);\n -> \'2007-11-30 10:30:19\'\nmysql> SELECT FROM_UNIXTIME(1196440219) + 0;\n -> 20071130103019.000000\nmysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),\n -> \'%Y %D %M %h:%i:%s %x\');\n -> \'2007 30th November 10:30:59 2007\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (64,20,'MEDIUMBLOB','MEDIUMBLOB\n\nA BLOB column with a maximum length of 16,777,215 (224 - 1) bytes. Each\nMEDIUMBLOB value is stored using a three-byte length prefix that\nindicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (65,7,'IFNULL','Syntax:\nIFNULL(expr1,expr2)\n\nIf expr1 is not NULL, IFNULL() returns expr1; otherwise it returns\nexpr2. IFNULL() returns a numeric or string value, depending on the\ncontext in which it is used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT IFNULL(1,0);\n -> 1\nmysql> SELECT IFNULL(NULL,10);\n -> 10\nmysql> SELECT IFNULL(1/0,10);\n -> 10\nmysql> SELECT IFNULL(1/0,\'yes\');\n -> \'yes\'\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (66,26,'SHOW FUNCTION CODE','Syntax:\nSHOW FUNCTION CODE func_name\n\nThis statement is similar to SHOW PROCEDURE CODE but for stored\nfunctions. See [HELP SHOW PROCEDURE CODE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-function-code.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-function-code.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (67,26,'SHOW ERRORS','Syntax:\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW COUNT(*) ERRORS\n\nThis statement is similar to SHOW WARNINGS, except that instead of\ndisplaying errors, warnings, and notes, it displays only errors.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nThe SHOW COUNT(*) ERRORS statement displays the number of errors. You\ncan also retrieve this number from the error_count variable:\n\nSHOW COUNT(*) ERRORS;\nSELECT @@error_count;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-errors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-errors.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (66,25,'SHOW FUNCTION CODE','Syntax:\nSHOW FUNCTION CODE func_name\n\nThis statement is similar to SHOW PROCEDURE CODE but for stored\nfunctions. See [HELP SHOW PROCEDURE CODE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-function-code.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-function-code.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (67,25,'SHOW ERRORS','Syntax:\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW COUNT(*) ERRORS\n\nThis statement is similar to SHOW WARNINGS, except that instead of\ndisplaying errors, warnings, and notes, it displays only errors.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nThe SHOW COUNT(*) ERRORS statement displays the number of errors. You\ncan also retrieve this number from the error_count variable:\n\nSHOW COUNT(*) ERRORS;\nSELECT @@error_count;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-errors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-errors.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (68,17,'LEAST','Syntax:\nLEAST(value1,value2,...)\n\nWith two or more arguments, returns the smallest (minimum-valued)\nargument. The arguments are compared using the following rules:\n\no If the return value is used in an INTEGER context or all arguments\n are integer-valued, they are compared as integers.\n\no If the return value is used in a REAL context or all arguments are\n real-valued, they are compared as reals.\n\no If any argument is a case-sensitive string, the arguments are\n compared as case-sensitive strings.\n\no In all other cases, the arguments are compared as case-insensitive\n strings.\n\nLEAST() returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT LEAST(2,0);\n -> 0\nmysql> SELECT LEAST(34.0,3.0,5.0,767.0);\n -> 3.0\nmysql> SELECT LEAST(\'B\',\'A\',\'C\');\n -> \'A\'\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (69,17,'=','=\n\nEqual:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 = 0;\n -> 0\nmysql> SELECT \'0\' = 0;\n -> 1\nmysql> SELECT \'0.0\' = 0;\n -> 1\nmysql> SELECT \'0.01\' = 0;\n -> 0\nmysql> SELECT \'.01\' = 0.01;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (70,35,'REVERSE','Syntax:\nREVERSE(str)\n\nReturns the string str with the order of the characters reversed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT REVERSE(\'abc\');\n -> \'cba\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (71,17,'ISNULL','Syntax:\nISNULL(expr)\n\nIf expr is NULL, ISNULL() returns 1, otherwise it returns 0.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT ISNULL(1+1);\n -> 0\nmysql> SELECT ISNULL(1/0);\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (72,20,'BINARY','BINARY(M)\n\nThe BINARY type is similar to the CHAR type, but stores binary byte\nstrings rather than non-binary character strings. M represents the\ncolumn length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (72,20,'BINARY','BINARY(M)\n\nThe BINARY type is similar to the CHAR type, but stores binary byte\nstrings rather than nonbinary character strings. M represents the\ncolumn length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (73,20,'BLOB DATA TYPE','A BLOB is a binary large object that can hold a variable amount of\ndata. The four BLOB types are TINYBLOB, BLOB, MEDIUMBLOB, and LONGBLOB.\nThese differ only in the maximum length of the values they can hold.\nThe four TEXT types are TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT. These\ncorrespond to the four BLOB types and have the same maximum lengths and\nstorage requirements. See\nhttp://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html.\n\nU…: http://dev.mysql.com/doc/refman/5.1/en/blob.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/blob.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (74,34,'BOUNDARY','Boundary(g)\n\nReturns a geometry that is the closure of the combinatorial boundary of\nthe geometry value g.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (75,9,'CREATE USER','Syntax:\nCREATE USER user [IDENTIFIED BY [PASSWORD] \'password\']\n [, user [IDENTIFIED BY [PASSWORD] \'password\']] ...\n\nThe CREATE USER statement creates new MySQL accounts. To use it, you\nmust have the global CREATE USER privilege or the INSERT privilege for\nthe mysql database. For each account, CREATE USER creates a new row in\nthe mysql.user table that has no privileges. An error occurs if the\naccount already exists. Each account is named using the same format as\nfor the GRANT statement; for example, \'jeffrey\'@\'localhost\'. If you\nspecify only the user name part of the account name, a host name part\nof \'%\' is used. For additional information about specifying account\nnames, see [HELP GRANT].\n\nThe account can be given a password with the optional IDENTIFIED BY\nclause. The user value and the password are given the same way as for\nthe GRANT statement. In particular, to specify the password in plain\ntext, omit the PASSWORD keyword. To specify the password as the hashed\nvalue as returned by the PASSWORD() function, include the PASSWORD\nkeyword. See [HELP GRANT].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-user.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (76,23,'POINT','Point(x,y)\n\nConstructs a WKB Point using its coordinates.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (76,23,'POINT','Point(x,y)\n\nConstructs a Point using its coordinates.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (77,15,'CURRENT_USER','Syntax:\nCURRENT_USER, CURRENT_USER()\n\nReturns the user name and host name combination for the MySQL account\nthat the server used to authenticate the current client. This account\ndetermines your access privileges. The return value is a string in the\nutf8 character set.\n\nThe value of CURRENT_USER() can differ from the value of USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\nmysql> SELECT * FROM mysql.user;\nERROR 1044: Access denied for user \'\'@\'localhost\' to\ndatabase \'mysql\'\nmysql> SELECT CURRENT_USER();\n -> \'@localhost\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (78,35,'LCASE','Syntax:\nLCASE(str)\n\nLCASE() is a synonym for LOWER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (79,17,'<=','Syntax:\n<=\n\nLess than or equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 0.1 <= 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (80,26,'SHOW PROFILES','Syntax:\nSHOW PROFILE [type [, type] ... ]\n [FOR QUERY n]\n [LIMIT row_count [OFFSET offset]]\n\ntype:\n ALL\n | BLOCK IO\n | CONTEXT SWITCHES\n | CPU\n | IPC\n | MEMORY\n | PAGE FAULTS\n | SOURCE\n | SWAPS\n\nThe SHOW PROFILES and SHOW PROFILE statements display profiling\ninformation that indicates resource usage for statements executed\nduring the course of the current session.\n\nProfiling is controlled by the profiling session variable, which has a\ndefault value of 0 (OFF). Profiling is enabled by setting profiling to\n1 or ON:\n\nmysql> SET profiling = 1;\n\nSHOW PROFILES displays a list of the most recent statements sent to the\nmaster. The size of the list is controlled by the\nprofiling_history_size session variable, which has a default value of\n15. The maximum value is 100. Setting the value to 0 has the practical\neffect of disabling profiling.\n\nAll statements are profiled except SHOW PROFILES and SHOW PROFILE, so\nyou will find neither of those statements in the profile list.\nMalformed statements are profiled. For example, SHOW PROFILING is an\nillegal statement, and a syntax error occurs if you try to execute it,\nbut it will show up in the profiling list.\n\nSHOW PROFILE displays detailed information about a single statement.\nWithout the FOR QUERY n clause, the output pertains to the most\nrecently executed statement. If FOR QUERY n is included, SHOW PROFILE\ndisplays information for statement n. The values of n correspond to the\nQuery_ID values displayed by SHOW PROFILES.\n\nThe LIMIT row_count clause may be given to limit the output to\nrow_count rows. If LIMIT is given, OFFSET offset may be added to begin\nthe output offset rows into the full set of rows.\n\nBy default, SHOW PROFILE displays Status and Duration columns. The\nStatus values are like the State values displayed by SHOW PROCESSLIST,\nalthought there might be some minor differences in interpretion for the\ntwo statements for some status values (see\nhttp://dev.mysql.com/doc/refman/5.1/en/thread-information.html).\n\nOp… type values may be specified to display specific additional\ntypes of information:\n\no ALL displays all information\n\no BLOCK IO displays counts for block input and output operations\n\no CONTEXT SWITCHES displays counts for voluntary and involuntary\n context switches\n\no CPU displays user and system CPU usage times\n\no IPC displays counts for messages sent and received\n\no MEMORY is not currently implemented\n\no PAGE FAULTS displays counts for major and minor page faults\n\no SOURCE displays the names of functions from the source code, together\n with the name and line number of the file in which the function\n occurs\n\no SWAPS displays swap counts\n\nProfiling is enabled per session. When a session ends, its profiling\ninformation is lost.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html\n\n','mysql> SELECT @@profiling;\n+-------------+\n| @@profiling |\n+-------------+\n| 0 |\n+-------------+\n1 row in set (0.00 sec)\n\nmysql> SET profiling = 1;\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> DROP TABLE IF EXISTS t1;\nQuery OK, 0 rows affected, 1 warning (0.00 sec)\n\nmysql> CREATE TABLE T1 (id INT);\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SHOW PROFILES;\n+----------+----------+--------------------------+\n| Query_ID | Duration | Query |\n+----------+----------+--------------------------+\n| 0 | 0.000088 | SET PROFILING = 1 |\n| 1 | 0.000136 | DROP TABLE IF EXISTS t1 |\n| 2 | 0.011947 | CREATE TABLE t1 (id INT) |\n+----------+----------+--------------------------+\n3 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE;\n+----------------------+----------+\n| Status | Duration |\n+----------------------+----------+\n| checking permissions | 0.000040 |\n| creating table | 0.000056 |\n| After create | 0.011363 |\n| query end | 0.000375 |\n| freeing items | 0.000089 |\n| logging slow query | 0.000019 |\n| cleaning up | 0.000005 |\n+----------------------+----------+\n7 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE FOR QUERY 1;\n+--------------------+----------+\n| Status | Duration |\n+--------------------+----------+\n| query end | 0.000107 |\n| freeing items | 0.000008 |\n| logging slow query | 0.000015 |\n| cleaning up | 0.000006 |\n+--------------------+----------+\n4 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE CPU FOR QUERY 2;\n+----------------------+----------+----------+------------+\n| Status | Duration | CPU_user | CPU_system |\n+----------------------+----------+----------+------------+\n| checking permissions | 0.000040 | 0.000038 | 0.000002 |\n| creating table | 0.000056 | 0.000028 | 0.000028 |\n| After create | 0.011363 | 0.000217 | 0.001571 |\n| query end | 0.000375 | 0.000013 | 0.000028 |\n| freeing items | 0.000089 | 0.000010 | 0.000014 |\n| logging slow query | 0.000019 | 0.000009 | 0.000010 |\n| cleaning up | 0.000005 | 0.000003 | 0.000002 |\n+----------------------+----------+----------+------------+\n7 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (81,26,'UPDATE','Syntax:\nSingle-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_reference\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_references\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n\nFor the single-table syntax, the UPDATE statement updates columns of\nexisting rows in the named table with new values. The SET clause\nindicates which columns to modify and the values they should be given.\nEach value can be given as an expression, or the keyword DEFAULT to set\na column explicitly to its default value. The WHERE clause, if given,\nspecifies the conditions that identify which rows to update. With no\nWHERE clause, all rows are updated. If the ORDER BY clause is\nspecified, the rows are updated in the order that is specified. The\nLIMIT clause places a limit on the number of rows that can be updated.\n\nFor the multiple-table syntax, UPDATE updates rows in each table named\nin table_references that satisfy the conditions. In this case, ORDER BY\nand LIMIT cannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe updated.\n\ntable_references and where_condition are is specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nThe UPDATE statement supports the following modifiers:\n\no If you use the LOW_PRIORITY keyword, execution of the UPDATE is\n delayed until no other clients are reading from the table. This\n affects only storage engines that use only table-level locking\n (MyISAM, MEMORY, MERGE).\n\no If you use the IGNORE keyword, the update statement does not abort\n even if errors occur during the update. Rows for which duplicate-key\n conflicts occur are not updated. Rows for which columns are updated\n to values that would cause data conversion errors are updated to the\n closest valid values instead.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/update.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/update.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (80,25,'SHOW PROFILES','Syntax:\nSHOW PROFILE [type [, type] ... ]\n [FOR QUERY n]\n [LIMIT row_count [OFFSET offset]]\n\ntype:\n ALL\n | BLOCK IO\n | CONTEXT SWITCHES\n | CPU\n | IPC\n | MEMORY\n | PAGE FAULTS\n | SOURCE\n | SWAPS\n\nThe SHOW PROFILES and SHOW PROFILE statements display profiling\ninformation that indicates resource usage for statements executed\nduring the course of the current session.\n\nProfiling is controlled by the profiling session variable, which has a\ndefault value of 0 (OFF). Profiling is enabled by setting profiling to\n1 or ON:\n\nmysql> SET profiling = 1;\n\nSHOW PROFILES displays a list of the most recent statements sent to the\nmaster. The size of the list is controlled by the\nprofiling_history_size session variable, which has a default value of\n15. The maximum value is 100. Setting the value to 0 has the practical\neffect of disabling profiling.\n\nAll statements are profiled except SHOW PROFILES and SHOW PROFILE, so\nyou will find neither of those statements in the profile list.\nMalformed statements are profiled. For example, SHOW PROFILING is an\nillegal statement, and a syntax error occurs if you try to execute it,\nbut it will show up in the profiling list.\n\nSHOW PROFILE displays detailed information about a single statement.\nWithout the FOR QUERY n clause, the output pertains to the most\nrecently executed statement. If FOR QUERY n is included, SHOW PROFILE\ndisplays information for statement n. The values of n correspond to the\nQuery_ID values displayed by SHOW PROFILES.\n\nThe LIMIT row_count clause may be given to limit the output to\nrow_count rows. If LIMIT is given, OFFSET offset may be added to begin\nthe output offset rows into the full set of rows.\n\nBy default, SHOW PROFILE displays Status and Duration columns. The\nStatus values are like the State values displayed by SHOW PROCESSLIST,\nalthought there might be some minor differences in interpretion for the\ntwo statements for some status values (see\nhttp://dev.mysql.com/doc/refman/5.1/en/thread-information.html).\n\nOp… type values may be specified to display specific additional\ntypes of information:\n\no ALL displays all information\n\no BLOCK IO displays counts for block input and output operations\n\no CONTEXT SWITCHES displays counts for voluntary and involuntary\n context switches\n\no CPU displays user and system CPU usage times\n\no IPC displays counts for messages sent and received\n\no MEMORY is not currently implemented\n\no PAGE FAULTS displays counts for major and minor page faults\n\no SOURCE displays the names of functions from the source code, together\n with the name and line number of the file in which the function\n occurs\n\no SWAPS displays swap counts\n\nProfiling is enabled per session. When a session ends, its profiling\ninformation is lost.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html\n\n','mysql> SELECT @@profiling;\n+-------------+\n| @@profiling |\n+-------------+\n| 0 |\n+-------------+\n1 row in set (0.00 sec)\n\nmysql> SET profiling = 1;\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> DROP TABLE IF EXISTS t1;\nQuery OK, 0 rows affected, 1 warning (0.00 sec)\n\nmysql> CREATE TABLE T1 (id INT);\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SHOW PROFILES;\n+----------+----------+--------------------------+\n| Query_ID | Duration | Query |\n+----------+----------+--------------------------+\n| 0 | 0.000088 | SET PROFILING = 1 |\n| 1 | 0.000136 | DROP TABLE IF EXISTS t1 |\n| 2 | 0.011947 | CREATE TABLE t1 (id INT) |\n+----------+----------+--------------------------+\n3 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE;\n+----------------------+----------+\n| Status | Duration |\n+----------------------+----------+\n| checking permissions | 0.000040 |\n| creating table | 0.000056 |\n| After create | 0.011363 |\n| query end | 0.000375 |\n| freeing items | 0.000089 |\n| logging slow query | 0.000019 |\n| cleaning up | 0.000005 |\n+----------------------+----------+\n7 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE FOR QUERY 1;\n+--------------------+----------+\n| Status | Duration |\n+--------------------+----------+\n| query end | 0.000107 |\n| freeing items | 0.000008 |\n| logging slow query | 0.000015 |\n| cleaning up | 0.000006 |\n+--------------------+----------+\n4 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE CPU FOR QUERY 2;\n+----------------------+----------+----------+------------+\n| Status | Duration | CPU_user | CPU_system |\n+----------------------+----------+----------+------------+\n| checking permissions | 0.000040 | 0.000038 | 0.000002 |\n| creating table | 0.000056 | 0.000028 | 0.000028 |\n| After create | 0.011363 | 0.000217 | 0.001571 |\n| query end | 0.000375 | 0.000013 | 0.000028 |\n| freeing items | 0.000089 | 0.000010 | 0.000014 |\n| logging slow query | 0.000019 | 0.000009 | 0.000010 |\n| cleaning up | 0.000005 | 0.000003 | 0.000002 |\n+----------------------+----------+----------+------------+\n7 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (81,26,'UPDATE','Syntax:\nSingle-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_reference\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_references\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n\nFor the single-table syntax, the UPDATE statement updates columns of\nexisting rows in the named table with new values. The SET clause\nindicates which columns to modify and the values they should be given.\nEach value can be given as an expression, or the keyword DEFAULT to set\na column explicitly to its default value. The WHERE clause, if given,\nspecifies the conditions that identify which rows to update. With no\nWHERE clause, all rows are updated. If the ORDER BY clause is\nspecified, the rows are updated in the order that is specified. The\nLIMIT clause places a limit on the number of rows that can be updated.\n\nFor the multiple-table syntax, UPDATE updates rows in each table named\nin table_references that satisfy the conditions. In this case, ORDER BY\nand LIMIT cannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe updated.\n\ntable_references and where_condition are is specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nYou need the UPDATE privilege only for columns referenced in an UPDATE\nthat are actually updated. You need only the SELECT privilege for any\ncolumns that are read but not modified.\n\nThe UPDATE statement supports the following modifiers:\n\no If you use the LOW_PRIORITY keyword, execution of the UPDATE is\n delayed until no other clients are reading from the table. This\n affects only storage engines that use only table-level locking\n (MyISAM, MEMORY, MERGE).\n\no If you use the IGNORE keyword, the update statement does not abort\n even if errors occur during the update. Rows for which duplicate-key\n conflicts occur are not updated. Rows for which columns are updated\n to values that would cause data conversion errors are updated to the\n closest valid values instead.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/update.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/update.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (82,17,'IS NOT NULL','Syntax:\nIS NOT NULL\n\nTests whether a value is not NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;\n -> 1, 1, 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (83,22,'CASE STATEMENT','Syntax:\nCASE case_value\n WHEN when_value THEN statement_list\n [WHEN when_value THEN statement_list] ...\n [ELSE statement_list]\nEND CASE\n\nOr:\n\nCASE\n WHEN search_condition THEN statement_list\n [WHEN search_condition THEN statement_list] ...\n [ELSE statement_list]\nEND CASE\n\nThe CASE statement for stored programs implements a complex conditional\nconstruct. If a search_condition evaluates to true, the corresponding\nSQL statement list is executed. If no search condition matches, the\nstatement list in the ELSE clause is executed. Each statement_list\nconsists of one or more statements.\n\nIf no when_value or search_condition matches the value tested and the\nCASE statement contains no ELSE clause, a Case not found for CASE\nstatement error results.\n\nEach statement_list consists of one or more statements; an empty\nstatement_list is not allowed. To handle situations where no value is\nmatched by any WHEN clause, use an ELSE containing an empty BEGIN ...\nEND block, as shown in this example: DELIMITER | CREATE PROCEDURE p()\nBEGIN DECLARE v INT DEFAULT 1; CASE v WHEN 2 THEN SELECT v; WHEN 3 THEN\nSELECT 0; ELSE BEGIN END; END CASE; END; | (The indentation used here\nin the ELSE clause is for purposes of clarity only, and is not\notherwise significant.)\n\n*Note*: The syntax of the CASE statement used inside stored programs\ndiffers slightly from that of the SQL CASE expression described in\nhttp://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html. The\nCASE statement cannot have an ELSE NULL clause, and it is terminated\nwith END CASE instead of END.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/case-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/case-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (84,26,'EXECUTE STATEMENT','Syntax:\nEXECUTE stmt_name\n [USING @var_name [, @var_name] ...]\n\nAfter preparing a statement with PREPARE, you execute it with an\nEXECUTE statement that refers to the prepared statement name. If the\nprepared statement contains any parameter markers, you must supply a\nUSING clause that lists user variables containing the values to be\nbound to the parameters. Parameter values can be supplied only by user\nvariables, and the USING clause must name exactly as many variables as\nthe number of parameter markers in the statement.\n\nYou can execute a given prepared statement multiple times, passing\ndifferent variables to it or setting the variables to different values\nbefore each execution.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/execute.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/execute.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (84,25,'EXECUTE STATEMENT','Syntax:\nEXECUTE stmt_name\n [USING @var_name [, @var_name] ...]\n\nAfter preparing a statement with PREPARE, you execute it with an\nEXECUTE statement that refers to the prepared statement name. If the\nprepared statement contains any parameter markers, you must supply a\nUSING clause that lists user variables containing the values to be\nbound to the parameters. Parameter values can be supplied only by user\nvariables, and the USING clause must name exactly as many variables as\nthe number of parameter markers in the statement.\n\nYou can execute a given prepared statement multiple times, passing\ndifferent variables to it or setting the variables to different values\nbefore each execution.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/execute.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/execute.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (85,37,'DROP INDEX','Syntax:\nDROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name\n\nDROP INDEX drops the index named index_name from the table tbl_name.\nThis statement is mapped to an ALTER TABLE statement to drop the index.\nSee [HELP ALTER TABLE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-index.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (86,35,'MATCH AGAINST','Syntax:\nMATCH (col1,col2,...) AGAINST (expr [search_modifier])\n\nMySQL has support for full-text indexing and searching:\n\no A full-text index in MySQL is an index of type FULLTEXT.\n\no Full-text indexes can be used only with MyISAM tables, and can be\n created only for CHAR, VARCHAR, or TEXT columns.\n\no A FULLTEXT index definition can be given in the CREATE TABLE\n statement when a table is created, or added later using ALTER TABLE\n or CREATE INDEX.\n\no For large data sets, it is much faster to load your data into a table\n that has no FULLTEXT index and then create the index after that, than\n to load data into a table that has an existing FULLTEXT index.\n\nFull-text searching is performed using MATCH() ... AGAINST syntax.\nMATCH() takes a comma-separated list that names the columns to be\nsearched. AGAINST takes a string to search for, and an optional\nmodifier that indicates what type of search to perform. The search\nstring must be a literal string, not a variable or a column name. There\nare three types of full-text searches:\n\no A boolean search interprets the search string using the rules of a\n special query language. The string contains the words to search for.\n It can also contain operators that specify requirements such that a\n word must be present or absent in matching rows, or that it should be\n weighted higher or lower than usual. Common words such as "some" or\n "then" are stopwords and do not match if present in the search\n string. The IN BOOLEAN MODE modifier specifies a boolean search. For\n more information, see\n http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html.\n\no A natural language search interprets the search string as a phrase in\n natural human language (a phrase in free text). There are no special\n operators. The stopword list applies. In addition, words that are\n present in 50% or more of the rows are considered common and do not\n match. Full-text searches are natural language searches if the IN\n NATURAL LANGUAGE MODE modifier is given or if no modifier is given.\n\no A query expansion search is a modification of a natural language\n search. The search string is used to perform a natural language\n search. Then words from the most relevant rows returned by the search\n are added to the search string and the search is done again. The\n query returns the rows from the second search. The IN NATURAL\n LANGUAGE MODE WITH QUERY EXPANSION or WITH QUERY EXPANSION modifier\n specifies a query expansion search. For more information, see\n http://dev.mysql.com/doc/refman/5.1/en/fulltext-query-expansion.html.\n\nThe IN NATURAL LANGUAGE MODE and IN NATURAL LANGUAGE MODE WITH QUERY\nEXPANSION modifiers were added in MySQL 5.1.7.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html\n\n','mysql> SELECT id, body, MATCH (title,body) AGAINST\n -> (\'Security implications of running MySQL as root\'\n -> IN NATURAL LANGUAGE MODE) AS score\n -> FROM articles WHERE MATCH (title,body) AGAINST\n -> (\'Security implications of running MySQL as root\'\n -> IN NATURAL LANGUAGE MODE);\n+----+-------------------------------------+-----------------+\n| id | body | score |\n+----+-------------------------------------+-----------------+\n| 4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |\n| 6 | When configured properly, MySQL ... | 1.3114095926285 |\n+----+-------------------------------------+-----------------+\n2 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (87,37,'CREATE EVENT','Syntax:\nCREATE \n [DEFINER = { user | CURRENT_USER }]\n EVENT \n [IF NOT EXISTS]\n event_name \n ON SCHEDULE schedule\n [ON COMPLETION [NOT] PRESERVE]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n DO sql_statement;\n\nschedule:\n AT timestamp [+ INTERVAL interval] ...\n | EVERY interval \n [STARTS timestamp [+ INTERVAL interval] ...] \n [ENDS timestamp [+ INTERVAL interval] ...]\n\ninterval:\n quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |\n WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |\n DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}\n\nThis statement creates and schedules a new event. It requires the EVENT\nprivilege for the schema in which the event is to be created.\n\nThe minimum requirements for a valid CREATE EVENT statement are as\nfollows:\n\no The keywords CREATE EVENT plus an event name, which uniquely\n identifies the event in the current schema. (Prior to MySQL 5.1.12,\n the event name needed to be unique only among events created by the\n same user on a given database.)\n\no An ON SCHEDULE clause, which determines when and how often the event\n executes.\n\no A DO clause, which contains the SQL statement to be executed by an\n event.\n\nThis is an example of a minimal CREATE EVENT statement:\n\nCREATE EVENT myevent\n ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR\n DO\n UPDATE myschema.mytable SET mycol = mycol + 1;\n\nThe previous statement creates an event named myevent. This event\nexecutes once --- one hour following its creation --- by running an SQL\nstatement that increments the value of the myschema.mytable table\'s\nmycol column by 1.\n\nThe event_name must be a valid MySQL identifier with a maximum length\nof 64 characters. It may be delimited using back ticks, and may be\nqualified with the name of a database schema. An event is associated\nwith both a MySQL user (the definer) and a schema, and its name must be\nunique among names of events within that schema. In general, the rules\ngoverning event names are the same as those for names of stored\nroutines. See http://dev.mysql.com/doc/refman/5.1/en/identifiers.html.\n\nIf no schema is indicated as part of event_name, the default (current)\nschema is assumed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-event.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (87,37,'CREATE EVENT','Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n EVENT\n [IF NOT EXISTS]\n event_name\n ON SCHEDULE schedule\n [ON COMPLETION [NOT] PRESERVE]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n DO sql_statement;\n\nschedule:\n AT timestamp [+ INTERVAL interval] ...\n | EVERY interval\n [STARTS timestamp [+ INTERVAL interval] ...]\n [ENDS timestamp [+ INTERVAL interval] ...]\n\ninterval:\n quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |\n WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |\n DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}\n\nThis statement creates and schedules a new event. It requires the EVENT\nprivilege for the schema in which the event is to be created.\n\nThe minimum requirements for a valid CREATE EVENT statement are as\nfollows:\n\no The keywords CREATE EVENT plus an event name, which uniquely\n identifies the event in the current schema. (Prior to MySQL 5.1.12,\n the event name needed to be unique only among events created by the\n same user on a given database.)\n\no An ON SCHEDULE clause, which determines when and how often the event\n executes.\n\no A DO clause, which contains the SQL statement to be executed by an\n event.\n\nThis is an example of a minimal CREATE EVENT statement:\n\nCREATE EVENT myevent\n ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR\n DO\n UPDATE myschema.mytable SET mycol = mycol + 1;\n\nThe previous statement creates an event named myevent. This event\nexecutes once --- one hour following its creation --- by running an SQL\nstatement that increments the value of the myschema.mytable table\'s\nmycol column by 1.\n\nThe event_name must be a valid MySQL identifier with a maximum length\nof 64 characters. It may be delimited using back ticks, and may be\nqualified with the name of a database schema. An event is associated\nwith both a MySQL user (the definer) and a schema, and its name must be\nunique among names of events within that schema. In general, the rules\ngoverning event names are the same as those for names of stored\nroutines. See http://dev.mysql.com/doc/refman/5.1/en/identifiers.html.\n\nIf no schema is indicated as part of event_name, the default (current)\nschema is assumed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-event.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (88,4,'ABS','Syntax:\nABS(X)\n\nReturns the absolute value of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ABS(2);\n -> 2\nmysql> SELECT ABS(-32);\n -> 32\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (89,31,'POLYFROMWKB','PolyFromWKB(wkb[,srid]), PolygonFromWKB(wkb[,srid])\n\nConstructs a POLYGON value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (90,35,'NOT LIKE','Syntax:\nexpr NOT LIKE pat [ESCAPE \'escape_char\']\n\nThis is the same as NOT (expr LIKE pat [ESCAPE \'escape_char\']).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (91,35,'SPACE','Syntax:\nSPACE(N)\n\nReturns a string consisting of N space characters.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SPACE(6);\n -> \' \'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (92,6,'MBR DEFINITION','Its MBR (Minimum Bounding Rectangle), or Envelope. This is the bounding\ngeometry, formed by the minimum and maximum (X,Y) coordinates:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-class-geometry.html\n\n','((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n','http://dev.mysql.com/doc/refman/5.1/en/gis-class-geometry.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (93,23,'GEOMETRYCOLLECTION','GeometryCollection(g1,g2,...)\n\nConstructs a WKB GeometryCollection. If any argument is not a\nwell-formed WKB representation of a geometry, the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (93,23,'GEOMETRYCOLLECTION','GeometryCollection(g1,g2,...)\n\nConstructs a GeometryCollection.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (94,16,'MAX','Syntax:\nMAX([DISTINCT] expr)\n\nReturns the maximum value of expr. MAX() may take a string argument; in\nsuch cases, it returns the maximum string value. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html. The DISTINCT\nkeyword can be used to find the maximum of the distinct values of expr,\nhowever, this produces the same result as omitting DISTINCT.\n\nMAX() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name, MIN(test_score), MAX(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (95,21,'CREATE FUNCTION UDF','Syntax:\nCREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL}\n SONAME shared_library_name\n\nA user-defined function (UDF) is a way to extend MySQL with a new\nfunction that works like a native (built-in) MySQL function such as\nABS() or CONCAT().\n\nfunction_name is the name that should be used in SQL statements to\ninvoke the function. The RETURNS clause indicates the type of the\nfunction\'s return value. DECIMAL is a legal value after RETURNS, but\ncurrently DECIMAL functions return string values and should be written\nlike STRING functions.\n\nshared_library_name is the basename of the shared object file that\ncontains the code that implements the function. The file must be\nlocated in the plugin directory. This directory is given by the value\nof the plugin_dir system variable.\n\n*Note*: This is a change in MySQL 5.1. For earlier versions of MySQL,\nthe shared object can be located in any directory that is searched by\nyour system\'s dynamic linker.\n\nTo create a function, you must have the INSERT privilege for the mysql\ndatabase. This is necessary because CREATE FUNCTION adds a row to the\nmysql.func system table that records the function\'s name, type, and\nshared library name. If you do not have this table, you should run the\nmysql_upgrade command to create it. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-upgrade.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-function-udf.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-function-udf.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (96,4,'*','Syntax:\n*\n\nMultiplication:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3*5;\n -> 15\nmysql> SELECT 18014398509481984*18014398509481984.0;\n -> 324518553658426726783156020576256.0\nmysql> SELECT 18014398509481984*18014398509481984;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (97,20,'TIMESTAMP','TIMESTAMP\n\nA timestamp. The range is \'1970-01-01 00:00:01\' UTC to \'2038-01-09\n03:14:07\' UTC. TIMESTAMP values are stored as the number of seconds\nsince the epoch (\'1970-01-01 00:00:00\' UTC). A TIMESTAMP cannot\nrepresent the value \'1970-01-01 00:00:00\' because that is equivalent to\n0 seconds from the epoch and the value 0 is reserved for representing\n\'0000-00-00 00:00:00\', the "zero" TIMESTAMP value.\n\nA TIMESTAMP column is useful for recording the date and time of an\nINSERT or UPDATE operation. By default, the first TIMESTAMP column in a\ntable is automatically set to the date and time of the most recent\noperation if you do not assign it a value yourself. You can also set\nany TIMESTAMP column to the current date and time by assigning it a\nNULL value. Variations on automatic initialization and update\nproperties are described in\nhttp://dev.mysql.com/doc/refman/5.1/en/timestamp.html.\n\nA TIMESTAMP value is returned as a string in the format \'YYYY-MM-DD\nHH:MM:SS\' with a display width fixed at 19 characters. To obtain the\nvalue as a number, you should add +0 to the timestamp column.\n\n*Note*: The TIMESTAMP format that was used prior to MySQL 4.1 is not\nsupported in MySQL 5.1; see MySQL 3.23, 4.0, 4.1 Reference Manual for\ninformation regarding the old format.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (98,11,'DES_DECRYPT','Syntax:\nDES_DECRYPT(crypt_str[,key_str])\n\nDecrypts a string encrypted with DES_ENCRYPT(). If an error occurs,\nthis function returns NULL.\n\nThis function works only if MySQL has been configured with SSL support.\nSee http://dev.mysql.com/doc/refman/5.1/en/secure-connections.html.\n\nIf no key_str argument is given, DES_DECRYPT() examines the first byte\nof the encrypted string to determine the DES key number that was used\nto encrypt the original string, and then reads the key from the DES key\nfile to decrypt the message. For this to work, the user must have the\nSUPER privilege. The key file can be specified with the --des-key-file\nserver option.\n\nIf you pass this function a key_str argument, that string is used as\nthe key for decrypting the message.\n\nIf the crypt_str argument does not appear to be an encrypted string,\nMySQL returns the given crypt_str.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (99,26,'CACHE INDEX','Syntax:\nCACHE INDEX\n tbl_index_list [, tbl_index_list] ...\n IN key_cache_name\n\ntbl_index_list:\n tbl_name [[INDEX|KEY] (index_name[, index_name] ...)]\n\nThe CACHE INDEX statement assigns table indexes to a specific key\ncache. It is used only for MyISAM tables.\n\nThe following statement assigns indexes from the tables t1, t2, and t3\nto the key cache named hot_cache:\n\nmysql> CACHE INDEX t1, t2, t3 IN hot_cache;\n+---------+--------------------+----------+----------+\n| Table | Op | Msg_type | Msg_text |\n+---------+--------------------+----------+----------+\n| test.t1 | assign_to_keycache | status | OK |\n| test.t2 | assign_to_keycache | status | OK |\n| test.t3 | assign_to_keycache | status | OK |\n+---------+--------------------+----------+----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cache-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/cache-index.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (99,25,'CACHE INDEX','Syntax:\nCACHE INDEX\n tbl_index_list [, tbl_index_list] ...\n IN key_cache_name\n\ntbl_index_list:\n tbl_name [[INDEX|KEY] (index_name[, index_name] ...)]\n\nThe CACHE INDEX statement assigns table indexes to a specific key\ncache. It is used only for MyISAM tables.\n\nThe following statement assigns indexes from the tables t1, t2, and t3\nto the key cache named hot_cache:\n\nmysql> CACHE INDEX t1, t2, t3 IN hot_cache;\n+---------+--------------------+----------+----------+\n| Table | Op | Msg_type | Msg_text |\n+---------+--------------------+----------+----------+\n| test.t1 | assign_to_keycache | status | OK |\n| test.t2 | assign_to_keycache | status | OK |\n| test.t3 | assign_to_keycache | status | OK |\n+---------+--------------------+----------+----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cache-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/cache-index.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (100,12,'ENDPOINT','EndPoint(ls)\n\nReturns the Point that is the endpoint of the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(EndPoint(GeomFromText(@ls)));\n+-------------------------------------+\n| AsText(EndPoint(GeomFromText(@ls))) |\n+-------------------------------------+\n| POINT(3 3) |\n+-------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (101,11,'COMPRESS','Syntax:\nCOMPRESS(string_to_compress)\n\nCompresses a string and returns the result as a binary string. This\nfunction requires MySQL to have been compiled with a compression\nlibrary such as zlib. Otherwise, the return value is always NULL. The\ncompressed string can be uncompressed with UNCOMPRESS().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT LENGTH(COMPRESS(REPEAT(\'a\',1000)));\n -> 21\nmysql> SELECT LENGTH(COMPRESS(\'\'));\n -> 0\nmysql> SELECT LENGTH(COMPRESS(\'a\'));\n -> 13\nmysql> SELECT LENGTH(COMPRESS(REPEAT(\'a\',16)));\n -> 15\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (102,26,'INSERT','Syntax:\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n {VALUES | VALUE} ({expr | DEFAULT},...),(...),...\n [ ON DUPLICATE KEY UPDATE\n col_name=expr\n [, col_name=expr] ... ]\n\nOr:\n\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name\n SET col_name={expr | DEFAULT}, ...\n [ ON DUPLICATE KEY UPDATE\n col_name=expr\n [, col_name=expr] ... ]\n\nOr:\n\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n SELECT ...\n [ ON DUPLICATE KEY UPDATE\n col_name=expr\n [, col_name=expr] ... ]\n\nINSERT inserts new rows into an existing table. The INSERT ... VALUES\nand INSERT ... SET forms of the statement insert rows based on\nexplicitly specified values. The INSERT ... SELECT form inserts rows\nselected from another table or tables. INSERT ... SELECT is discussed\nfurther in [HELP INSERT SELECT].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert.html');
@@ -174,56 +174,56 @@ insert into help_topic (help_topic_id,he
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (105,3,'MLINEFROMTEXT','MLineFromText(wkt[,srid]), MultiLineStringFromText(wkt[,srid])\n\nConstructs a MULTILINESTRING value using its WKT representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (106,31,'GEOMCOLLFROMWKB','GeomCollFromWKB(wkb[,srid]), GeometryCollectionFromWKB(wkb[,srid])\n\nConstructs a GEOMETRYCOLLECTION value using its WKB representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (107,37,'RENAME TABLE','Syntax:\nRENAME TABLE tbl_name TO new_tbl_name\n [, tbl_name2 TO new_tbl_name2] ...\n\nThis statement renames one or more tables.\n\nThe rename operation is done atomically, which means that no other\nsession can access any of the tables while the rename is running. For\nexample, if you have an existing table old_table, you can create\nanother table new_table that has the same structure but is empty, and\nthen replace the existing table with the empty one as follows (assuming\nthat backup_table does not already exist):\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/rename-table.html\n\n','CREATE TABLE new_table (...);\nRENAME TABLE old_table TO backup_table, new_table TO old_table;\n','http://dev.mysql.com/doc/refman/5.1/en/rename-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (108,20,'BOOLEAN','BOOL, BOOLEAN\n\nThese types are synonyms for TINYINT(1). A value of zero is considered\nfalse. Non-zero values are considered true:\n\nmysql> SELECT IF(0, \'true\', \'false\');\n+------------------------+\n| IF(0, \'true\', \'false\') |\n+------------------------+\n| false |\n+------------------------+\n\nmysql> SELECT IF(1, \'true\', \'false\');\n+------------------------+\n| IF(1, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nmysql> SELECT IF(2, \'true\', \'false\');\n+------------------------+\n| IF(2, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nHowever, the values TRUE and FALSE are merely aliases for 1 and 0,\nrespectively, as shown here:\n\nmysql> SELECT IF(0 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(0 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| true |\n+--------------------------------+\n\nmysql> SELECT IF(1 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(1 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| true |\n+-------------------------------+\n\nmysql> SELECT IF(2 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(2 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| false |\n+-------------------------------+\n\nmysql> SELECT IF(2 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(2 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| false |\n+--------------------------------+\n\nThe last two statements display the results shown because 2 is equal to\nneither 1 nor 0.\n\nWe intend to implement full boolean type handling, in accordance with\nstandard SQL, in a future MySQL release.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (108,20,'BOOLEAN','BOOL, BOOLEAN\n\nThese types are synonyms for TINYINT(1). A value of zero is considered\nfalse. Nonzero values are considered true:\n\nmysql> SELECT IF(0, \'true\', \'false\');\n+------------------------+\n| IF(0, \'true\', \'false\') |\n+------------------------+\n| false |\n+------------------------+\n\nmysql> SELECT IF(1, \'true\', \'false\');\n+------------------------+\n| IF(1, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nmysql> SELECT IF(2, \'true\', \'false\');\n+------------------------+\n| IF(2, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nHowever, the values TRUE and FALSE are merely aliases for 1 and 0,\nrespectively, as shown here:\n\nmysql> SELECT IF(0 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(0 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| true |\n+--------------------------------+\n\nmysql> SELECT IF(1 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(1 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| true |\n+-------------------------------+\n\nmysql> SELECT IF(2 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(2 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| false |\n+-------------------------------+\n\nmysql> SELECT IF(2 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(2 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| false |\n+--------------------------------+\n\nThe last two statements display the results shown because 2 is equal to\nneither 1 nor 0.\n\nWe intend to implement full boolean type handling, in accordance with\nstandard SQL, in a future MySQL release.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (109,14,'DEFAULT','Syntax:\nDEFAULT(col_name)\n\nReturns the default value for a table column. An error results if the\ncolumn has no default value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> UPDATE t SET i = DEFAULT(i)+1 WHERE id < 100;\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (110,4,'MOD','Syntax:\nMOD(N,M), N % M, N MOD M\n\nModulo operation. Returns the remainder of N divided by M.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT MOD(234, 10);\n -> 4\nmysql> SELECT 253 % 7;\n -> 1\nmysql> SELECT MOD(29,9);\n -> 2\nmysql> SELECT 29 MOD 9;\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (111,20,'TINYTEXT','TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 255 (28 - 1) characters. The\neffective maximum length is less if the value contains multi-byte\ncharacters. Each TINYTEXT value is stored using a one-byte length\nprefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (112,19,'OPTIMIZE TABLE','Syntax:\nOPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n\nOPTIMIZE TABLE should be used if you have deleted a large part of a\ntable or if you have made many changes to a table with variable-length\nrows (tables that have VARCHAR, VARBINARY, BLOB, or TEXT columns).\nDeleted rows are maintained in a linked list and subsequent INSERT\noperations reuse old row positions. You can use OPTIMIZE TABLE to\nreclaim the unused space and to defragment the data file.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, OPTIMIZE TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... OPTIMIZE PARTITION to optimize one or more partitions; for\nmore information, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (113,11,'DECODE','Syntax:\nDECODE(crypt_str,pass_str)\n\nDecrypts the encrypted string crypt_str using pass_str as the password.\ncrypt_str should be a string returned from ENCODE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (114,17,'<=>','Syntax:\n<=>\n\nNULL-safe equal. This operator performs an equality comparison like the\n= operator, but returns 1 rather than NULL if both operands are NULL,\nand 0 rather than NULL if one operand is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;\n -> 1, 1, 0\nmysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;\n -> 1, NULL, NULL\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (115,26,'LOAD DATA FROM MASTER','Syntax:\nLOAD DATA FROM MASTER\n\nThis feature is deprecated. We recommend not using it anymore. It is\nsubject to removal in a future version of MySQL.\n\nSince the current implementation of LOAD DATA FROM MASTER and LOAD\nTABLE FROM MASTER is very limited, these statements are deprecated in\nversions 4.1 of MySQL and above. We will introduce a more advanced\ntechnique (called "online backup") in a future version. That technique\nwill have the additional advantage of working with more storage\nengines.\n\nFor MySQL 5.1 and earlier, the recommended alternative solution to\nusing LOAD DATA FROM MASTER or LOAD TABLE FROM MASTER is using\nmysqldump or mysqlhotcopy. The latter requires Perl and two Perl\nmodules (DBI and DBD:mysql) and works for MyISAM and ARCHIVE tables\nonly. With mysqldump, you can create SQL dumps on the master and pipe\n(or copy) these to a mysql client on the slave. This has the advantage\nof working for all storage engines, but can be quite slow, since it\nworks using SELECT.\n\nThis statement takes a snapshot of the master and copies it to the\nslave. It updates the values of MASTER_LOG_FILE and MASTER_LOG_POS so\nthat the slave starts replicating from the correct position. Any table\nand database exclusion rules specified with the --replicate-*-do-* and\n--replicate-*-ignore-* options are honored. --replicate-rewrite-db is\nnot taken into account because a user could use this option to set up a\nnon-unique mapping such as --replicate-rewrite-db="db1->db3" and\n--replicate-rewrite-db="db2->db3", which would confuse the slave when\nloading tables from the master.\n\nUse of this statement is subject to the following conditions:\n\no It works only for MyISAM tables. Attempting to load a non-MyISAM\n table results in the following error:\n\nERROR 1189 (08S01): Net error reading from master\n\no It acquires a global read lock on the master while taking the\n snapshot, which prevents updates on the master during the load\n operation.\n\nIf you are loading large tables, you might have to increase the values\nof net_read_timeout and net_write_timeout on both the master and slave\nservers. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n… that LOAD DATA FROM MASTER does not copy any tables from the mysql\ndatabase. This makes it easy to have different users and privileges on\nthe master and the slave.\n\nTo use LOAD DATA FROM MASTER, the replication account that is used to\nconnect to the master must have the RELOAD and SUPER privileges on the\nmaster and the SELECT privilege for all master tables you want to load.\nAll master tables for which the user does not have the SELECT privilege\nare ignored by LOAD DATA FROM MASTER. This is because the master hides\nthem from the user: LOAD DATA FROM MASTER calls SHOW DATABASES to know\nthe master databases to load, but SHOW DATABASES returns only databases\nfor which the user has some privilege. See [HELP SHOW DATABASES]. On\nthe slave side, the user that issues LOAD DATA FROM MASTER must have\nprivileges for dropping and creating the databases and tables that are\ncopied.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-data-from-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-data-from-master.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (116,26,'RESET','Syntax:\nRESET reset_option [, reset_option] ...\n\nThe RESET statement is used to clear the state of various server\noperations. You must have the RELOAD privilege to execute RESET.\n\nRESET acts as a stronger version of the FLUSH statement. See [HELP\nFLUSH].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (115,25,'LOAD DATA FROM MASTER','Syntax:\nLOAD DATA FROM MASTER\n\nThis feature is deprecated and should be avoided. It is subject to\nremoval in a future version of MySQL.\n\nSince the current implementation of LOAD DATA FROM MASTER and LOAD\nTABLE FROM MASTER is very limited, these statements are deprecated in\nversions 4.1 of MySQL and above. We will introduce a more advanced\ntechnique (called "online backup") in a future version. That technique\nwill have the additional advantage of working with more storage\nengines.\n\nFor MySQL 5.1 and earlier, the recommended alternative solution to\nusing LOAD DATA FROM MASTER or LOAD TABLE FROM MASTER is using\nmysqldump or mysqlhotcopy. The latter requires Perl and two Perl\nmodules (DBI and DBD:mysql) and works for MyISAM and ARCHIVE tables\nonly. With mysqldump, you can create SQL dumps on the master and pipe\n(or copy) these to a mysql client on the slave. This has the advantage\nof working for all storage engines, but can be quite slow, since it\nworks using SELECT.\n\nThis statement takes a snapshot of the master and copies it to the\nslave. It updates the values of MASTER_LOG_FILE and MASTER_LOG_POS so\nthat the slave starts replicating from the correct position. Any table\nand database exclusion rules specified with the --replicate-*-do-* and\n--replicate-*-ignore-* options are honored. --replicate-rewrite-db is\nnot taken into account because a user could use this option to set up a\nnonunique mapping such as --replicate-rewrite-db="db1->db3" and\n--replicate-rewrite-db="db2->db3", which would confuse the slave when\nloading tables from the master.\n\nUse of this statement is subject to the following conditions:\n\no It works only for MyISAM tables. Attempting to load a non-MyISAM\n table results in the following error:\n\nERROR 1189 (08S01): Net error reading from master\n\no It acquires a global read lock on the master while taking the\n snapshot, which prevents updates on the master during the load\n operation.\n\nIf you are loading large tables, you might have to increase the values\nof net_read_timeout and net_write_timeout on both the master and slave\nservers. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n… that LOAD DATA FROM MASTER does not copy any tables from the mysql\ndatabase. This makes it easy to have different users and privileges on\nthe master and the slave.\n\nTo use LOAD DATA FROM MASTER, the replication account that is used to\nconnect to the master must have the RELOAD and SUPER privileges on the\nmaster and the SELECT privilege for all master tables you want to load.\nAll master tables for which the user does not have the SELECT privilege\nare ignored by LOAD DATA FROM MASTER. This is because the master hides\nthem from the user: LOAD DATA FROM MASTER calls SHOW DATABASES to know\nthe master databases to load, but SHOW DATABASES returns only databases\nfor which the user has some privilege. See [HELP SHOW DATABASES]. On\nthe slave side, the user that issues LOAD DATA FROM MASTER must have\nprivileges for dropping and creating the databases and tables that are\ncopied.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-data-from-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-data-from-master.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (116,25,'RESET','Syntax:\nRESET reset_option [, reset_option] ...\n\nThe RESET statement is used to clear the state of various server\noperations. You must have the RELOAD privilege to execute RESET.\n\nRESET acts as a stronger version of the FLUSH statement. See [HELP\nFLUSH].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (117,27,'HELP STATEMENT','Syntax:\nHELP \'search_string\'\n\nThe HELP statement returns online information from the MySQL Reference\nmanual. Its proper operation requires that the help tables in the mysql\ndatabase be initialized with help topic information (see\nhttp://dev.mysql.com/doc/refman/5.1/en/server-side-help-support.html).… HELP statement searches the help tables for the given search string\nand displays the result of the search. The search string is not case\nsensitive.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/help.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/help.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (118,14,'GET_LOCK','Syntax:\nGET_LOCK(str,timeout)\n\nTries to obtain a lock with a name given by the string str, using a\ntimeout of timeout seconds. Returns 1 if the lock was obtained\nsuccessfully, 0 if the attempt timed out (for example, because another\nclient has previously locked the name), or NULL if an error occurred\n(such as running out of memory or the thread was killed with mysqladmin\nkill). If you have a lock obtained with GET_LOCK(), it is released when\nyou execute RELEASE_LOCK(), execute a new GET_LOCK(), or your\nconnection terminates (either normally or abnormally). Locks obtained\nwith GET_LOCK() do not interact with transactions. That is, committing\na transaction does not release any such locks obtained during the\ntransaction.\n\nThis function can be used to implement application locks or to simulate\nrecord locks. Names are locked on a server-wide basis. If a name has\nbeen locked by one client, GET_LOCK() blocks any request by another\nclient for a lock with the same name. This allows clients that agree on\na given lock name to use the name to perform cooperative advisory\nlocking. But be aware that it also allows a client that is not among\nthe set of cooperating clients to lock a name, either inadvertently or\ndeliberately, and thus prevent any of the cooperating clients from\nlocking that name. One way to reduce the likelihood of this is to use\nlock names that are database-specific or application-specific. For\nexample, use lock names of the form db_name.str or app_name.str.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT GET_LOCK(\'lock1\',10);\n -> 1\nmysql> SELECT IS_FREE_LOCK(\'lock2\');\n -> 1\nmysql> SELECT GET_LOCK(\'lock2\',10);\n -> 1\nmysql> SELECT RELEASE_LOCK(\'lock2\');\n -> 1\nmysql> SELECT RELEASE_LOCK(\'lock1\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (119,35,'UCASE','Syntax:\nUCASE(str)\n\nUCASE() is a synonym for UPPER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (120,26,'SHOW BINLOG EVENTS','Syntax:\nSHOW BINLOG EVENTS\n [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\n\nShows the events in the binary log. If you do not specify \'log_name\',\nthe first binary log is displayed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-binlog-events.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-binlog-events.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (120,25,'SHOW BINLOG EVENTS','Syntax:\nSHOW BINLOG EVENTS\n [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\n\nShows the events in the binary log. If you do not specify \'log_name\',\nthe first binary log is displayed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-binlog-events.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-binlog-events.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (121,31,'MPOLYFROMWKB','MPolyFromWKB(wkb[,srid]), MultiPolygonFromWKB(wkb[,srid])\n\nConstructs a MULTIPOLYGON value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (122,22,'ITERATE','Syntax:\nITERATE label\n\nITERATE can appear only within LOOP, REPEAT, and WHILE statements.\nITERATE means "do the loop again."\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/iterate-statement.html\n\n','CREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1: LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN ITERATE label1; END IF;\n LEAVE label1;\n END LOOP label1;\n SET @x = p1;\nEND\n','http://dev.mysql.com/doc/refman/5.1/en/iterate-statement.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (123,26,'DO','Syntax:\nDO expr [, expr] ...\n\nDO executes the expressions but does not return any results. In most\nrespects, DO is shorthand for SELECT expr, ..., but has the advantage\nthat it is slightly faster when you do not care about the result.\n\nDO is useful primarily with functions that have side effects, such as\nRELEASE_LOCK().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/do.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/do.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (124,30,'CURTIME','Syntax:\nCURTIME()\n\nReturns the current time as a value in \'HH:MM:SS\' or HHMMSS.uuuuuu\nformat, depending on whether the function is used in a string or\nnumeric context. The value is expressed in the current time zone.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CURTIME();\n -> \'23:50:26\'\nmysql> SELECT CURTIME() + 0;\n -> 235026.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (125,35,'CHAR_LENGTH','Syntax:\nCHAR_LENGTH(str)\n\nReturns the length of the string str, measured in characters. A\nmulti-byte character counts as a single character. This means that for\na string containing five two-byte characters, LENGTH() returns 10,\nwhereas CHAR_LENGTH() returns 5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (126,20,'BIGINT','BIGINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA large integer. The signed range is -9223372036854775808 to\n9223372036854775807. The unsigned range is 0 to 18446744073709551615.\n\nSERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (127,26,'SET','Syntax:\nSET variable_assignment [, variable_assignment] ...\n\nvariable_assignment:\n user_var_name = expr\n | [GLOBAL | SESSION] system_var_name = expr\n | [@@global. | @@session. | @@]system_var_name = expr\n\nThe SET statement assigns values to different types of variables that\naffect the operation of the server or your client. Older versions of\nMySQL employed SET OPTION, but this syntax is deprecated in favor of\nSET without OPTION.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-option.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-option.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (127,25,'SET','Syntax:\nSET variable_assignment [, variable_assignment] ...\n\nvariable_assignment:\n user_var_name = expr\n | [GLOBAL | SESSION] system_var_name = expr\n | [@@global. | @@session. | @@]system_var_name = expr\n\nThe SET statement assigns values to different types of variables that\naffect the operation of the server or your client. Older versions of\nMySQL employed SET OPTION, but this syntax is deprecated in favor of\nSET without OPTION.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-option.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-option.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (128,4,'CONV','Syntax:\nCONV(N,from_base,to_base)\n\nConverts numbers between different number bases. Returns a string\nrepresentation of the number N, converted from base from_base to base\nto_base. Returns NULL if any argument is NULL. The argument N is\ninterpreted as an integer, but may be specified as an integer or a\nstring. The minimum base is 2 and the maximum base is 36. If to_base is\na negative number, N is regarded as a signed number. Otherwise, N is\ntreated as unsigned. CONV() works with 64-bit precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CONV(\'a\',16,2);\n -> \'1010\'\nmysql> SELECT CONV(\'6E\',18,8);\n -> \'172\'\nmysql> SELECT CONV(-17,10,-18);\n -> \'-H\'\nmysql> SELECT CONV(10+\'10\'+\'10\'+0xa,10,10);\n -> \'40\'\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (129,20,'DATE','DATE\n\nA date. The supported range is \'1000-01-01\' to \'9999-12-31\'. MySQL\ndisplays DATE values in \'YYYY-MM-DD\' format, but allows assignment of\nvalues to DATE columns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (130,26,'SHOW OPEN TABLES','Syntax:\nSHOW OPEN TABLES [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW OPEN TABLES lists the non-TEMPORARY tables that are currently open\nin the table cache. See\nhttp://dev.mysql.com/doc/refman/5.1/en/table-cache.html. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nThe FROM and LIKE clauses may be used beginning with MySQL 5.1.24. The\nLIKE clause, if present, indicates which table names to match. The FROM\nclause, if present, restricts the tables shown to those present in the\ndb_name database.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (130,25,'SHOW OPEN TABLES','Syntax:\nSHOW OPEN TABLES [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW OPEN TABLES lists the non-TEMPORARY tables that are currently open\nin the table cache. See\nhttp://dev.mysql.com/doc/refman/5.1/en/table-cache.html. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nThe FROM and LIKE clauses may be used beginning with MySQL 5.1.24. The\nLIKE clause, if present, indicates which table names to match. The FROM\nclause, if present, restricts the tables shown to those present in the\ndb_name database.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (131,30,'EXTRACT','Syntax:\nEXTRACT(unit FROM date)\n\nThe EXTRACT() function uses the same kinds of unit specifiers as\nDATE_ADD() or DATE_SUB(), but extracts parts from the date rather than\nperforming date arithmetic.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT EXTRACT(YEAR FROM \'2009-07-02\');\n -> 2009\nmysql> SELECT EXTRACT(YEAR_MONTH FROM \'2009-07-02 01:02:03\');\n -> 200907\nmysql> SELECT EXTRACT(DAY_MINUTE FROM \'2009-07-02 01:02:03\');\n -> 20102\nmysql> SELECT EXTRACT(MICROSECOND\n -> FROM \'2003-01-02 10:30:00.000123\');\n -> 123\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (132,11,'ENCRYPT','Syntax:\nENCRYPT(str[,salt])\n\nEncrypts str using the Unix crypt() system call and returns a binary\nstring. The salt argument should be a string with at least two\ncharacters. If no salt argument is given, a random value is used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT ENCRYPT(\'hello\');\n -> \'VxuFAJXVARROc\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (133,26,'SHOW STATUS','Syntax:\nSHOW [GLOBAL | SESSION] STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW STATUS provides server status information. This information also\ncan be obtained using the mysqladmin extended-status command. The LIKE\nclause, if present, indicates which variable names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern:\n\nmysql> SHOW STATUS LIKE \'Key%\';\n+--------------------+----------+\n| Variable_name | Value |\n+--------------------+----------+\n| Key_blocks_used | 14955 |\n| Key_read_requests | 96854827 |\n| Key_reads | 162040 |\n| Key_write_requests | 7589728 |\n| Key_writes | 3813196 |\n+--------------------+----------+\n\nWith the GLOBAL modifier, SHOW STATUS displays the status values for\nall connections to MySQL. With SESSION, it displays the status values\nfor the current connection. If no modifier is present, the default is\nSESSION. LOCAL is a synonym for SESSION.\n\nSome status variables have only a global value. For these, you get the\nsame value for both GLOBAL and SESSION. The scope for each status\nvariable is listed at\nhttp://dev.mysql.com/doc/refman/5.1/en/server-status-variables.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/show-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (133,25,'SHOW STATUS','Syntax:\nSHOW [GLOBAL | SESSION] STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW STATUS provides server status information. This information also\ncan be obtained using the mysqladmin extended-status command. The LIKE\nclause, if present, indicates which variable names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\nThis statement does not require any privilege. It requires only the\nability to connect to the server.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern:\n\nmysql> SHOW STATUS LIKE \'Key%\';\n+--------------------+----------+\n| Variable_name | Value |\n+--------------------+----------+\n| Key_blocks_used | 14955 |\n| Key_read_requests | 96854827 |\n| Key_reads | 162040 |\n| Key_write_requests | 7589728 |\n| Key_writes | 3813196 |\n+--------------------+----------+\n\nWith the GLOBAL modifier, SHOW STATUS displays the status values for\nall connections to MySQL. With SESSION, it displays the status values\nfor the current connection. If no modifier is present, the default is\nSESSION. LOCAL is a synonym for SESSION.\n\nSome status variables have only a global value. For these, you get the\nsame value for both GLOBAL and SESSION. The scope for each status\nvariable is listed at\nhttp://dev.mysql.com/doc/refman/5.1/en/server-status-variables.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/show-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-status.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (134,35,'EXTRACTVALUE','Syntax:\nExtractValue(xml_frag, xpath_expr)\n\nExtractValue() takes two string arguments, a fragment of XML markup\nxml_frag and an XPath expression xpath_expr (also known as a locator);\nit returns the text (CDATA) of the first text node which is a child of\nthe element(s) matched by the XPath expression. It is the equivalent of\nperforming a match using the xpath_expr after appending /text(). In\nother words, ExtractValue(\'<a><b>Sakila</b></a>\', \'/a/b\') and\nExtractValue(\'<a><b>Sakila</b></a>\', \'/a/b/text()\') produce the same\nresult.\n\nIf multiple matches are found, then the content of the first child text\nnode of each matching element is returned (in the order matched) as a\nsingle, space-delimited string.\n\nIf no matching text node is found for the expression (including the\nimplicit /text()) --- for whatever reason, as long as xpath_expr is\nvalid, and xml_frag consists of elements which are properly nested and\nclosed --- an empty string is returned. No distinction is made between\na match on an empty element and no match at all. This is by design.\n\nIf you need to determine whether no matching element was found in\nxml_frag or such an element was found but contained no child text\nnodes, you should test the result of an expression that uses the XPath\ncount() function. For example, both of these statements return an empty\nstring, as shown here:\n\nmysql> SELECT ExtractValue(\'<a><b/></a>\', \'/a/b\');\n+-------------------------------------+\n| ExtractValue(\'<a><b/></a>\', \'/a/b\') |\n+-------------------------------------+\n| |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT ExtractValue(\'<a><c/></a>\', \'/a/b\');\n+-------------------------------------+\n| ExtractValue(\'<a><c/></a>\', \'/a/b\') |\n+-------------------------------------+\n| |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nHowever, you can determine whether there was actually a matching\nelement using the following:\n\nmysql> SELECT ExtractValue(\'<a><b/></a>\', \'count(/a/b)\');\n+-------------------------------------+\n| ExtractValue(\'<a><b/></a>\', \'count(/a/b)\') |\n+-------------------------------------+\n| 1 |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT ExtractValue(\'<a><c/></a>\', \'count(/a/b)\');\n+-------------------------------------+\n| ExtractValue(\'<a><c/></a>\', \'count(/a/b)\') |\n+-------------------------------------+\n| 0 |\n+-------------------------------------+\n1 row in set (0.01 sec)\n\n*Important*: ExtractValue() returns only CDATA, and does not return any\ntags that might be contained within a matching tag, nor any of their\ncontent (see the result returned as val1 in the following example).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html\n\n','mysql> SELECT\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'/a\') AS val1,\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'/a/b\') AS val2,\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'//b\') AS val3,\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'/b\') AS val4,\n -> ExtractValue(\'<a>ccc<b>ddd</b><b>eee</b></a>\', \'//b\') AS val5;\n\n+------+------+------+------+---------+\n| val1 | val2 | val3 | val4 | val5 |\n+------+------+------+------+---------+\n| ccc | ddd | ddd | | ddd eee |\n+------+------+------+------+---------+\n','http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (135,11,'OLD_PASSWORD','Syntax:\nOLD_PASSWORD(str)\n\nOLD_PASSWORD() was added to MySQL when the implementation of PASSWORD()\nwas changed to improve security. OLD_PASSWORD() returns the value of\nthe old (pre-4.1) implementation of PASSWORD() as a binary string, and\nis intended to permit you to reset passwords for any pre-4.1 clients\nthat need to connect to your version 5.1 MySQL server without locking\nthem out. See\nhttp://dev.mysql.com/doc/refman/5.1/en/password-hashing.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (136,22,'SET VARIABLE','Syntax:\nSET var_name = expr [, var_name = expr] ...\n\nThe SET statement in stored programs is an extended version of the\ngeneral SET statement (see [HELP SET]). Referenced variables may be\nones declared inside a stored program, global system variables, or\nuser-defined variables.\n\nThe SET statement in stored programs is implemented as part of the\npre-existing SET syntax. This allows an extended syntax of SET a=x,\nb=y, ... where different variable types (locally declared variables,\nglobal and session server variables, user-defined variables) can be\nmixed. This also allows combinations of local variables and some\noptions that make sense only for system variables; in that case, the\noptions are recognized but ignored.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-statement.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (137,35,'FORMAT','Syntax:\nFORMAT(X,D)\n\nFormats the number X to a format like \'#,###,###.##\', rounded to D\ndecimal places, and returns the result as a string. If D is 0, the\nresult has no decimal point or fractional part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FORMAT(12332.123456, 4);\n -> \'12,332.1235\'\nmysql> SELECT FORMAT(12332.1,4);\n -> \'12,332.1000\'\nmysql> SELECT FORMAT(12332.2,0);\n -> \'12,332\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (138,13,'||','Syntax:\nOR, ||\n\nLogical OR. When both operands are non-NULL, the result is 1 if any\noperand is non-zero, and 0 otherwise. With a NULL operand, the result\nis 1 if the other operand is non-zero, and NULL otherwise. If both\noperands are NULL, the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 || 1;\n -> 1\nmysql> SELECT 1 || 0;\n -> 1\nmysql> SELECT 0 || 0;\n -> 0\nmysql> SELECT 0 || NULL;\n -> NULL\nmysql> SELECT 1 || NULL;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (138,13,'||','Syntax:\nOR, ||\n\nLogical OR. When both operands are non-NULL, the result is 1 if any\noperand is nonzero, and 0 otherwise. With a NULL operand, the result is\n1 if the other operand is nonzero, and NULL otherwise. If both operands\nare NULL, the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 || 1;\n -> 1\nmysql> SELECT 1 || 0;\n -> 1\nmysql> SELECT 0 || 0;\n -> 0\nmysql> SELECT 0 || NULL;\n -> NULL\nmysql> SELECT 1 || NULL;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (139,35,'BIT_LENGTH','Syntax:\nBIT_LENGTH(str)\n\nReturns the length of the string str in bits.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT BIT_LENGTH(\'text\');\n -> 32\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (140,2,'EXTERIORRING','ExteriorRing(poly)\n\nReturns the exterior ring of the Polygon value poly as a LineString.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT AsText(ExteriorRing(GeomFromText(@poly)));\n+-------------------------------------------+\n| AsText(ExteriorRing(GeomFromText(@poly))) |\n+-------------------------------------------+\n| LINESTRING(0 0,0 3,3 3,3 0,0 0) |\n+-------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (141,31,'GEOMFROMWKB','GeomFromWKB(wkb[,srid]), GeometryFromWKB(wkb[,srid])\n\nConstructs a geometry value of any type using its WKB representation\nand SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (142,26,'SHOW SLAVE HOSTS','Syntax:\nSHOW SLAVE HOSTS\n\nDisplays a list of replication slaves currently registered with the\nmaster. Only slaves started with the --report-host=host_name option are\nvisible in this list.\n\nThe list is displayed on any server (not just the master server). The\noutput looks like this:\n\nmysql> SHOW SLAVE HOSTS;\n+------------+-----------+------+-----------+\n| Server_id | Host | Port | Master_id |\n+------------+-----------+------+-----------+\n| 192168010 | iconnect2 | 3306 | 192168011 |\n| 1921680101 | athena | 3306 | 192168011 |\n+------------+-----------+------+-----------+\n\no Server_id: The unique server ID of the slave server, as configured in\n the server\'s option file, or on the command line with\n --server-id=value.\n\no Host: The host name of the slave server, as configured in the\n server\'s option file, or on the command line with\n --report-host=host_name. Note that this can differ from the machine\n name as configured in the operating system.\n\no Port: The port the slave server is listening on.\n\no Master_id: The unique server ID of the master server that the slave\n server is replicating from.\n\nSome MySQL versions report another variable, Rpl_recovery_rank. This\nvariable was never used, and was eventually removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-slave-hosts.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-slave-hosts.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (143,8,'START TRANSACTION','Syntax:\nSTART TRANSACTION [WITH CONSISTENT SNAPSHOT] | BEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThe START TRANSACTION or BEGIN statement begins a new transaction.\nCOMMIT commits the current transaction, making its changes permanent.\nROLLBACK rolls back the current transaction, canceling its changes. The\nSET autocommit statement disables or enables the default autocommit\nmode for the current session.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n… AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The RELEASE clause causes the\nserver to disconnect the current client session after terminating the\ncurrent transaction. Including the NO keyword suppresses CHAIN or\nRELEASE completion, which can be useful if the completion_type system\nvariable is set to cause chaining or release completion by default.\n\nBy default, MySQL runs with autocommit mode enabled. This means that as\nsoon as you execute a statement that updates (modifies) a table, MySQL\nstores the update on disk to make it permanent. To disable autocommit\nmode, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDBCLUSTER) are not made permanent immediately. You must use COMMIT to\nstore your changes to disk or ROLLBACK to ignore the changes.\n\nTo disable autocommit mode for a single series of statements, use the\nSTART TRANSACTION statement:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/commit.html\n\n','START TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n','http://dev.mysql.com/doc/refman/5.1/en/commit.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (144,17,'BETWEEN AND','Syntax:\nexpr BETWEEN min AND max\n\nIf expr is greater than or equal to min and expr is less than or equal\nto max, BETWEEN returns 1, otherwise it returns 0. This is equivalent\nto the expression (min <= expr AND expr <= max) if all the arguments\nare of the same type. Otherwise type conversion takes place according\nto the rules described in\nhttp://dev.mysql.com/doc/refman/5.1/en/type-conversion.html, but\napplied to all the three arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 BETWEEN 2 AND 3;\n -> 0\nmysql> SELECT \'b\' BETWEEN \'a\' AND \'c\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'3\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'x-3\';\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (145,23,'MULTIPOLYGON','MultiPolygon(poly1,poly2,...)\n\nConstructs a WKB MultiPolygon value from a set of WKB Polygon\narguments. If any argument is not a WKB Polygon, the return value is\nNULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (146,30,'TIME_FORMAT','Syntax:\nTIME_FORMAT(time,format)\n\nThis is used like the DATE_FORMAT() function, but the format string may\ncontain format specifiers only for hours, minutes, and seconds. Other\nspecifiers produce a NULL value or 0.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_FORMAT(\'100:00:00\', \'%H %k %h %I %l\');\n -> \'100 100 04 04 4\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (142,25,'SHOW SLAVE HOSTS','Syntax:\nSHOW SLAVE HOSTS\n\nDisplays a list of replication slaves currently registered with the\nmaster. Only slaves started with the --report-host=host_name option are\nvisible in this list.\n\nThe list is displayed on any server (not just the master server). The\noutput looks like this:\n\nmysql> SHOW SLAVE HOSTS;\n+------------+-----------+------+-----------+\n| Server_id | Host | Port | Master_id |\n+------------+-----------+------+-----------+\n| 192168010 | iconnect2 | 3306 | 192168011 |\n| 1921680101 | athena | 3306 | 192168011 |\n+------------+-----------+------+-----------+\n\no Server_id: The unique server ID of the slave server, as configured in\n the server\'s option file, or on the command line with\n --server-id=value.\n\no Host: The host name of the slave server, as configured in the\n server\'s option file, or on the command line with\n --report-host=host_name. Note that this can differ from the machine\n name as configured in the operating system.\n\no Port: The port the slave server is listening on.\n\no Master_id: The unique server ID of the master server that the slave\n server is replicating from.\n\nSome MySQL versions report another variable, Rpl_recovery_rank. This\nvariable was never used, and was eventually removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-slave-hosts.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-slave-hosts.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (143,8,'START TRANSACTION','Syntax:\nSTART TRANSACTION [WITH CONSISTENT SNAPSHOT] | BEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThe START TRANSACTION or BEGIN statement begins a new transaction.\nCOMMIT commits the current transaction, making its changes permanent.\nROLLBACK rolls back the current transaction, canceling its changes. The\nSET autocommit statement disables or enables the default autocommit\nmode for the current session.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n…: Within all stored programs (stored procedures and functions,\ntriggers, and events), the parser treats BEGIN [WORK] as the beginning\nof a BEGIN ... END block. Begin a transaction in this context with\nSTART TRANSACTION instead.\n\nThe AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The RELEASE clause causes the\nserver to disconnect the current client session after terminating the\ncurrent transaction. Including the NO keyword suppresses CHAIN or\nRELEASE completion, which can be useful if the completion_type system\nvariable is set to cause chaining or release completion by default.\n\nBy default, MySQL runs with autocommit mode enabled. This means that as\nsoon as you execute a statement that updates (modifies) a table, MySQL\nstores the update on disk to make it permanent. To disable autocommit\nmode, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDBCLUSTER) are not made permanent immediately. You must use COMMIT to\nstore your changes to disk or ROLLBACK to ignore the changes.\n\nTo disable autocommit mode for a single series of statements, use the\nSTART TRANSACTION statement:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/commit.html\n\n','START TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n','http://dev.mysql.com/doc/refman/5.1/en/commit.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (144,17,'BETWEEN AND','Syntax:\nexpr BETWEEN min AND max\n\nIf expr is greater than or equal to min and expr is less than or equal\nto max, BETWEEN returns 1, otherwise it returns 0. This is equivalent\nto the expression (min <= expr AND expr <= max) if all the arguments\nare of the same type. Otherwise type conversion takes place according\nto the rules described in\nhttp://dev.mysql.com/doc/refman/5.1/en/type-conversion.html, but\napplied to all the three arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;\n -> 1, 0\nmysql> SELECT 1 BETWEEN 2 AND 3;\n -> 0\nmysql> SELECT \'b\' BETWEEN \'a\' AND \'c\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'3\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'x-3\';\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (145,23,'MULTIPOLYGON','MultiPolygon(poly1,poly2,...)\n\nConstructs a MultiPolygon value from a set of Polygon or WKB Polygon\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (146,30,'TIME_FORMAT','Syntax:\nTIME_FORMAT(time,format)\n\nThis is used like the DATE_FORMAT() function, but the format string may\ncontain format specifiers only for hours, minutes, seconds, and\nmicroseconds. Other specifiers produce a NULL value or 0.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_FORMAT(\'100:00:00\', \'%H %k %h %I %l\');\n -> \'100 100 04 04 4\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (147,35,'LEFT','Syntax:\nLEFT(str,len)\n\nReturns the leftmost len characters from the string str, or NULL if any\nargument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LEFT(\'foobarbar\', 5);\n -> \'fooba\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (148,25,'FLUSH QUERY CACHE','You can defragment the query cache to better utilize its memory with\nthe FLUSH QUERY CACHE statement. The statement does not remove any\nqueries from the cache.\n\nThe RESET QUERY CACHE statement removes all query results from the\nquery cache. The FLUSH TABLES statement also does this.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/query-cache-status-and-maintenance.h…','','http://dev.mysql.com/doc/refman/5.1/en/query-cache-status-and-maintenance.h…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (149,20,'SET DATA TYPE','SET(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA set. A string object that can have zero or more values, each of which\nmust be chosen from the list of values \'value1\', \'value2\', ... A SET\ncolumn can have a maximum of 64 members. SET values are represented\ninternally as integers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (150,4,'RAND','Syntax:\nRAND(), RAND(N)\n\nReturns a random floating-point value v in the range 0 <= v < 1.0. If a\nconstant integer argument N is specified, it is used as the seed value,\nwhich produces a repeatable sequence of column values. In the following\nexample, note that the sequences of values produced by RAND(3) is the\nsame both places where it occurs.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> CREATE TABLE t (i INT);\nQuery OK, 0 rows affected (0.42 sec)\n\nmysql> INSERT INTO t VALUES(1),(2),(3);\nQuery OK, 3 rows affected (0.00 sec)\nRecords: 3 Duplicates: 0 Warnings: 0\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.61914388706828 | \n| 2 | 0.93845168309142 | \n| 3 | 0.83482678498591 | \n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 | \n| 2 | 0.37307905813035 | \n| 3 | 0.14808605345719 | \n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.35877890638893 | \n| 2 | 0.28941420772058 | \n| 3 | 0.37073435016976 | \n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 | \n| 2 | 0.37307905813035 | \n| 3 | 0.14808605345719 | \n+------+------------------+\n3 rows in set (0.01 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (150,4,'RAND','Syntax:\nRAND(), RAND(N)\n\nReturns a random floating-point value v in the range 0 <= v < 1.0. If a\nconstant integer argument N is specified, it is used as the seed value,\nwhich produces a repeatable sequence of column values. In the following\nexample, note that the sequences of values produced by RAND(3) is the\nsame both places where it occurs.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> CREATE TABLE t (i INT);\nQuery OK, 0 rows affected (0.42 sec)\n\nmysql> INSERT INTO t VALUES(1),(2),(3);\nQuery OK, 3 rows affected (0.00 sec)\nRecords: 3 Duplicates: 0 Warnings: 0\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.61914388706828 |\n| 2 | 0.93845168309142 |\n| 3 | 0.83482678498591 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 |\n| 2 | 0.37307905813035 |\n| 3 | 0.14808605345719 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.35877890638893 |\n| 2 | 0.28941420772058 |\n| 3 | 0.37073435016976 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 |\n| 2 | 0.37307905813035 |\n| 3 | 0.14808605345719 |\n+------+------------------+\n3 rows in set (0.01 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (151,35,'RPAD','Syntax:\nRPAD(str,len,padstr)\n\nReturns the string str, right-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RPAD(\'hi\',5,\'?\');\n -> \'hi???\'\nmysql> SELECT RPAD(\'hi\',1,\'?\');\n -> \'h\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (152,37,'CREATE DATABASE','Syntax:\nCREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n [create_specification] ...\n\ncreate_specification:\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n\nCREATE DATABASE creates a database with the given name. To use this\nstatement, you need the CREATE privilege for the database. CREATE\nSCHEMA is a synonym for CREATE DATABASE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-database.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (153,20,'DEC','DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED]\n[ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nThese types are synonyms for DECIMAL. The FIXED synonym is available\nfor compatibility with other database systems.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (154,16,'VAR_POP','Syntax:\nVAR_POP(expr)\n\nReturns the population standard variance of expr. It considers rows as\nthe whole population, not as a sample, so it has the number of rows as\nthe denominator. You can also use VARIANCE(), which is equivalent but\nis not standard SQL.\n\nVAR_POP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (155,35,'ELT','Syntax:\nELT(N,str1,str2,str3,...)\n\nReturns str1 if N = 1, str2 if N = 2, and so on. Returns NULL if N is\nless than 1 or greater than the number of arguments. ELT() is the\ncomplement of FIELD().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ELT(1, \'ej\', \'Heja\', \'hej\', \'foo\');\n -> \'ej\'\nmysql> SELECT ELT(4, \'ej\', \'Heja\', \'hej\', \'foo\');\n -> \'foo\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (156,37,'ALTER VIEW','Syntax:\nALTER\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = { user | CURRENT_USER }]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThis statement changes the definition of a view, which must exist. The\nsyntax is similar to that for CREATE VIEW and the effect is the same as\nfor CREATE OR REPLACE VIEW. See [HELP CREATE VIEW]. This statement\nrequires the CREATE VIEW and DROP privileges for the view, and some\nprivilege for each column referred to in the SELECT statement. As of\nMySQL 5.1.23, ALTER VIEW is allowed only to the definer or users with\nthe SUPER privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-view.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (157,26,'SHOW DATABASES','Syntax:\nSHOW {DATABASES | SCHEMAS}\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW DATABASES lists the databases on the MySQL server host. SHOW\nSCHEMAS is a synonym for SHOW DATABASES. The LIKE clause, if present,\nindicates which database names to match. The WHERE clause can be given\nto select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nYou see only those databases for which you have some kind of privilege,\nunless you have the global SHOW DATABASES privilege. You can also get\nthis list using the mysqlshow command.\n\nIf the server was started with the --skip-show-database option, you\ncannot use this statement at all unless you have the SHOW DATABASES\nprivilege.\n\nSHOW SCHEMAS can also be used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-databases.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-databases.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (157,25,'SHOW DATABASES','Syntax:\nSHOW {DATABASES | SCHEMAS}\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW DATABASES lists the databases on the MySQL server host. SHOW\nSCHEMAS is a synonym for SHOW DATABASES. The LIKE clause, if present,\nindicates which database names to match. The WHERE clause can be given\nto select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nYou see only those databases for which you have some kind of privilege,\nunless you have the global SHOW DATABASES privilege. You can also get\nthis list using the mysqlshow command.\n\nIf the server was started with the --skip-show-database option, you\ncannot use this statement at all unless you have the SHOW DATABASES\nprivilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-databases.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-databases.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (158,18,'~','Syntax:\n~\n\nInvert all bits.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 5 & ~1;\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (159,20,'TEXT','TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 65,535 (216 - 1) characters. The\neffective maximum length is less if the value contains multi-byte\ncharacters. Each TEXT value is stored using a two-byte length prefix\nthat indicates the number of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest TEXT type large enough to hold\nvalues M characters long.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (160,35,'CONCAT_WS','Syntax:\nCONCAT_WS(separator,str1,str2,...)\n\nCONCAT_WS() stands for Concatenate With Separator and is a special form\nof CONCAT(). The first argument is the separator for the rest of the\narguments. The separator is added between the strings to be\nconcatenated. The separator can be a string, as can the rest of the\narguments. If the separator is NULL, the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT CONCAT_WS(\',\',\'First name\',\'Second name\',\'Last Name\');\n -> \'First name,Second name,Last Name\'\nmysql> SELECT CONCAT_WS(\',\',\'First name\',NULL,\'Last Name\');\n -> \'First name,Last Name\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
@@ -233,342 +233,343 @@ insert into help_topic (help_topic_id,he
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (164,30,'SEC_TO_TIME','Syntax:\nSEC_TO_TIME(seconds)\n\nReturns the seconds argument, converted to hours, minutes, and seconds,\nas a TIME value. The range of the result is constrained to that of the\nTIME data type. A warning occurs if the argument corresponds to a value\noutside that range.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SEC_TO_TIME(2378);\n -> \'00:39:38\'\nmysql> SELECT SEC_TO_TIME(2378) + 0;\n -> 3938\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (165,20,'FLOAT','FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA small (single-precision) floating-point number. Allowable values are\n-3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to\n3.402823466E+38. These are the theoretical limits, based on the IEEE\nstandard. The actual range might be slightly smaller depending on your\nhardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits allowed by the hardware. A single-precision floating-point\nnumber is accurate to approximately 7 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nUsing FLOAT might give you some unexpected problems because all\ncalculations in MySQL are done with double precision. See\nhttp://dev.mysql.com/doc/refman/5.1/en/no-matching-rows.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (166,35,'LOCATE','Syntax:\nLOCATE(substr,str), LOCATE(substr,str,pos)\n\nThe first syntax returns the position of the first occurrence of\nsubstring substr in string str. The second syntax returns the position\nof the first occurrence of substring substr in string str, starting at\nposition pos. Returns 0 if substr is not in str.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LOCATE(\'bar\', \'foobarbar\');\n -> 4\nmysql> SELECT LOCATE(\'xbar\', \'foobar\');\n -> 0\nmysql> SELECT LOCATE(\'bar\', \'foobarbar\', 5);\n -> 7\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (167,15,'CHARSET','Syntax:\nCHARSET(str)\n\nReturns the character set of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT CHARSET(\'abc\');\n -> \'latin1\'\nmysql> SELECT CHARSET(CONVERT(\'abc\' USING utf8));\n -> \'utf8\'\nmysql> SELECT CHARSET(USER());\n -> \'utf8\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (168,30,'SUBDATE','Syntax:\nSUBDATE(date,INTERVAL expr unit), SUBDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, SUBDATE()\nis a synonym for DATE_SUB(). For information on the INTERVAL unit\nargument, see the discussion for DATE_ADD().\n\nmysql> SELECT DATE_SUB(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\nmysql> SELECT SUBDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\n\nThe second form allows the use of an integer value for days. In such\ncases, it is interpreted as the number of days to be subtracted from\nthe date or datetime expression expr.\n\nmysql> SELECT SUBDATE(\'2008-01-02 12:00:00\', 31);\n -> \'2007-12-02 12:00:00\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (169,30,'DAYOFYEAR','Syntax:\nDAYOFYEAR(date)\n\nReturns the day of the year for date, in the range 1 to 366.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFYEAR(\'2007-02-03\');\n -> 34\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (170,20,'LONGTEXT','LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 4,294,967,295 or 4GB (232 - 1)\ncharacters. The effective maximum length is less if the value contains\nmulti-byte characters. The effective maximum length of LONGTEXT columns\nalso depends on the configured maximum packet size in the client/server\nprotocol and available memory. Each LONGTEXT value is stored using a\nfour-byte length prefix that indicates the number of bytes in the\nvalue.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (171,4,'%','Syntax:\nN % M\n\nModulo operation. Returns the remainder of N divided by M. For more\ninformation, see the description for the MOD() function in\nhttp://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html.\n\n…: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (172,26,'KILL','Syntax:\nKILL [CONNECTION | QUERY] thread_id\n\nEach connection to mysqld runs in a separate thread. You can see which\nthreads are running with the SHOW PROCESSLIST statement and kill a\nthread with the KILL thread_id statement.\n\nKILL allows the optional CONNECTION or QUERY modifier:\n\no KILL CONNECTION is the same as KILL with no modifier: It terminates\n the connection associated with the given thread_id.\n\no KILL QUERY terminates the statement that the connection is currently\n executing, but leaves the connection itself intact.\n\nIf you have the PROCESS privilege, you can see all threads. If you have\nthe SUPER privilege, you can kill all threads and statements.\nOtherwise, you can see and kill only your own threads and statements.\n\nYou can also use the mysqladmin processlist and mysqladmin kill\ncommands to examine and kill threads.\n\n*Note*: You cannot use KILL with the Embedded MySQL Server library,\nbecause the embedded server merely runs inside the threads of the host\napplication. It does not create any connection threads of its own.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/kill.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/kill.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (173,29,'DISJOINT','Disjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially disjoint from (does\nnot intersect) g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (174,3,'ASTEXT','AsText(g), AsWKT(g)\n\nConverts a value in internal geometry format to its WKT representation\nand returns the string result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…','mysql> SET @g = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(GeomFromText(@g));\n+--------------------------+\n| AsText(GeomFromText(@g)) |\n+--------------------------+\n| LINESTRING(1 1,2 2,3 3) |\n+--------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (175,35,'LPAD','Syntax:\nLPAD(str,len,padstr)\n\nReturns the string str, left-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters.\n\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LPAD(\'hi\',4,\'??\');\n -> \'??hi\'\nmysql> SELECT LPAD(\'hi\',1,\'??\');\n -> \'h\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (176,19,'RESTORE TABLE','Syntax:\nRESTORE TABLE tbl_name [, tbl_name] ... FROM \'/path/to/backup/directory\'\n\nRESTORE TABLE restores the table or tables from a backup that was made\nwith BACKUP TABLE. The directory should be specified as a full path\nname.\n\nExisting tables are not overwritten; if you try to restore over an\nexisting table, an error occurs. Just as for BACKUP TABLE, RESTORE\nTABLE currently works only for MyISAM tables. Restored tables are not\nreplicated from master to slave.\n\nThe backup for each table consists of its .frm format file and .MYD\ndata file. The restore operation restores those files, and then uses\nthem to rebuild the .MYI index file. Restoring takes longer than\nbacking up due to the need to rebuild the indexes. The more indexes the\ntable has, the longer it takes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/restore-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/restore-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (177,22,'DECLARE CONDITION','Syntax:\nDECLARE condition_name CONDITION FOR condition_value\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | mysql_error_code\n\nThe DECLARE ... CONDITION statement defines a named error condition. It\nspecifies a condition that needs specific handling and associates a\nname with that condition. The name can be referred to in a subsequence\nDECLARE ... HANDLER statement. See [HELP DECLARE HANDLER].\n\nA condition_value for DECLARE ... CONDITION can be an SQLSTATE value (a\n5-character string literal) or a MySQL error code (a number). You\nshould not use SQLSTATE value \'00000\' or MySQL error code 0, because\nthose indicate sucess rather than an error condition. For a list of\nSQLSTATE values and MySQL error codes, see\nhttp://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html.\n\n…: http://dev.mysql.com/doc/refman/5.1/en/declare-condition.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-condition.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (178,29,'OVERLAPS','Overlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially overlaps g2. The term\nspatially overlaps is used if two geometries intersect and their\nintersection results in a geometry of the same dimension but not equal\nto either of the given geometries.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (179,26,'SET GLOBAL SQL_SLAVE_SKIP_COUNTER','Syntax:\nSET GLOBAL SQL_SLAVE_SKIP_COUNTER = N\n\nThis statement skips the next N events from the master. This is useful\nfor recovering from replication stops caused by a statement.\n\nThis statement is valid only when the slave thread is not running.\nOtherwise, it produces an error.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-global-sql-slave-skip-counter.ht…','','http://dev.mysql.com/doc/refman/5.1/en/set-global-sql-slave-skip-counter.ht…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (180,24,'NUMGEOMETRIES','NumGeometries(gc)\n\nReturns the number of geometries in the GeometryCollection value gc.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT NumGeometries(GeomFromText(@gc));\n+----------------------------------+\n| NumGeometries(GeomFromText(@gc)) |\n+----------------------------------+\n| 2 |\n+----------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (181,30,'MONTHNAME','Syntax:\nMONTHNAME(date)\n\nReturns the full name of the month for date. As of MySQL 5.1.12, the\nlanguage used for the name is controlled by the value of the\nlc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.1/en/locale-support.html).\n\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MONTHNAME(\'2008-02-03\');\n -> \'February\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (182,36,'PROCEDURE ANALYSE','Syntax:\nanalyse([max_elements[,max_memory]])\n\nThis procedure is defined in the sql/sql_analyse.cc file. It examines\nthe result from a query and returns an analysis of the results that\nsuggests optimal data types for each column. To obtain this analysis,\nappend PROCEDURE ANALYSE to the end of a SELECT statement:\n\nSELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])\n\nFor example:\n\nSELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);\n\nThe results show some statistics for the values returned by the query,\nand propose an optimal data type for the columns. This can be helpful\nfor checking your existing tables, or after importing new data. You may\nneed to try different settings for the arguments so that PROCEDURE\nANALYSE() does not suggest the ENUM data type when it is not\nappropriate.\n\nThe arguments are optional and are used as follows:\n\no max_elements (default 256) is the maximum number of distinct values\n that analyse notices per column. This is used by analyse to check\n whether the optimal data type should be of type ENUM; if there are\n more than max_elements distinct values, then ENUM is not a suggested\n type.\n\no max_memory (default 8192) is the maximum amount of memory that\n analyse should allocate per column while trying to find all distinct\n values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/procedure-analyse.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/procedure-analyse.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (183,26,'CHANGE MASTER TO','Syntax:\nCHANGE MASTER TO master_def [, master_def] ...\n\nmaster_def:\n MASTER_BIND = \'interface_name\'\n | MASTER_HOST = \'host_name\'\n | MASTER_USER = \'user_name\'\n | MASTER_PASSWORD = \'password\'\n | MASTER_PORT = port_num\n | MASTER_CONNECT_RETRY = interval\n | MASTER_HEARTBEAT_PERIOD = interval\n | MASTER_LOG_FILE = \'master_log_name\'\n | MASTER_LOG_POS = master_log_pos\n | RELAY_LOG_FILE = \'relay_log_name\'\n | RELAY_LOG_POS = relay_log_pos\n | MASTER_SSL = {0|1}\n | MASTER_SSL_CA = \'ca_file_name\'\n | MASTER_SSL_CAPATH = \'ca_directory_name\'\n | MASTER_SSL_CERT = \'cert_file_name\'\n | MASTER_SSL_KEY = \'key_file_name\'\n | MASTER_SSL_CIPHER = \'cipher_list\'\n | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}\n\nCHANGE MASTER TO changes the parameters that the slave server uses for\nconnecting to and communicating with the master server. It also updates\nthe contents of the master.info and relay-log.info files.\n\nMASTER_USER, MASTER_PASSWORD, MASTER_SSL, MASTER_SSL_CA,\nMASTER_SSL_CAPATH, MASTER_SSL_CERT, MASTER_SSL_KEY, MASTER_SSL_CIPHER,\nand MASTER_SSL_VERIFY_SERVER_CERT provide information to the slave\nabout how to connect to its master. MASTER_SSL_VERIFY_SERVER_CERT was\nadded in MySQL 5.1.18. It is used as described for the\n--ssl-verify-server-cert option in\nhttp://dev.mysql.com/doc/refman/5.1/en/ssl-options.html.\n\nMASTER_CONN… specifies how many seconds to wait between connect\nretries. The default is 60. The number of reconnection attempts is\nlimited by the --master-retry-count server option; for more\ninformation, see\nhttp://dev.mysql.com/doc/refman/5.1/en/replication-options.html.\n\nThe SSL options (MASTER_SSL, MASTER_SSL_CA, MASTER_SSL_CAPATH,\nMASTER_SSL_CERT, MASTER_SSL_KEY, MASTER_SSL_CIPHER), and\nMASTER_SSL_VERIFY_SERVER_CERT can be changed even on slaves that are\ncompiled without SSL support. They are saved to the master.info file,\nbut are ignored unless you use a server that has SSL support enabled.\n\nIf you don\'t specify a given parameter, it keeps its old value, except\nas indicated in the following discussion. For example, if the password\nto connect to your MySQL master has changed, you just need to issue\nthese statements to tell the slave about the new password:\n\nSTOP SLAVE; -- if replication was running\nCHANGE MASTER TO MASTER_PASSWORD=\'new3cret\';\nSTART SLAVE; -- if you want to restart replication\n\nThere is no need to specify the parameters that do not change (host,\nport, user, and so forth).\n\nMASTER_HOST and MASTER_PORT are the host name (or IP address) of the\nmaster host and its TCP/IP port.\n\nThe next two options are available only in MySQL Cluster NDB 6.3 and\n6.4; they are not supported in mainline MySQL 5.1:\n\no MASTER_BIND is for use on replication slaves having multiple network\n interfaces, and determines which of the slave\'s network interfaces is\n chosen for connecting to the master. It is also possible to determine\n which network interface is to be used in such cases by starting the\n slave mysqld process with the --master-bind option.\n\n The ability to bind a replication slave to specific network interface\n was added in MySQL Cluster NDB 6.3.4.\n\no MASTER_HEARTBEAT_PERIOD is used to set the interval in seconds\n between replication heartbeats. Whenever the master\'s binlog is\n updated with an event, the waiting period for the next heartbeat is\n reset. interval is a decimal value having the range 0 to 4294967\n seconds and a resolution to hundredths of a second; the smallest\n nonzero value is 0.001. Heartbeats are sent by the master only if\n there are no unsent events in the binlog file for a period longer\n than interval.\n\n Setting interval to 0 disables heartbeats altogether. The default\n value for interval is equal to the value of slave_net_timeout divided\n by 2.\n\n *Note*: Setting @@global.slave_net_timeout to a value less than that\n of the current heartbeat interval results in a warning being issued.\n\n Issuing RESET SLAVE resets the heartbeat interval to the default.\n\n MASTER_HEARTBEAT_PERIOD was added in MySQL Cluster NDB 6.3.4.\n\n*Note*: Replication cannot use Unix socket files. You must be able to\nconnect to the master MySQL server using TCP/IP.\n\nIf you specify MASTER_HOST or MASTER_PORT, the slave assumes that the\nmaster server is different from before (even if you specify a host or\nport value that is the same as the current value.) In this case, the\nold values for the master binary log name and position are considered\nno longer applicable, so if you do not specify MASTER_LOG_FILE and\nMASTER_LOG_POS in the statement, MASTER_LOG_FILE=\'\' and\nMASTER_LOG_POS=4 are silently appended to it.\n\nSetting MASTER_HOST=\'\' --- that is, setting its value explicitly to an\nempty string --- is not the same as not setting it at all. Setting this\noption to an empty string causes START SLAVE subsequently to fail. This\nissue is addressed in MySQL 6.0. (Bug#28796\n(http://bugs.mysql.com/28796))\n\nMASTER_LOG_FILE and MASTER_LOG_POS are the coordinates at which the\nslave I/O thread should begin reading from the master the next time the\nthread starts. If you specify either of them, you cannot specify\nRELAY_LOG_FILE or RELAY_LOG_POS. If neither of MASTER_LOG_FILE or\nMASTER_LOG_POS are specified, the slave uses the last coordinates of\nthe slave SQL thread before CHANGE MASTER TO was issued. This ensures\nthat there is no discontinuity in replication, even if the slave SQL\nthread was late compared to the slave I/O thread, when you merely want\nto change, say, the password to use.\n\nCHANGE MASTER TO deletes all relay log files and starts a new one,\nunless you specify RELAY_LOG_FILE or RELAY_LOG_POS. In that case, relay\nlogs are kept; the relay_log_purge global variable is set silently to\n0.\n\nCHANGE MASTER TO is useful for setting up a slave when you have the\nsnapshot of the master and have recorded the log and the offset\ncorresponding to it. After loading the snapshot into the slave, you can\nrun CHANGE MASTER TO MASTER_LOG_FILE=\'log_name_on_master\',\nMASTER_LOG_POS=log_offset_on_master on the slave.\n\nThe following example changes the master and master\'s binary log\ncoordinates. This is used when you want to set up the slave to\nreplicate the master:\n\nCHANGE MASTER TO\n MASTER_HOST=\'master2.mycompany.com\',\n MASTER_USER=\'replication\',\n MASTER_PASSWORD=\'bigs3cret\',\n MASTER_PORT=3306,\n MASTER_LOG_FILE=\'master2-bin.001\',\n MASTER_LOG_POS=4,\n MASTER_CONNECT_RETRY=10;\n\nThe next example shows an operation that is less frequently employed.\nIt is used when the slave has relay logs that you want it to execute\nagain for some reason. To do this, the master need not be reachable.\nYou need only use CHANGE MASTER TO and start the SQL thread (START\nSLAVE SQL_THREAD):\n\nCHANGE MASTER TO\n RELAY_LOG_FILE=\'slave-relay-bin.006\',\n RELAY_LOG_POS=4025;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/change-master-to.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/change-master-to.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (184,37,'DROP DATABASE','Syntax:\nDROP {DATABASE | SCHEMA} [IF EXISTS] db_name\n\nDROP DATABASE drops all tables in the database and deletes the\ndatabase. Be very careful with this statement! To use DROP DATABASE,\nyou need the DROP privilege on the database. DROP SCHEMA is a synonym\nfor DROP DATABASE.\n\n*Important*: When a database is dropped, user privileges on the\ndatabase are not automatically dropped. See [HELP GRANT].\n\nIF EXISTS is used to prevent an error from occurring if the database\ndoes not exist.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-database.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (185,6,'MBREQUAL','MBREqual(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 are the same.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (186,30,'TIMESTAMP FUNCTION','Syntax:\nTIMESTAMP(expr), TIMESTAMP(expr1,expr2)\n\nWith a single argument, this function returns the date or datetime\nexpression expr as a datetime value. With two arguments, it adds the\ntime expression expr2 to the date or datetime expression expr1 and\nreturns the result as a datetime value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMP(\'2003-12-31\');\n -> \'2003-12-31 00:00:00\'\nmysql> SELECT TIMESTAMP(\'2003-12-31 12:00:00\',\'12:00:00\');\n -> \'2004-01-01 00:00:00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (187,35,'CHARACTER_LENGTH','Syntax:\nCHARACTER_LENGTH(str)\n\nCHARACTER_LENGTH() is a synonym for CHAR_LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (188,26,'SHOW GRANTS','Syntax:\nSHOW GRANTS [FOR user]\n\nThis statement lists the GRANT statement or statements that must be\nissued to duplicate the privileges that are granted to a MySQL user\naccount. The account is named using the same format as for the GRANT\nstatement; for example, \'jeffrey\'@\'localhost\'. If you specify only the\nuser name part of the account name, a host name part of \'%\' is used.\nFor additional information about specifying account names, see [HELP\nGRANT].\n\nmysql> SHOW GRANTS FOR \'root\'@\'localhost\';\n+---------------------------------------------------------------------+\n| Grants for root@localhost |\n+---------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'localhost\' WITH GRANT OPTION |\n+---------------------------------------------------------------------+\n\nTo list the privileges granted to the account that you are using to\nconnect to the server, you can use any of the following statements:\n\nSHOW GRANTS;\nSHOW GRANTS FOR CURRENT_USER;\nSHOW GRANTS FOR CURRENT_USER();\n\nAs of MySQL 5.1.12, if SHOW GRANTS FOR CURRENT_USER (or any of the\nequivalent syntaxes) is used in DEFINER context, such as within a\nstored procedure that is defined with SQL SECURITY DEFINER), the grants\ndisplayed are those of the definer and not the invoker.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-grants.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-grants.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (189,26,'SHOW PRIVILEGES','Syntax:\nSHOW PRIVILEGES\n\nSHOW PRIVILEGES shows the list of system privileges that the MySQL\nserver supports. The exact list of privileges depends on the version of\nyour server.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-privileges.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-privileges.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (190,37,'CREATE TABLESPACE','Syntax:\nCREATE TABLESPACE tablespace_name\n ADD DATAFILE \'file_name\'\n USE LOGFILE GROUP logfile_group\n [EXTENT_SIZE [=] extent_size]\n [INITIAL_SIZE [=] initial_size]\n [AUTOEXTEND_SIZE [=] autoextend_size]\n [MAX_SIZE [=] max_size]\n [NODEGROUP [=] nodegroup_id]\n [WAIT]\n [COMMENT [=] comment_text]\n ENGINE [=] engine_name\n\nThis statement is used to create a tablespace, which can contain one or\nmore data files, providing storage space for tables. One data file is\ncreated and added to the tablespace using this statement. Additional\ndata files may be added to the tablespace by using the ALTER TABLESPACE\nstatement (see [HELP ALTER TABLESPACE]). For rules covering the naming\nof tablespaces, see\nhttp://dev.mysql.com/doc/refman/5.1/en/identifiers.html.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and a log file group with the same name, or a\ntablespace and a data file with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for data files could not be longer than 128 characters.\n(Bug#31770 (http://bugs.mysql.com/31770))\n\nA log file group of one or more UNDO log files must be assigned to the\ntablespace to be created with the USE LOGFILE GROUP clause.\nlogfile_group must be an existing log file group created with CREATE\nLOGFILE GROUP (see\nhttp://dev.mysql.com/doc/refman/5.1/en/create-logfile-group.html).\nMu… tablespaces may use the same log file group for UNDO logging.\n\nThe EXTENT_SIZE sets the size, in bytes, of the extents used by any\nfiles belonging to the tablespace. The default value is 1M. The minimum\nsize is 32K, and theoretical maximum is 2G, although the practical\nmaximum size depends on a number of factors. In most cases, changing\nthe extent size does not have any measurable effect on performance, and\nthe default value is recommended for all but the most unusual\nsituations.\n\nAn extent is a unit of disk space allocation. One extent is filled with\nas much data as that extent can contain before another extent is used.\nIn theory, up to 65,535 (64K) extents may used per data file; however,\nthe recommended maximum is 32,768 (32K). The recommended maximum size\nfor a single data file is 32G --- that is, 32K extents x 1 MB per\nextent. In addition, once an extent is allocated to a given partition,\nit cannot be used to store data from a different partition; an extent\ncannot store data from more than one partition. This means, for example\nthat a tablespace having a single datafile whose INITIAL_SIZE is 256 MB\nand whose EXTENT_SIZE is 128M has just two extents, and so can be used\nto store data from at most two different disk data table partitions.\n\nYou can see how many extents remain free in a given data file by\nquerying the INFORMATION_SCHEMA.FILES table, and so derive an estimate\nfor how much space remains free in the file. For further discussion and\nexamples, see http://dev.mysql.com/doc/refman/5.1/en/files-table.html.\n\nThe INITIAL_SIZE parameter sets the data file\'s total size in bytes.\nOnce the file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using ALTER TABLESPACE\n... ADD DATAFILE. See [HELP ALTER TABLESPACE].\n\nINITIAL_SIZE is optional; its default value is 128M.\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nWhen setting EXTENT_SIZE or INITIAL_SIZE (either or both), you may\noptionally follow the number with a one-letter abbreviation for an\norder of magnitude, similar to those used in my.cnf. Generally, this is\none of the letters M (for megabytes) or G (for gigabytes).\n\nAUTOEXTEND_SIZE, MAX_SIZE, NODEGROUP, WAIT, and COMMENT are parsed but\nignored, and so have no effect in MySQL 5.1. These options are intended\nfor future expansion.\n\nThe ENGINE parameter determines the storage engine which uses this\ntablespace, with engine_name being the name of the storage engine. In\nMySQL 5.1, engine_name must be one of the values NDB or NDBCLUSTER.\n\nWhen CREATE TABLESPACE is used with ENGINE = NDB, a tablespace and\nassociated data file are created on each Cluster data node. You can\nverify that the data files were created and obtain information about\nthem by querying the INFORMATION_SCHEMA.FILES table. For example:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA \n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+-------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+-------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n+--------------------+-------------+----------------+\n2 rows in set (0.01 sec)\n\n(See http://dev.mysql.com/doc/refman/5.1/en/files-table.html.)\n\nCREATE TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (191,35,'INSERT FUNCTION','Syntax:\nINSERT(str,pos,len,newstr)\n\nReturns the string str, with the substring beginning at position pos\nand len characters long replaced by the string newstr. Returns the\noriginal string if pos is not within the length of the string. Replaces\nthe rest of the string from position pos if len is not within the\nlength of the rest of the string. Returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT INSERT(\'Quadratic\', 3, 4, \'What\');\n -> \'QuWhattic\'\nmysql> SELECT INSERT(\'Quadratic\', -1, 4, \'What\');\n -> \'Quadratic\'\nmysql> SELECT INSERT(\'Quadratic\', 3, 100, \'What\');\n -> \'QuWhat\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (192,4,'CRC32','Syntax:\nCRC32(expr)\n\nComputes a cyclic redundancy check value and returns a 32-bit unsigned\nvalue. The result is NULL if the argument is NULL. The argument is\nexpected to be a string and (if possible) is treated as one if it is\nnot.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CRC32(\'MySQL\');\n -> 3259397556\nmysql> SELECT CRC32(\'mysql\');\n -> 2501908538\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (193,13,'XOR','Syntax:\nXOR\n\nLogical XOR. Returns NULL if either operand is NULL. For non-NULL\noperands, evaluates to 1 if an odd number of operands is non-zero,\notherwise 0 is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 XOR 1;\n -> 0\nmysql> SELECT 1 XOR 0;\n -> 1\nmysql> SELECT 1 XOR NULL;\n -> NULL\nmysql> SELECT 1 XOR 1 XOR 1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (194,12,'STARTPOINT','StartPoint(ls)\n\nReturns the Point that is the start point of the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(StartPoint(GeomFromText(@ls)));\n+---------------------------------------+\n| AsText(StartPoint(GeomFromText(@ls))) |\n+---------------------------------------+\n| POINT(1 1) |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (195,22,'DECLARE VARIABLE','Syntax:\nDECLARE var_name [, var_name] ... type [DEFAULT value]\n\nThis statement is used to declare local variables within stored\nprograms. To provide a default value for the variable, include a\nDEFAULT clause. The value can be specified as an expression; it need\nnot be a constant. If the DEFAULT clause is missing, the initial value\nis NULL.\n\nLocal variables are treated like stored routine parameters with respect\nto data type and overflow checking. See [HELP CREATE PROCEDURE].\n\nLocal variable names are not case sensitive.\n\nThe scope of a local variable is within the BEGIN ... END block where\nit is declared. The variable can be referred to in blocks nested within\nthe declaring block, except those blocks that declare a variable with\nthe same name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-local-variable.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-local-variable.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (196,9,'GRANT','Syntax:\nGRANT\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n TO user [IDENTIFIED BY [PASSWORD] \'password\']\n [, user [IDENTIFIED BY [PASSWORD] \'password\']] ...\n [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]\n [WITH with_option [with_option] ...]\n\nobject_type:\n TABLE\n | FUNCTION\n | PROCEDURE\n\npriv_level:\n *\n | *.*\n | db_name.*\n | db_name.tbl_name\n | tbl_name\n | db_name.routine_name\n\nwith_option:\n GRANT OPTION\n | MAX_QUERIES_PER_HOUR count\n | MAX_UPDATES_PER_HOUR count\n | MAX_CONNECTIONS_PER_HOUR count\n | MAX_USER_CONNECTIONS count\n\nssl_option:\n SSL\n | X509\n | CIPHER \'cipher\'\n | ISSUER \'issuer\'\n | SUBJECT \'subject\'\n\nThe GRANT statement enables system administrators to create MySQL user\naccounts and to grant rights to accounts. To use GRANT, you must have\nthe GRANT OPTION privilege, and you must have the privileges that you\nare granting. The REVOKE statement is related and enables\nadministrators to remove account privileges. To determine what\nprivileges an account has, use SHOW GRANTS. See [HELP REVOKE], and\n[HELP SHOW GRANTS].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/grant.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/grant.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (197,3,'MPOLYFROMTEXT','MPolyFromText(wkt[,srid]), MultiPolygonFromText(wkt[,srid])\n\nConstructs a MULTIPOLYGON value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (198,6,'MBRINTERSECTS','MBRIntersects(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 intersect.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (199,16,'BIT_OR','Syntax:\nBIT_OR(expr)\n\nReturns the bitwise OR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (200,30,'YEARWEEK','Syntax:\nYEARWEEK(date), YEARWEEK(date,mode)\n\nReturns year and week for a date. The mode argument works exactly like\nthe mode argument to WEEK(). The year in the result may be different\nfrom the year in the date argument for the first and the last week of\nthe year.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT YEARWEEK(\'1987-01-01\');\n -> 198653\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (201,17,'NOT BETWEEN','Syntax:\nexpr NOT BETWEEN min AND max\n\nThis is the same as NOT (expr BETWEEN min AND max).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (202,17,'IS NOT','Syntax:\nIS NOT boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;\n -> 1, 1, 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (203,4,'LOG10','Syntax:\nLOG10(X)\n\nReturns the base-10 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG10(2);\n -> 0.30102999566398\nmysql> SELECT LOG10(100);\n -> 2\nmysql> SELECT LOG10(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (204,4,'SQRT','Syntax:\nSQRT(X)\n\nReturns the square root of a non-negative number X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT SQRT(4);\n -> 2\nmysql> SELECT SQRT(20);\n -> 4.4721359549996\nmysql> SELECT SQRT(-16);\n -> NULL \n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (205,20,'DECIMAL','DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nA packed "exact" fixed-point number. M is the total number of digits\n(the precision) and D is the number of digits after the decimal point\n(the scale). The decimal point and (for negative numbers) the "-" sign\nare not counted in M. If D is 0, values have no decimal point or\nfractional part. The maximum number of digits (M) for DECIMAL is 65.\nThe maximum number of supported decimals (D) is 30. If D is omitted,\nthe default is 0. If M is omitted, the default is 10.\n\nUNSIGNED, if specified, disallows negative values.\n\nAll basic calculations (+, -, *, /) with DECIMAL columns are done with\na precision of 65 digits.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (206,37,'CREATE INDEX','Syntax:\nCREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name\n [index_type]\n ON tbl_name (index_col_name,...)\n [index_option] ...\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n\nCREATE INDEX is mapped to an ALTER TABLE statement to create indexes.\nSee [HELP ALTER TABLE]. CREATE INDEX cannot be used to create a PRIMARY\nKEY; use ALTER TABLE instead. For more information about indexes, see\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-index.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (207,37,'CREATE FUNCTION','The CREATE FUNCTION statement is used to create stored functions and\nuser-defined functions (UDFs):\n\no For information about creating stored functions, see [HELP CREATE\n PROCEDURE].\n\no For information about creating user-defined functions, see [HELP\n CREATE FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-function.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (208,37,'ALTER DATABASE','Syntax:\nALTER {DATABASE | SCHEMA} [db_name]\n alter_specification ...\nALTER {DATABASE | SCHEMA} db_name\n UPGRADE DATA DIRECTORY NAME\n\nalter_specification:\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n\nALTER DATABASE enables you to change the overall characteristics of a\ndatabase. These characteristics are stored in the db.opt file in the\ndatabase directory. To use ALTER DATABASE, you need the ALTER privilege\non the database. ALTER SCHEMA is a synonym for ALTER DATABASE.\n\nThe CHARACTER SET clause changes the default database character set.\nThe COLLATE clause changes the default database collation.\nhttp://dev.mysql.com/doc/refman/5.1/en/charset.html, discusses\ncharacter set and collation names.\n\nYou can see what character sets and collations are available using,\nrespectively, the SHOW CHARACTER SET and SHOW COLLATION statements. See\n[HELP SHOW CHARACTER SET], and [HELP SHOW COLLATION], for more\ninformation.\n\nThe database name can be omitted from the first syntax, in which case\nthe statement applies to the default database.\n\nThe syntax that includes the UPGRADE DATA DIRECTORY NAME clause was\nadded in MySQL 5.1.23. It updates the name of the directory associated\nwith the database to use the encoding implemented in MySQL 5.1 for\nmapping database names to database directory names (see\nhttp://dev.mysql.com/doc/refman/5.1/en/identifier-mapping.html) This\nclause is for use under these conditions:\n\no It is intended when upgrading MySQL to 5.1 or later from older\n versions.\n\no It is intended to update a database directory name to the current\n encoding format if the name contains special characters that need\n encoding.\n\no The statement is used by mysqlcheck (as invoked by mysql_upgrade).\n\nFor example,if a database in MySQL 5.0 has a name of a-b-c, the name\ncontains instance of the `-\' character. In 5.0, the database directory\nis also named a-b-c, which is not necessarily safe for all file\nsystems. In MySQL 5.1 and up, the same database name is encoded as\na@002db@002dc to produce a file system-neutral directory name.\n\nWhen a MySQL installation is upgraded to MySQL 5.1 or later from an\nolder version,the server displays a name such as a-b-c (which is in the\nold format) as #mysql50#a-b-c, and you must refer to the name using the\n#mysql50# prefix. Use UPGRADE DATA DIRECTORY NAME in this case to\nexplicitly tell the server to re-encode the database directory name to\nthe current encoding format:\n\nALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;\n\nAfter executing this statement, you can refer to the database as a-b-c\nwithout the special #mysql50# prefix.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-database.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (209,24,'GEOMETRYN','GeometryN(gc,N)\n\nReturns the N-th geometry in the GeometryCollection value gc.\nGeometries are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT AsText(GeometryN(GeomFromText(@gc),1));\n+----------------------------------------+\n| AsText(GeometryN(GeomFromText(@gc),1)) |\n+----------------------------------------+\n| POINT(1 1) |\n+----------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (210,18,'<<','Syntax:\n<<\n\nShifts a longlong (BIGINT) number to the left.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 1 << 2;\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (211,26,'SHOW TABLE STATUS','Syntax:\nSHOW TABLE STATUS [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLE STATUS works likes SHOW TABLES, but provides a lot of\ninformation about each non-TEMPORARY table. You can also get this list\nusing the mysqlshow --status db_name command. The LIKE clause, if\npresent, indicates which table names to match. The WHERE clause can be\ngiven to select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (212,11,'MD5','Syntax:\nMD5(str)\n\nCalculates an MD5 128-bit checksum for the string. The value is\nreturned as a binary string of 32 hex digits, or NULL if the argument\nwas NULL. The return value can, for example, be used as a hash key.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT MD5(\'testing\');\n -> \'ae2b1fca515949e5d54fb22b8ed95575\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (213,17,'<','Syntax:\n<\n\nLess than:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 < 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (214,30,'UNIX_TIMESTAMP','Syntax:\nUNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)\n\nIf called with no argument, returns a Unix timestamp (seconds since\n\'1970-01-01 00:00:00\' UTC) as an unsigned integer. If UNIX_TIMESTAMP()\nis called with a date argument, it returns the value of the argument as\nseconds since \'1970-01-01 00:00:00\' UTC. date may be a DATE string, a\nDATETIME string, a TIMESTAMP, or a number in the format YYMMDD or\nYYYYMMDD. The server interprets date as a value in the current time\nzone and converts it to an internal value in UTC. Clients can set their\ntime zone as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UNIX_TIMESTAMP();\n -> 1196440210\nmysql> SELECT UNIX_TIMESTAMP(\'2007-11-30 10:30:19\');\n -> 1196440219\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (215,30,'DAYOFMONTH','Syntax:\nDAYOFMONTH(date)\n\nReturns the day of the month for date, in the range 1 to 31, or 0 for\ndates such as \'0000-00-00\' or \'2008-00-00\' that have a zero day part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFMONTH(\'2007-02-03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (216,35,'ASCII','Syntax:\nASCII(str)\n\nReturns the numeric value of the leftmost character of the string str.\nReturns 0 if str is the empty string. Returns NULL if str is NULL.\nASCII() works for 8-bit characters.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ASCII(\'2\');\n -> 50\nmysql> SELECT ASCII(2);\n -> 50\nmysql> SELECT ASCII(\'dx\');\n -> 100\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (217,4,'DIV','Syntax:\nDIV\n\nInteger division. Similar to FLOOR(), but is safe with BIGINT values.\nIncorrect results may occur for non-integer operands that exceed BIGINT\nrange.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 5 DIV 2;\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (218,9,'RENAME USER','Syntax:\nRENAME USER old_user TO new_user\n [, old_user TO new_user] ...\n\nThe RENAME USER statement renames existing MySQL accounts. To use it,\nyou must have the global CREATE USER privilege or the UPDATE privilege\nfor the mysql database. An error occurs if any old account does not\nexist or any new account exists. Each account is named using the same\nformat as for the GRANT statement; for example, \'jeffrey\'@\'localhost\'.\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used. For additional information about specifying\naccount names, see [HELP GRANT].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/rename-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/rename-user.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (219,26,'SHOW SLAVE STATUS','Syntax:\nSHOW SLAVE STATUS\n\nThis statement provides status information on essential parameters of\nthe slave threads. If you issue this statement using the mysql client,\nyou can use a \\G statement terminator rather than a semicolon to obtain\na more readable vertical layout:\n\nmysql> SHOW SLAVE STATUS\\G\n*************************** 1. row ***************************\n Slave_IO_State: Waiting for master to send event\n Master_Host: localhost\n Master_User: root\n Master_Port: 3306\n Connect_Retry: 3\n Master_Log_File: gbichot-bin.005\n Read_Master_Log_Pos: 79\n Relay_Log_File: gbichot-relay-bin.005\n Relay_Log_Pos: 548\n Relay_Master_Log_File: gbichot-bin.005\n Slave_IO_Running: Yes\n Slave_SQL_Running: Yes\n Replicate_Do_DB:\n Replicate_Ignore_DB:\n Last_Errno: 0\n Last_Error:\n Skip_Counter: 0\n Exec_Master_Log_Pos: 79\n Relay_Log_Space: 552\n Until_Condition: None\n Until_Log_File:\n Until_Log_Pos: 0\n Master_SSL_Allowed: No\n Master_SSL_CA_File:\n Master_SSL_CA_Path:\n Master_SSL_Cert:\n Master_SSL_Cipher:\n Master_SSL_Key:\n Seconds_Behind_Master: 8\nMaster_SSL_Verify_Server_Cert: No\n Last_IO_Errno: 0\n Last_IO_Error:\n Last_SQL_Errno: 0\n Last_SQL_Error:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-slave-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-slave-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (220,32,'GEOMETRY','MySQL provides a standard way of creating spatial columns for geometry\ntypes, for example, with CREATE TABLE or ALTER TABLE. Currently,\nspatial columns are supported for MyISAM, InnoDB, NDB, and ARCHIVE\ntables. See also the annotations about spatial indexes under [HELP\nSPATIAL].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-columns.html\n\n','CREATE TABLE geom (g GEOMETRY);\n','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-columns.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (221,12,'NUMPOINTS','NumPoints(ls)\n\nReturns the number of Point objects in the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT NumPoints(GeomFromText(@ls));\n+------------------------------+\n| NumPoints(GeomFromText(@ls)) |\n+------------------------------+\n| 3 |\n+------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (222,37,'ALTER LOGFILE GROUP','Syntax:\nALTER LOGFILE GROUP logfile_group\n ADD UNDOFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement adds an UNDO file named \'file_name\' to an existing log\nfile group logfile_group. An ALTER LOGFILE GROUP statement has one and\nonly one ADD UNDOFILE clause. No DROP UNDOFILE clause is currently\nsupported.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an undo log file with the same name, or an undo\nlog file and a data file with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for undo log files could not be longer than 128 characters.\n(Bug#31769 (http://bugs.mysql.com/31769))\n\nThe optional INITIAL_SIZE parameter sets the UNDO file\'s initial size\nin bytes; if not specified, the initial size default to 128M (128\nmegabytes). You may optionally follow size with a one-letter\nabbreviation for an order of magnitude, similar to those used in\nmy.cnf. Generally, this is one of the letters M (for megabytes) or G\n(for gigabytes).\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nBeginning with MySQL Cluster NDB 2.1.18, 6.3.24, and 7.0.4, the minimum\nallowed value for INITIAL_SIZE is 1M. (Bug#29574\n(http://bugs.mysql.com/29574))\n\n*Note*: WAIT is parsed but otherwise ignored, and so has no effect in\nMySQL 5.1 and MySQL Cluster NDB 6.x. It is intended for future\nexpansion.\n\nThe ENGINE parameter (required) determines the storage engine which is\nused by this log file group, with engine_name being the name of the\nstorage engine. In MySQL 5.1 and MySQL Cluster NDB 6.x, the only\naccepted values for engine_name are "NDBCLUSTER" and "NDB". The two\nvalues are equivalent.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-logfile-group.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-logfile-group.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (223,18,'&','Syntax:\n&\n\nBitwise AND:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 29 & 15;\n -> 13\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (224,30,'LOCALTIMESTAMP','Syntax:\nLOCALTIMESTAMP, LOCALTIMESTAMP()\n\nLOCALTIMESTAMP and LOCALTIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (225,35,'CONVERT','Syntax:\nCONVERT(expr,type), CONVERT(expr USING transcoding_name)\n\nThe CONVERT() and CAST() functions take a value of one type and produce\na value of another type.\n\nThe type can be one of the following values:\n\no BINARY[(N)]\n\no CHAR[(N)]\n\no DATE\n\no DATETIME\n\no DECIMAL[(M[,D])]\n\no SIGNED [INTEGER]\n\no TIME\n\no UNSIGNED [INTEGER]\n\nBINARY produces a string with the BINARY data type. See\nhttp://dev.mysql.com/doc/refman/5.1/en/binary-varbinary.html for a\ndescription of how this affects comparisons. If the optional length N\nis given, BINARY(N) causes the cast to use no more than N bytes of the\nargument. Values shorter than N bytes are padded with 0x00 bytes to a\nlength of N.\n\nCHAR(N) causes the cast to use no more than N characters of the\nargument.\n\nCAST() and CONVERT(... USING ...) are standard SQL syntax. The\nnon-USING form of CONVERT() is ODBC syntax.\n\nCONVERT() with USING is used to convert data between different\ncharacter sets. In MySQL, transcoding names are the same as the\ncorresponding character set names. For example, this statement converts\nthe string \'abc\' in the default character set to the corresponding\nstring in the utf8 character set:\n\nSELECT CONVERT(\'abc\' USING utf8);\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','SELECT enum_col FROM tbl_name ORDER BY CAST(enum_col AS CHAR);\n','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (226,30,'ADDDATE','Syntax:\nADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, ADDDATE()\nis a synonym for DATE_ADD(). The related function SUBDATE() is a\nsynonym for DATE_SUB(). For information on the INTERVAL unit argument,\nsee the discussion for DATE_ADD().\n\nmysql> SELECT DATE_ADD(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\nmysql> SELECT ADDDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\n\nWhen invoked with the days form of the second argument, MySQL treats it\nas an integer number of days to be added to expr.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT ADDDATE(\'2008-01-02\', 31);\n -> \'2008-02-02\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (227,22,'REPEAT LOOP','Syntax:\n[begin_label:] REPEAT\n statement_list\nUNTIL search_condition\nEND REPEAT [end_label]\n\nThe statement list within a REPEAT statement is repeated until the\nsearch_condition is true. Thus, a REPEAT always enters the loop at\nleast once. statement_list consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter.\n\nA REPEAT statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/repeat-statement.html\n\n','mysql> delimiter //\n\nmysql> CREATE PROCEDURE dorepeat(p1 INT)\n -> BEGIN\n -> SET @x = 0;\n -> REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;\n -> END\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL dorepeat(1000)//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n+------+\n| @x |\n+------+\n| 1001 |\n+------+\n1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/repeat-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (228,37,'ALTER FUNCTION','Syntax:\nALTER FUNCTION func_name [characteristic ...]\n\ncharacteristic:\n { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nThis statement can be used to change the characteristics of a stored\nfunction. More than one change may be specified in an ALTER FUNCTION\nstatement. However, you cannot change the parameters or body of a\nstored function using this statement; to make such changes, you must\ndrop and re-create the function using DROP FUNCTION and CREATE\nFUNCTION.\n\nYou must have the ALTER ROUTINE privilege for the function. (That\nprivilege is granted automatically to the function creator.) If binary\nlogging is enabled, the ALTER FUNCTION statement might also require the\nSUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/alter-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-function.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (229,20,'SMALLINT','SMALLINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA small integer. The signed range is -32768 to 32767. The unsigned\nrange is 0 to 65535.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (230,20,'DOUBLE PRECISION','DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED]\n[ZEROFILL]\n\nThese types are synonyms for DOUBLE. Exception: If the REAL_AS_FLOAT\nSQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (231,35,'ORD','Syntax:\nORD(str)\n\nIf the leftmost character of the string str is a multi-byte character,\nreturns the code for that character, calculated from the numeric values\nof its constituent bytes using this formula:\n\n (1st byte code)\n+ (2nd byte code x 256)\n+ (3rd byte code x 2562) ...\n\nIf the leftmost character is not a multi-byte character, ORD() returns\nthe same value as the ASCII() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ORD(\'2\');\n -> 50\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (232,26,'DEALLOCATE PREPARE','Syntax:\n{DEALLOCATE | DROP} PREPARE stmt_name\n\nTo deallocate a prepared statement produced with PREPARE, use a\nDEALLOCATE PREPARE statement that refers to the prepared statement\nname. Attempting to execute a prepared statement after deallocating it\nresults in an error.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/deallocate-prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/deallocate-prepare.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (233,34,'ENVELOPE','Envelope(g)\n\nReturns the Minimum Bounding Rectangle (MBR) for the geometry value g.\nThe result is returned as a Polygon value.\n\nThe polygon is defined by the corner points of the bounding box:\n\nPOLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\')));\n+-------------------------------------------------------+\n| AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\'))) |\n+-------------------------------------------------------+\n| POLYGON((1 1,2 1,2 2,1 2,1 1)) |\n+-------------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (234,14,'IS_FREE_LOCK','Syntax:\nIS_FREE_LOCK(str)\n\nChecks whether the lock named str is free to use (that is, not locked).\nReturns 1 if the lock is free (no one is using the lock), 0 if the lock\nis in use, and NULL if an error occurs (such as an incorrect argument).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (235,29,'TOUCHES','Touches(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially touches g2. Two\ngeometries spatially touch if the interiors of the geometries do not\nintersect, but the boundary of one of the geometries intersects either\nthe boundary or the interior of the other.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (236,14,'INET_ATON','Syntax:\nINET_ATON(expr)\n\nGiven the dotted-quad representation of a network address as a string,\nreturns an integer that represents the numeric value of the address.\nAddresses may be 4- or 8-byte addresses.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_ATON(\'209.207.224.40\');\n -> 3520061480\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (237,11,'UNCOMPRESS','Syntax:\nUNCOMPRESS(string_to_uncompress)\n\nUncompresses a string compressed by the COMPRESS() function. If the\nargument is not a compressed value, the result is NULL. This function\nrequires MySQL to have been compiled with a compression library such as\nzlib. Otherwise, the return value is always NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESS(COMPRESS(\'any string\'));\n -> \'any string\'\nmysql> SELECT UNCOMPRESS(\'any string\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (238,20,'AUTO_INCREMENT','The AUTO_INCREMENT attribute can be used to generate a unique identity\nfor new rows:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html\n\n','CREATE TABLE animals (\n id MEDIUMINT NOT NULL AUTO_INCREMENT,\n name CHAR(30) NOT NULL,\n PRIMARY KEY (id)\n );\n\nINSERT INTO animals (name) VALUES \n (\'dog\'),(\'cat\'),(\'penguin\'),\n (\'lax\'),(\'whale\'),(\'ostrich\');\n\nSELECT * FROM animals;\n','http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (239,34,'ISSIMPLE','IsSimple(g)\n\nCurrently, this function is a placeholder and should not be used. If\nimplemented, its behavior will be as described in the next paragraph.\n\nReturns 1 if the geometry value g has no anomalous geometric points,\nsuch as self-intersection or self-tangency. IsSimple() returns 0 if the\nargument is not simple, and -1 if it is NULL.\n\nThe description of each instantiable geometric class given earlier in\nthe chapter includes the specific conditions that cause an instance of\nthat class to be classified as not simple. (See [HELP Geometry\nhierarchy].)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (240,4,'- BINARY','Syntax:\n-\n\nSubtraction:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3-5;\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (241,3,'GEOMCOLLFROMTEXT','GeomCollFromText(wkt[,srid]), GeometryCollectionFromText(wkt[,srid])\n\nConstructs a GEOMETRYCOLLECTION value using its WKT representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (242,3,'WKT DEFINITION','The Well-Known Text (WKT) representation of Geometry is designed to\nexchange geometry data in ASCII form.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-wkt-format.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/gis-wkt-format.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (243,30,'CURRENT_TIME','Syntax:\nCURRENT_TIME, CURRENT_TIME()\n\nCURRENT_TIME and CURRENT_TIME() are synonyms for CURTIME().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (244,9,'REVOKE','Syntax:\nREVOKE\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n FROM user [, user] ...\n\nREVOKE ALL PRIVILEGES, GRANT OPTION\n FROM user [, user] ...\n\nThe REVOKE statement enables system administrators to revoke privileges\nfrom MySQL accounts. Each account is named using the same format as for\nthe GRANT statement; for example, \'jeffrey\'@\'localhost\'. If you specify\nonly the user name part of the account name, a host name part of \'%\' is\nused. For details on the levels at which privileges exist, the\nallowable priv_type and priv_level values, and the syntax for\nspecifying users and passwords, see [HELP GRANT]\n\nTo use the first REVOKE syntax, you must have the GRANT OPTION\nprivilege, and you must have the privileges that you are revoking.\n\nTo revoke all privileges, use the second syntax, which drops all\nglobal, database, table, column, and routine privileges for the named\nuser or users:\n\nREVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...\n\nTo use this REVOKE syntax, you must have the global CREATE USER\nprivilege or the UPDATE privilege for the mysql database.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/revoke.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/revoke.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (245,15,'LAST_INSERT_ID','Syntax:\nLAST_INSERT_ID(), LAST_INSERT_ID(expr)\n\nFor MySQL 5.1.12 and later, LAST_INSERT_ID() (no arguments) returns the\nfirst automatically generated value successfully inserted for an\nAUTO_INCREMENT column as a result of the most recently executed INSERT\nstatement. The value of LAST_INSERT_ID() remains unchanged if no rows\nare successfully inserted.\n\nFor example, after inserting a row that generates an AUTO_INCREMENT\nvalue, you can get the value like this:\n\nmysql> SELECT LAST_INSERT_ID();\n -> 195\n\nIn MySQL 5.1.11 and earlier, LAST_INSERT_ID() (no arguments) returns\nthe first automatically generated value if any rows were successfully\ninserted or updated. This means that the returned value could be a\nvalue that was not successfully inserted into the table. If no rows\nwere successfully inserted, LAST_INSERT_ID() returns 0.\n\nThe value of LAST_INSERT_ID() will be consistent across all versions if\nall rows in the INSERT or UPDATE statement were successful.\n\nif a table contains an AUTO_INCREMENT column and INSERT ... ON\nDUPLICATE KEY UPDATE updates (rather than inserts) a row, the value of\nLAST_INSERT_ID() is not meaningful prior to MySQL 5.1.12. For a\nworkaround, see\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html.\n\nThe currently executing statement does not affect the value of\nLAST_INSERT_ID(). Suppose that you generate an AUTO_INCREMENT value\nwith one statement, and then refer to LAST_INSERT_ID() in a\nmultiple-row INSERT statement that inserts rows into a table with its\nown AUTO_INCREMENT column. The value of LAST_INSERT_ID() will remain\nstable in the second statement; its value for the second and later rows\nis not affected by the earlier row insertions. (However, if you mix\nreferences to LAST_INSERT_ID() and LAST_INSERT_ID(expr), the effect is\nundefined.)\n\nIf the previous statement returned an error, the value of\nLAST_INSERT_ID() is undefined. For transactional tables, if the\nstatement is rolled back due to an error, the value of LAST_INSERT_ID()\nis left undefined. For manual ROLLBACK, the value of LAST_INSERT_ID()\nis not restored to that before the transaction; it remains as it was at\nthe point of the ROLLBACK.\n\nWithin the body of a stored routine (procedure or function) or a\ntrigger, the value of LAST_INSERT_ID() changes the same way as for\nstatements executed outside the body of these kinds of objects. The\neffect of a stored routine or trigger upon the value of\nLAST_INSERT_ID() that is seen by following statements depends on the\nkind of routine:\n\no If a stored procedure executes statements that change the value of\n LAST_INSERT_ID(), the changed value will be seen by statements that\n follow the procedure call.\n\no For stored functions and triggers that change the value, the value is\n restored when the function or trigger ends, so following statements\n will not see a changed value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (246,30,'LAST_DAY','Syntax:\nLAST_DAY(date)\n\nTakes a date or datetime value and returns the corresponding value for\nthe last day of the month. Returns NULL if the argument is invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT LAST_DAY(\'2003-02-05\');\n -> \'2003-02-28\'\nmysql> SELECT LAST_DAY(\'2004-02-05\');\n -> \'2004-02-29\'\nmysql> SELECT LAST_DAY(\'2004-01-01 01:01:01\');\n -> \'2004-01-31\'\nmysql> SELECT LAST_DAY(\'2003-03-32\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (247,20,'MEDIUMINT','MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA medium-sized integer. The signed range is -8388608 to 8388607. The\nunsigned range is 0 to 16777215.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (248,4,'FLOOR','Syntax:\nFLOOR(X)\n\nReturns the largest integer value not greater than X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT FLOOR(1.23);\n -> 1\nmysql> SELECT FLOOR(-1.23);\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (249,35,'RTRIM','Syntax:\nRTRIM(str)\n\nReturns the string str with trailing space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RTRIM(\'barbar \');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (250,27,'EXPLAIN','Syntax:\nEXPLAIN tbl_name\n\nOr:\n\nEXPLAIN [EXTENDED | PARTITIONS] SELECT select_options\n\nThe EXPLAIN statement can be used either as a synonym for DESCRIBE or\nas a way to obtain information about how MySQL executes a SELECT\nstatement:\n\no EXPLAIN tbl_name is synonymous with DESCRIBE tbl_name or SHOW COLUMNS\n FROM tbl_name.\n\n For a description of the DESCRIBE and SHOW COLUMNS statements, see\n [HELP DESCRIBE], and [HELP SHOW COLUMNS].\n\no When you precede a SELECT statement with the keyword EXPLAIN, MySQL\n displays information from the optimizer about the query execution\n plan. That is, MySQL explains how it would process the SELECT,\n including information about how tables are joined and in which order.\n EXPLAIN EXTENDED can be used to provide additional information.\n\n For information regarding the use of EXPLAIN and EXPLAIN EXTENDED for\n obtaining query execution plan information, see\n http://dev.mysql.com/doc/refman/5.1/en/using-explain.html.\n\no EXPLAIN PARTITIONS is available beginning with MySQL 5.1.5. It is\n useful only when examining queries involving partitioned tables.\n\n For details, see\n http://dev.mysql.com/doc/refman/5.1/en/partitioning-info.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/explain.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/explain.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (251,4,'DEGREES','Syntax:\nDEGREES(X)\n\nReturns the argument X, converted from radians to degrees.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT DEGREES(PI());\n -> 180\nmysql> SELECT DEGREES(PI() / 2);\n -> 90\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (252,20,'VARCHAR','[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA variable-length string. M represents the maximum column length in\ncharacters. The range of M is 0 to 65,535. The effective maximum length\nof a VARCHAR is subject to the maximum row size (65,535 bytes, which is\nshared among all columns) and the character set used. For example, utf8\ncharacters can require up to three bytes per character, so a VARCHAR\ncolumn that uses the utf8 character set can be declared to be a maximum\nof 21,844 characters.\n\nMySQL stores VARCHAR values as a one-byte or two-byte length prefix\nplus data. The length prefix indicates the number of bytes in the\nvalue. A VARCHAR column uses one length byte if values require no more\nthan 255 bytes, two length bytes if values may require more than 255\nbytes.\n\n*Note*: MySQL 5.1 follows the standard SQL specification, and does not\nremove trailing spaces from VARCHAR values.\n\nVARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the\nstandard SQL way to define that a VARCHAR column should use some\npredefined character set. MySQL 4.1 and up uses utf8 as this predefined\ncharacter set.\nhttp://dev.mysql.com/doc/refman/5.1/en/charset-national.html. NVARCHAR\nis shorthand for NATIONAL VARCHAR.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (253,35,'UNHEX','Syntax:\n\nUNHEX(str)\n\nPerforms the inverse operation of HEX(str). That is, it interprets each\npair of hexadecimal digits in the argument as a number and converts it\nto the character represented by the number. The resulting characters\nare returned as a binary string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT UNHEX(\'4D7953514C\');\n -> \'MySQL\'\nmysql> SELECT 0x4D7953514C;\n -> \'MySQL\'\nmysql> SELECT UNHEX(HEX(\'string\'));\n -> \'string\'\nmysql> SELECT HEX(UNHEX(\'1267\'));\n -> \'1267\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (254,4,'- UNARY','Syntax:\n-\n\nUnary minus. This operator changes the sign of the argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT - 2;\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (255,22,'SELECT INTO','Syntax:\nSELECT col_name [, col_name] ...\n INTO var_name [, var_name] ...\n table_expr\n\nSELECT ... INTO syntax enables selected columns to be stored directly\ninto variables. The query should return a single row. If the query\nreturns no rows, a warning with error code 1329 occurs (No data), and\nthe variable values remain unchanged. If the query returns multiple\nrows, error 1172 occurs (Result consisted of more than one row). If it\nis possible that the statement may retrieve multiple rows, you can use\nLIMIT 1 to limit the result set to a single row.\n\nIn the context of such statements that occur as part of events executed\nby the Event Scheduler, diagnostics messages (not only errors, but also\nwarnings) are written to the error log, and, on Windows, to the\napplication event log. For additional information, see\nhttp://dev.mysql.com/doc/refman/5.1/en/events-status-info.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select-into-statement.html\n\n','SELECT id,data INTO x,y FROM test.t1 LIMIT 1;\n','http://dev.mysql.com/doc/refman/5.1/en/select-into-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (256,16,'STD','Syntax:\nSTD(expr)\n\nReturns the population standard deviation of expr. This is an extension\nto standard SQL. The standard SQL function STDDEV_POP() can be used\ninstead.\n\nThis function returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (257,4,'COS','Syntax:\nCOS(X)\n\nReturns the cosine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT COS(PI());\n -> -1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (258,30,'DATE FUNCTION','Syntax:\nDATE(expr)\n\nExtracts the date part of the date or datetime expression expr.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE(\'2003-12-31 01:02:03\');\n -> \'2003-12-31\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (259,37,'DROP TRIGGER','Syntax:\nDROP TRIGGER [IF EXISTS] [schema_name.]trigger_name\n\nThis statement drops a trigger. The schema (database) name is optional.\nIf the schema is omitted, the trigger is dropped from the default\nschema. DROP TRIGGER was added in MySQL 5.0.2. Its use requires the\nTRIGGER privilege for the table associated with the trigger. (This\nstatement requires the SUPER privilege prior to MySQL 5.1.6.)\n\nUse IF EXISTS to prevent an error from occurring for a trigger that\ndoes not exist. A NOTE is generated for a non-existent trigger when\nusing IF EXISTS. See [HELP SHOW WARNINGS]. The IF EXISTS clause was\nadded in MySQL 5.1.14.\n\nTriggers for a table are also dropped if you drop the table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-trigger.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (260,26,'RESET MASTER','Syntax:\nRESET MASTER\n\nDeletes all binary logs listed in the index file, resets the binary log\nindex file to be empty, and creates a new binary log file. It is\nintended to be used only when the master is started for the first time.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset-master.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (261,4,'TAN','Syntax:\nTAN(X)\n\nReturns the tangent of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT TAN(PI());\n -> -1.2246063538224e-16\nmysql> SELECT TAN(PI()+1);\n -> 1.5574077246549\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (262,4,'PI','Syntax:\nPI()\n\nReturns the value of π (pi). The default number of decimal places\ndisplayed is seven, but MySQL uses the full double-precision value\ninternally.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT PI();\n -> 3.141593\nmysql> SELECT PI()+0.000000000000000000;\n -> 3.141592653589793116\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (263,30,'WEEKOFYEAR','Syntax:\nWEEKOFYEAR(date)\n\nReturns the calendar week of the date as a number in the range from 1\nto 53. WEEKOFYEAR() is a compatibility function that is equivalent to\nWEEK(date,3).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKOFYEAR(\'2008-02-20\');\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (264,4,'/','Syntax:\n/\n\nDivision:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3/5;\n -> 0.60\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (265,26,'PURGE BINARY LOGS','Syntax:\nPURGE { BINARY | MASTER } LOGS\n { TO \'log_name\' | BEFORE datetime_expr }\n\nThe binary log is a set of files that contain information about data\nmodifications made by the MySQL server. The log consists of a set of\nbinary log files, plus an index file.\n\nThe PURGE BINARY LOGS statement deletes all the binary log files listed\nin the log index file prior to the specified log file name or date. The\nlog files also are removed from the list recorded in the index file, so\nthat the given log file becomes the first.\n\nThis statement has no effect if the --log-bin option has not been\nenabled.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/purge-binary-logs.html\n\n','PURGE BINARY LOGS TO \'mysql-bin.010\';\nPURGE BINARY LOGS BEFORE \'2008-04-02 22:46:26\';\n','http://dev.mysql.com/doc/refman/5.1/en/purge-binary-logs.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (266,16,'STDDEV_SAMP','Syntax:\nSTDDEV_SAMP(expr)\n\nReturns the sample standard deviation of expr (the square root of\nVAR_SAMP().\n\nSTDDEV_SAMP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (267,15,'SCHEMA','Syntax:\nSCHEMA()\n\nThis function is a synonym for DATABASE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (268,31,'MLINEFROMWKB','MLineFromWKB(wkb[,srid]), MultiLineStringFromWKB(wkb[,srid])\n\nConstructs a MULTILINESTRING value using its WKB representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (269,4,'LOG2','Syntax:\nLOG2(X)\n\nReturns the base-2 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG2(65536);\n -> 16\nmysql> SELECT LOG2(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (270,30,'SUBTIME','Syntax:\nSUBTIME(expr1,expr2)\n\nSUBTIME() returns expr1 - expr2 expressed as a value in the same format\nas expr1. expr1 is a time or datetime expression, and expr2 is a time\nexpression.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SUBTIME(\'2007-12-31 23:59:59.999999\',\'1 1:1:1.000002\');\n -> \'2007-12-30 22:58:58.999997\'\nmysql> SELECT SUBTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'-00:59:59.999999\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (271,11,'UNCOMPRESSED_LENGTH','Syntax:\nUNCOMPRESSED_LENGTH(compressed_string)\n\nReturns the length that the compressed string had before being\ncompressed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT(\'a\',30)));\n -> 30\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (272,37,'DROP TABLE','Syntax:\nDROP [TEMPORARY] TABLE [IF EXISTS]\n tbl_name [, tbl_name] ...\n [RESTRICT | CASCADE]\n\nDROP TABLE removes one or more tables. You must have the DROP privilege\nfor each table. All table data and the table definition are removed, so\nbe careful with this statement! If any of the tables named in the\nargument list do not exist, MySQL returns an error indicating by name\nwhich non-existing tables it was unable to drop, but it also drops all\nof the tables in the list that do exist.\n\n*Important*: When a table is dropped, user privileges on the table are\nnot automatically dropped. See [HELP GRANT].\n\nNote that for a partitioned table, DROP TABLE permanently removes the\ntable definition, all of its partitions, and all of the data which was\nstored in those partitions. It also removes the partitioning definition\n(.par) file associated with the dropped table.\n\nUse IF EXISTS to prevent an error from occurring for tables that do not\nexist. A NOTE is generated for each non-existent table when using IF\nEXISTS. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE are allowed to make porting easier. In MySQL 5.1,\nthey do nothing.\n\n*Note*: DROP TABLE automatically commits the current active\ntransaction, unless you use the TEMPORARY keyword.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (273,4,'POW','Syntax:\nPOW(X,Y)\n\nReturns the value of X raised to the power of Y.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT POW(2,2);\n -> 4\nmysql> SELECT POW(2,-2);\n -> 0.25\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (274,26,'SHOW CREATE TABLE','Syntax:\nSHOW CREATE TABLE tbl_name\n\nShows the CREATE TABLE statement that creates the given table. The\nstatement requires the SELECT privilege for the table. This statement\nalso works with views.\nSHOW CREATE TABLE quotes table and column names according to the value\nof the sql_quote_show_create option. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-session-variables.html.\…: http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html\n\n','mysql> SHOW CREATE TABLE t\\G\n*************************** 1. row ***************************\n Table: t\nCreate Table: CREATE TABLE t (\n id INT(11) default NULL auto_increment,\n s char(60) default NULL,\n PRIMARY KEY (id)\n) ENGINE=MyISAM\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (275,26,'DUAL','You are allowed to specify DUAL as a dummy table name in situations\nwhere no tables are referenced:\n\nmysql> SELECT 1 + 1 FROM DUAL;\n -> 2\n\nDUAL is purely for the convenience of people who require that all\nSELECT statements should have FROM and possibly other clauses. MySQL\nmay ignore the clauses. MySQL does not require FROM DUAL if no tables\nare referenced.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/select.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (276,35,'INSTR','Syntax:\nINSTR(str,substr)\n\nReturns the position of the first occurrence of substring substr in\nstring str. This is the same as the two-argument form of LOCATE(),\nexcept that the order of the arguments is reversed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT INSTR(\'foobarbar\', \'bar\');\n -> 4\nmysql> SELECT INSTR(\'xbar\', \'foobar\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (277,30,'NOW','Syntax:\nNOW()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context. The value is expressed in the\ncurrent time zone.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT NOW();\n -> \'2007-12-15 23:50:26\'\nmysql> SELECT NOW() + 0;\n -> 20071215235026.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (278,26,'SHOW ENGINES','Syntax:\nSHOW [STORAGE] ENGINES\n\nSHOW ENGINES displays status information about the server\'s storage\nengines. This is particularly useful for checking whether a storage\nengine is supported, or to see what the default engine is. SHOW TABLE\nTYPES is a deprecated synonym.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-engines.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-engines.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (279,17,'>=','Syntax:\n>=\n\nGreater than or equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 >= 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (280,4,'EXP','Syntax:\nEXP(X)\n\nReturns the value of e (the base of natural logarithms) raised to the\npower of X. The inverse of this function is LOG() (using a single\nargument only) or LN().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT EXP(2);\n -> 7.3890560989307\nmysql> SELECT EXP(-2);\n -> 0.13533528323661\nmysql> SELECT EXP(0);\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (281,20,'LONGBLOB','LONGBLOB\n\nA BLOB column with a maximum length of 4,294,967,295 or 4GB (232 - 1)\nbytes. The effective maximum length of LONGBLOB columns depends on the\nconfigured maximum packet size in the client/server protocol and\navailable memory. Each LONGBLOB value is stored using a four-byte\nlength prefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (282,12,'POINTN','PointN(ls,N)\n\nReturns the N-th Point in the Linestring value ls. Points are numbered\nbeginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(PointN(GeomFromText(@ls),2));\n+-------------------------------------+\n| AsText(PointN(GeomFromText(@ls),2)) |\n+-------------------------------------+\n| POINT(2 2) |\n+-------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (283,20,'YEAR DATA TYPE','YEAR[(2|4)]\n\nA year in two-digit or four-digit format. The default is four-digit\nformat. In four-digit format, the allowable values are 1901 to 2155,\nand 0000. In two-digit format, the allowable values are 70 to 69,\nrepresenting years from 1970 to 2069. MySQL displays YEAR values in\nYYYY format, but allows you to assign values to YEAR columns using\neither strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (284,16,'SUM','Syntax:\nSUM([DISTINCT] expr)\n\nReturns the sum of expr. If the return set has no rows, SUM() returns\nNULL. The DISTINCT keyword can be used in MySQL 5.1 to sum only the\ndistinct values of expr.\n\nSUM() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (285,4,'OCT','Syntax:\nOCT(N)\n\nReturns a string representation of the octal value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,8). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT OCT(12);\n -> \'14\'\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (286,30,'SYSDATE','Syntax:\nSYSDATE()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context.\n\nSYSDATE() returns the time at which it executes. This differs from the\nbehavior for NOW(), which returns a constant time that indicates the\ntime at which the statement began to execute. (Within a stored routine\nor trigger, NOW() returns the time at which the routine or triggering\nstatement began to execute.)\n\nmysql> SELECT NOW(), SLEEP(2), NOW();\n+---------------------+----------+---------------------+\n| NOW() | SLEEP(2) | NOW() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |\n+---------------------+----------+---------------------+\n\nmysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();\n+---------------------+----------+---------------------+\n| SYSDATE() | SLEEP(2) | SYSDATE() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |\n+---------------------+----------+---------------------+\n\nIn addition, the SET TIMESTAMP statement affects the value returned by\nNOW() but not by SYSDATE(). This means that timestamp settings in the\nbinary log have no effect on invocations of SYSDATE().\n\nBecause SYSDATE() can return different values even within the same\nstatement, and is not affected by SET TIMESTAMP, it is\nnon-deterministic and therefore unsafe for replication if\nstatement-based binary logging is used. If that is a problem, you can\nuse row-based logging, or start the server with the --sysdate-is-now\noption to cause SYSDATE() to be an alias for NOW(). The\nnon-deterministic nature of SYSDATE() also means that indexes cannot be\nused for evaluating expressions that refer to it.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (287,5,'UNINSTALL PLUGIN','Syntax:\nUNINSTALL PLUGIN plugin_name\n\nThis statement removes an installed plugin. You cannot uninstall a\nplugin if any table that uses it is open.\n\nplugin_name must be the name of some plugin that is listed in the\nmysql.plugin table. The server executes the plugin\'s deinitialization\nfunction and removes the row for the plugin from the mysql.plugin\ntable, so that subsequent server restarts will not load and initialize\nthe plugin. UNINSTALL PLUGIN does not remove the plugin\'s shared\nlibrary file.\n\nTo use UNINSTALL PLUGIN, you must have the DELETE privilege for the\nmysql.plugin table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/uninstall-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/uninstall-plugin.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (288,31,'ASBINARY','AsBinary(g), AsWKB(g)\n\nConverts a value in internal geometry format to its WKB representation\nand returns the binary result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…','SELECT AsBinary(g) FROM geom;\n','http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (289,35,'REPEAT FUNCTION','Syntax:\nREPEAT(str,count)\n\nReturns a string consisting of the string str repeated count times. If\ncount is less than 1, returns an empty string. Returns NULL if str or\ncount are NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT REPEAT(\'MySQL\', 3);\n -> \'MySQLMySQLMySQL\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (290,26,'SHOW TABLES','Syntax:\nSHOW [FULL] TABLES [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLES lists the non-TEMPORARY tables in a given database. You can\nalso get this list using the mysqlshow db_name command. The LIKE\nclause, if present, indicates which table names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nThis statement also lists any views in the database. The FULL modifier\nis supported such that SHOW FULL TABLES displays a second output\ncolumn. Values for the second column are BASE TABLE for a table and\nVIEW for a view.\n\nIf you have no privileges for a base table or view, it does not show up\nin the output from SHOW TABLES or mysqlshow db_name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-tables.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (291,30,'MAKEDATE','Syntax:\nMAKEDATE(year,dayofyear)\n\nReturns a date, given year and day-of-year values. dayofyear must be\ngreater than 0 or the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);\n -> \'2011-01-31\', \'2011-02-01\'\nmysql> SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);\n -> \'2011-12-31\', \'2014-12-31\'\nmysql> SELECT MAKEDATE(2011,0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (292,35,'BINARY OPERATOR','Syntax:\nBINARY\n\nThe BINARY operator casts the string following it to a binary string.\nThis is an easy way to force a column comparison to be done byte by\nbyte rather than character by character. This causes the comparison to\nbe case sensitive even if the column isn\'t defined as BINARY or BLOB.\nBINARY also causes trailing spaces to be significant.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','mysql> SELECT \'a\' = \'A\';\n -> 1\nmysql> SELECT BINARY \'a\' = \'A\';\n -> 0\nmysql> SELECT \'a\' = \'a \';\n -> 1\nmysql> SELECT BINARY \'a\' = \'a \';\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (293,6,'MBROVERLAPS','MBROverlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 overlap. The term spatially overlaps is\nused if two geometries intersect and their intersection results in a\ngeometry of the same dimension but not equal to either of the given\ngeometries.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (294,35,'SOUNDEX','Syntax:\nSOUNDEX(str)\n\nReturns a soundex string from str. Two strings that sound almost the\nsame should have identical soundex strings. A standard soundex string\nis four characters long, but the SOUNDEX() function returns an\narbitrarily long string. You can use SUBSTRING() on the result to get a\nstandard soundex string. All non-alphabetic characters in str are\nignored. All international alphabetic characters outside the A-Z range\nare treated as vowels.\n\n*Important*: When using SOUNDEX(), you should be aware of the following\nlimitations:\n\no This function, as currently implemented, is intended to work well\n with strings that are in the English language only. Strings in other\n languages may not produce reliable results.\n\no This function is not guaranteed to provide consistent results with\n strings that use multi-byte character sets, including utf-8.\n\n We hope to remove these limitations in a future release. See\n Bug#22638 (http://bugs.mysql.com/22638) for more information.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SOUNDEX(\'Hello\');\n -> \'H400\'\nmysql> SELECT SOUNDEX(\'Quadratically\');\n -> \'Q36324\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (295,6,'MBRTOUCHES','MBRTouches(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 touch. Two geometries spatially touch if\nthe interiors of the geometries do not intersect, but the boundary of\none of the geometries intersects either the boundary or the interior of\nthe other.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (296,37,'DROP EVENT','Syntax:\nDROP EVENT [IF EXISTS] event_name\n\nThis statement drops the event named event_name. The event immediately\nceases being active, and is deleted completely from the server.\n\nIf the event does not exist, the error ERROR 1517 (HY000): Unknown\nevent \'event_name\' results. You can override this and cause the\nstatement to generate a warning for non-existent events instead using\nIF EXISTS.\n\nBeginning with MySQL 5.1.12, this statement requires the having the\nEVENT privilege for the schema to which the event to be dropped\nbelongs. (In MySQL 5.1.11 and earlier, an event could be dropped only\nby its definer, or by a user having the SUPER privilege.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-event.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (297,26,'INSERT SELECT','Syntax:\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n SELECT ...\n [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]\n\nWith INSERT ... SELECT, you can quickly insert many rows into a table\nfrom one or many tables. For example:\n\nINSERT INTO tbl_temp2 (fld_id)\n SELECT tbl_temp1.fld_order_id\n FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert-select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert-select.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (298,37,'CREATE PROCEDURE','Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n PROCEDURE sp_name ([proc_parameter[,...]])\n [characteristic ...] routine_body\n\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n FUNCTION sp_name ([func_parameter[,...]])\n RETURNS type\n [characteristic ...] routine_body\n \nproc_parameter:\n [ IN | OUT | INOUT ] param_name type\n \nfunc_parameter:\n param_name type\n\ntype:\n Any valid MySQL data type\n\ncharacteristic:\n LANGUAGE SQL\n | [NOT] DETERMINISTIC\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nroutine_body:\n Valid SQL procedure statement\n\nThese statements create stored routines. By default, a routine is\nassociated with the default database. To associate the routine\nexplicitly with a given database, specify the name as db_name.sp_name\nwhen you create it.\n\nThe CREATE FUNCTION statement is also used in MySQL to support UDFs\n(user-defined functions). See\nhttp://dev.mysql.com/doc/refman/5.1/en/adding-functions.html. A UDF can\nbe regarded as an external stored function. However, do note that\nstored functions share their namespace with UDFs. See\nhttp://dev.mysql.com/doc/refman/5.1/en/function-resolution.html, for\nthe rules describing how the server interprets references to different\nkinds of functions.\n\nWhen the routine is invoked, an implicit USE db_name is performed (and\nundone when the routine terminates). The causes the routine to have the\ngiven default database while it executes. USE statements within stored\nroutines are disallowed.\n\nWhen a stored function has been created, you invoke it by referring to\nit in an expression. The function returns a value during expression\nevaluation. When a stored procedure has been created, you invoke it by\nusing the CALL statement (see [HELP CALL]).\n\nTo execute the CREATE PROCEDURE or CREATE FUNCTION statement, it is\nnecessary to have the CREATE ROUTINE privilege. By default, MySQL\nautomatically grants the ALTER ROUTINE and EXECUTE privileges to the\nroutine creator. See also\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-routines-privileges.htm… binary logging is enabled, the CREATE FUNCTION statement might also\nrequire the SUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html.\n\… DEFINER and SQL SECURITY clauses specify the security context to be\nused when checking access privileges at routine execution time, as\ndescribed later.\n\nIf the routine name is the same as the name of a built-in SQL function,\nyou must use a space between the name and the following parenthesis\nwhen defining the routine, or a syntax error occurs. This is also true\nwhen you invoke the routine later. For this reason, we suggest that it\nis better to avoid re-using the names of existing SQL functions for\nyour own stored routines.\n\nThe IGNORE_SPACE SQL mode applies to built-in functions, not to stored\nroutines. It is always allowable to have spaces after a routine name,\nregardless of whether IGNORE_SPACE is enabled.\n\nThe parameter list enclosed within parentheses must always be present.\nIf there are no parameters, an empty parameter list of () should be\nused. Parameter names are not case sensitive.\n\nEach parameter can be declared to use any valid data type, except that\nthe COLLATE attribute cannot be used.\n\nEach parameter is an IN parameter by default. To specify otherwise for\na parameter, use the keyword OUT or INOUT before the parameter name.\n\n*Note*: Specifying a parameter as IN, OUT, or INOUT is valid only for a\nPROCEDURE. (FUNCTION parameters are always regarded as IN parameters.)\n\nAn IN parameter passes a value into a procedure. The procedure might\nmodify the value, but the modification is not visible to the caller\nwhen the procedure returns. An OUT parameter passes a value from the\nprocedure back to the caller. Its initial value is NULL within the\nprocedure, and its value is visible to the caller when the procedure\nreturns. An INOUT parameter is initialized by the caller, can be\nmodified by the procedure, and any change made by the procedure is\nvisible to the caller when the procedure returns.\n\nFor each OUT or INOUT parameter, pass a user-defined variable in the\nCALL statement that invokes the procedure so that you can obtain its\nvalue when the procedure returns. If you are calling the procedure from\nwithin another stored procedure or function, you can also pass a\nroutine parameter or local routine variable as an IN or INOUT\nparameter.\n\nThe RETURNS clause may be specified only for a FUNCTION, for which it\nis mandatory. It indicates the return type of the function, and the\nfunction body must contain a RETURN value statement. If the RETURN\nstatement returns a value of a different type, the value is coerced to\nthe proper type. For example, if a function specifies an ENUM or SET\nvalue in the RETURNS clause, but the RETURN statement returns an\ninteger, the value returned from the function is the string for the\ncorresponding ENUM member of set of SET members.\n\nThe routine_body consists of a valid SQL procedure statement. This can\nbe a simple statement such as SELECT or INSERT, or it can be a compound\nstatement written using BEGIN and END. Compound statements can contain\ndeclarations, loops, and other control structure statements. The syntax\nfor these statements is described in\nhttp://dev.mysql.com/doc/refman/5.1/en/sql-syntax-compound-statements.h… allows routines to contain DDL statements, such as CREATE and\nDROP. MySQL also allows stored procedures (but not stored functions) to\ncontain SQL transaction statements such as COMMIT. Stored functions may\nnot contain statements that perform explicit or implicit commit or\nrollback. Support for these statements is not required by the SQL\nstandard, which states that each DBMS vendor may decide whether to\nallow them.\n\nStatements that return a result set cannot be used within a stored\nfunction. This includes SELECT statements that do not have an INTO\nvar_list clause and other statements such as SHOW, EXPLAIN, and CHECK\nTABLE. For statements that can be determined at function definition\ntime to return a result set, a Not allowed to return a result set from\na function error occurs (ER_SP_NO_RETSET). For statements that can be\ndetermined only at runtime to return a result set, a PROCEDURE %s can\'t\nreturn a result set in the given context error occurs\n(ER_SP_BADSELECT).\n\nFor additional information about statements that are not allowed in\nstored routines, see\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.htm… following example shows a simple stored procedure that uses an OUT\nparameter:\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE simpleproc (OUT param1 INT)\n -> BEGIN\n -> SELECT COUNT(*) INTO param1 FROM t;\n -> END;\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter ;\n\nmysql> CALL simpleproc(@a);\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @a;\n+------+\n| @a |\n+------+\n| 3 |\n+------+\n1 row in set (0.00 sec)\n\nThe example uses the mysql client delimiter command to change the\nstatement delimiter from ; to // while the procedure is being defined.\nThis allows the ; delimiter used in the procedure body to be passed\nthrough to the server rather than being interpreted by mysql itself.\nSee\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-defini… information about invoking stored procedures from within programs\nwritten in a language that has a MySQL interface, see [HELP CALL].\n\nThe following example function takes a parameter, performs an operation\nusing an SQL function, and returns the result. In this case, it is\nunnecessary to use delimiter because the function definition contains\nno internal ; statement delimiters:\n\nmysql> CREATE FUNCTION hello (s CHAR(20))\nmysql> RETURNS CHAR(50) DETERMINISTIC\n -> RETURN CONCAT(\'Hello, \',s,\'!\');\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT hello(\'world\');\n+----------------+\n| hello(\'world\') |\n+----------------+\n| Hello, world! |\n+----------------+\n1 row in set (0.00 sec)\n\nMySQL stores the sql_mode system variable setting that is in effect at\nthe time a routine is created, and always executes the routine with\nthis setting in force, regardless of the server SQL mode in effect when\nthe routine is invoked.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (299,20,'VARBINARY','VARBINARY(M)\n\nThe VARBINARY type is similar to the VARCHAR type, but stores binary\nbyte strings rather than non-binary character strings. M represents the\nmaximum column length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (300,26,'LOAD INDEX','Syntax:\nLOAD INDEX INTO CACHE\n tbl_index_list [, tbl_index_list] ...\n\ntbl_index_list:\n tbl_name\n [[INDEX|KEY] (index_name[, index_name] ...)]\n [IGNORE LEAVES]\n\nThe LOAD INDEX INTO CACHE statement preloads a table index into the key\ncache to which it has been assigned by an explicit CACHE INDEX\nstatement, or into the default key cache otherwise. LOAD INDEX INTO\nCACHE is used only for MyISAM tables. It is not supported for tables\nhaving user-defined partitioning (see\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations.html.)… IGNORE LEAVES modifier causes only blocks for the non-leaf nodes of\nthe index to be preloaded.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-index.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (301,26,'UNION','Syntax:\nSELECT ...\nUNION [ALL | DISTINCT] SELECT ...\n[UNION [ALL | DISTINCT] SELECT ...]\n\nUNION is used to combine the result from multiple SELECT statements\ninto a single result set.\n\nThe column names from the first SELECT statement are used as the column\nnames for the results returned. Selected columns listed in\ncorresponding positions of each SELECT statement should have the same\ndata type. (For example, the first column selected by the first\nstatement should have the same type as the first column selected by the\nother statements.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/union.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/union.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (302,30,'TO_DAYS','Syntax:\nTO_DAYS(date)\n\nGiven a date date, returns a day number (the number of days since year\n0).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TO_DAYS(950501);\n -> 728779\nmysql> SELECT TO_DAYS(\'2007-10-07\');\n -> 733321\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (303,35,'NOT REGEXP','Syntax:\nexpr NOT REGEXP pat, expr NOT RLIKE pat\n\nThis is the same as NOT (expr REGEXP pat).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/regexp.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/regexp.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (304,26,'SHOW INDEX','Syntax:\nSHOW INDEX FROM tbl_name [FROM db_name]\n\nSHOW INDEX returns table index information. The format resembles that\nof the SQLStatistics call in ODBC.\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. These two statements are equivalent:\n\nSHOW INDEX FROM mytable FROM mydb;\nSHOW INDEX FROM mydb.mytable;\n\nSHOW KEYS is a synonym for SHOW INDEX. You can also list a table\'s\nindexes with the mysqlshow -k db_name tbl_name command.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-index.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (305,26,'SHOW CREATE DATABASE','Syntax:\nSHOW CREATE {DATABASE | SCHEMA} db_name\n\nShows the CREATE DATABASE statement that creates the given database.\nSHOW CREATE SCHEMA is a synonym for SHOW CREATE DATABASE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-database.html\n\n','mysql> SHOW CREATE DATABASE test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n\nmysql> SHOW CREATE SCHEMA test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-database.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (306,22,'LEAVE','Syntax:\nLEAVE label\n\nThis statement is used to exit the flow control construct that has the\ngiven label. It can be used within BEGIN ... END or loop constructs\n(LOOP, REPEAT, WHILE).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/leave-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/leave-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (307,17,'NOT IN','Syntax:\nexpr NOT IN (value,...)\n\nThis is the same as NOT (expr IN (value,...)).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (308,13,'!','Syntax:\nNOT, !\n\nLogical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is\nnon-zero, and NOT NULL returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT NOT 10;\n -> 0\nmysql> SELECT NOT 0;\n -> 1\nmysql> SELECT NOT NULL;\n -> NULL\nmysql> SELECT ! (1+1);\n -> 0\nmysql> SELECT ! 1+1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (309,22,'DECLARE HANDLER','Syntax:\nDECLARE handler_type HANDLER\n FOR condition_value [, condition_value] ...\n statement\n\nhandler_type:\n CONTINUE\n | EXIT\n | UNDO\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | condition_name\n | SQLWARNING\n | NOT FOUND\n | SQLEXCEPTION\n | mysql_error_code\n\nThe DECLARE ... HANDLER statement specifies handlers that each may deal\nwith one or more conditions. If one of these conditions occurs, the\nspecified statement is executed. statement can be a simple statement\n(for example, SET var_name = value), or it can be a compound statement\nwritten using BEGIN and END (see [HELP BEGIN END]).\n\nFor a CONTINUE handler, execution of the current program continues\nafter execution of the handler statement. For an EXIT handler,\nexecution terminates for the BEGIN ... END compound statement in which\nthe handler is declared. (This is true even if the condition occurs in\nan inner block.) The UNDO handler type statement is not supported.\n\nIf a condition occurs for which no handler has been declared, the\ndefault action is EXIT.\n\nA condition_value for DECLARE ... HANDLER can be any of the following\nvalues:\n\no An SQLSTATE value (a 5-character string literal) or a MySQL error\n code (a number). You should not use SQLSTATE value \'00000\' or MySQL\n error code 0, because those indicate sucess rather than an error\n condition. For a list of SQLSTATE values and MySQL error codes, see\n http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html.\n\no A condition name previously specified with DECLARE ... CONDITION. See\n [HELP DECLARE CONDITION].\n\no SQLWARNING is shorthand for the class of SQLSTATE values that begin\n with \'01\'.\n\no NOT FOUND is shorthand for the class of SQLSTATE values that begin\n with \'02\'. This is relevant only the context of cursors and is used\n to control what happens when a cursor reaches the end of a data set.\n If no more rows are available, a No Data condition occurs with\n SQLSTATE value 02000. To detect this condition, you can set up a\n handler for it (or for a NOT FOUND condition). An example is shown in\n http://dev.mysql.com/doc/refman/5.1/en/cursors.html. This condition\n also occurs for SELECT ... INTO var_list statements that retrieve no\n rows.\n\no SQLEXCEPTION is shorthand for the class of SQLSTATE values that do\n not begin with \'00\', \'01\', or \'02\'.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html\n\n','mysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1));\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE handlerdemo ()\n -> BEGIN\n -> DECLARE CONTINUE HANDLER FOR SQLSTATE \'23000\' SET @x2 = 1;\n -> SET @x = 1;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 2;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 3;\n -> END;\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL handlerdemo()//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n +------+\n | @x |\n +------+\n | 3 |\n +------+\n 1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (310,20,'DOUBLE','DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA normal-size (double-precision) floating-point number. Allowable\nvalues are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and\n2.2250738585072014E-308 to 1.7976931348623157E+308. These are the\ntheoretical limits, based on the IEEE standard. The actual range might\nbe slightly smaller depending on your hardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits allowed by the hardware. A double-precision floating-point\nnumber is accurate to approximately 15 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (311,20,'TIME','TIME\n\nA time. The range is \'-838:59:59\' to \'838:59:59\'. MySQL displays TIME\nvalues in \'HH:MM:SS\' format, but allows assignment of values to TIME\ncolumns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (312,13,'&&','Syntax:\nAND, &&\n\nLogical AND. Evaluates to 1 if all operands are non-zero and not NULL,\nto 0 if one or more operands are 0, otherwise NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 && 1;\n -> 1\nmysql> SELECT 1 && 0;\n -> 0\nmysql> SELECT 1 && NULL;\n -> NULL\nmysql> SELECT 0 && NULL;\n -> 0\nmysql> SELECT NULL && 0;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (313,10,'X','X(p)\n\nReturns the X-coordinate value for the point p as a double-precision\nnumber.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…','mysql> SET @pt = \'Point(56.7 53.34)\';\nmysql> SELECT X(GeomFromText(@pt));\n+----------------------+\n| X(GeomFromText(@pt)) |\n+----------------------+\n| 56.7 |\n+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (314,15,'FOUND_ROWS','Syntax:\nFOUND_ROWS()\n\nA SELECT statement may include a LIMIT clause to restrict the number of\nrows the server returns to the client. In some cases, it is desirable\nto know how many rows the statement would have returned without the\nLIMIT, but without running the statement again. To obtain this row\ncount, include a SQL_CALC_FOUND_ROWS option in the SELECT statement,\nand then invoke FOUND_ROWS() afterward:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name\n -> WHERE id > 100 LIMIT 10;\nmysql> SELECT FOUND_ROWS();\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (315,15,'SYSTEM_USER','Syntax:\nSYSTEM_USER()\n\nSYSTEM_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (316,29,'CROSSES','Crosses(g1,g2)\n\nReturns 1 if g1 spatially crosses g2. Returns NULL if g1 is a Polygon\nor a MultiPolygon, or if g2 is a Point or a MultiPoint. Otherwise,\nreturns 0.\n\nThe term spatially crosses denotes a spatial relation between two given\ngeometries that has the following properties:\n\no The two geometries intersect\n\no Their intersection results in a geometry that has a dimension that is\n one less than the maximum dimension of the two given geometries\n\no Their intersection is not equal to either of the two given geometries\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (317,26,'TRUNCATE TABLE','Syntax:\nTRUNCATE [TABLE] tbl_name\n\nTRUNCATE TABLE empties a table completely. Logically, this is\nequivalent to a DELETE statement that deletes all rows, but there are\npractical differences under some circumstances.\n\nFor an InnoDB table, InnoDB processes TRUNCATE TABLE by deleting rows\none by one if there are any FOREIGN KEY constraints that reference the\ntable. If there are no FOREIGN KEY constraints, InnoDB performs fast\ntruncation by dropping the original table and creating an empty one\nwith the same definition, which is much faster than deleting rows one\nby one. The AUTO_INCREMENT counter is reset by TRUNCATE TABLE,\nregardless of whether there is a FOREIGN KEY constraint.\n\nIn the case that FOREIGN KEY constraints reference the table, InnoDB\ndeletes rows one by one and processes the constraints on each one. If\nthe FOREIGN KEY constraint specifies DELETE CASCADE, rows from the\nchild (referenced) table are deleted, and the truncated table becomes\nempty. If the FOREIGN KEY constraint does not specify CASCADE, the\nTRUNCATE statement deletes rows one by one and stops if it encounters a\nparent row that is referenced by the child, returning this error:\n\nERROR 1451 (23000): Cannot delete or update a parent row: a foreign\nkey constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1`\nFOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))\n\nThis is the same as a DELETE statement with no WHERE clause.\n\nBeginning with MySQL 5.1.32, TRUNCATE is treated for purposes of binary\nlogging and replication as DROP TABLE followed by CREATE TABLE --- that\nis, as DDL rather than DML. This is due to the fact that, when using\nInnoDB and other transactional storage engines where the transaction\nisolation level does not allow for statement-based logging (READ\nCOMMITTED or READ UNCOMMITTED), the statement was not logged and\nreplicated when using STATEMENT or MIXED logging mode. (Bug#36763\n(http://bugs.mysql.com/36763)) However, it is still applied on\nreplication slaves using InnoDB in the manner described previously.\n\nThe count of rows affected by TRUNCATE TABLE is accurate only when it\nis mapped to a DELETE statement.\n\nFor other storage engines, TRUNCATE TABLE differs from DELETE in the\nfollowing ways in MySQL 5.1:\n\no Truncate operations drop and re-create the table, which is much\n faster than deleting rows one by one, particularly for large tables.\n\no Truncate operations are not transaction-safe; an error occurs when\n attempting one in the course of an active transaction or active table\n lock.\n\no Truncation operations do not return the number of deleted rows.\n\no As long as the table format file tbl_name.frm is valid, the table can\n be re-created as an empty table with TRUNCATE TABLE, even if the data\n or index files have become corrupted.\n\no The table handler does not remember the last used AUTO_INCREMENT\n value, but starts counting from the beginning. This is true even for\n MyISAM and InnoDB, which normally do not reuse sequence values.\n\no When used with partitioned tables, TRUNCATE TABLE preserves the\n partitioning; that is, the data and index files are dropped and\n re-created, while the partition definitions (.par) file is\n unaffected.\n\no Since truncation of a table does not make any use of DELETE, the\n TRUNCATE statement does not invoke ON DELETE triggers.\n\nTRUNCATE TABLE requires the DROP privilege as of MySQL 5.1.16. (Before\n5.1.16, it requires the DELETE privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/truncate.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/truncate.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (318,16,'BIT_XOR','Syntax:\nBIT_XOR(expr)\n\nReturns the bitwise XOR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (319,30,'CURRENT_DATE','Syntax:\nCURRENT_DATE, CURRENT_DATE()\n\nCURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (320,26,'START SLAVE','Syntax:\nSTART SLAVE [thread_type [, thread_type] ... ]\nSTART SLAVE [SQL_THREAD] UNTIL\n MASTER_LOG_FILE = \'log_name\', MASTER_LOG_POS = log_pos\nSTART SLAVE [SQL_THREAD] UNTIL\n RELAY_LOG_FILE = \'log_name\', RELAY_LOG_POS = log_pos\n\nthread_type: IO_THREAD | SQL_THREAD\n\nSTART SLAVE with no thread_type options starts both of the slave\nthreads. The I/O thread reads queries from the master server and stores\nthem in the relay log. The SQL thread reads the relay log and executes\nthe queries. START SLAVE requires the SUPER privilege.\n\nIf START SLAVE succeeds in starting the slave threads, it returns\nwithout any error. However, even in that case, it might be that the\nslave threads start and then later stop (for example, because they do\nnot manage to connect to the master or read its binary logs, or some\nother problem). START SLAVE does not warn you about this. You must\ncheck the slave\'s error log for error messages generated by the slave\nthreads, or check that they are running satisfactorily with SHOW SLAVE\nSTATUS.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/start-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/start-slave.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (321,2,'AREA','Area(poly)\n\nReturns as a double-precision number the area of the Polygon value\npoly, as measured in its spatial reference system.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly = \'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))\';\nmysql> SELECT Area(GeomFromText(@poly));\n+---------------------------+\n| Area(GeomFromText(@poly)) |\n+---------------------------+\n| 4 |\n+---------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (322,22,'BEGIN END','Syntax:\n[begin_label:] BEGIN\n [statement_list]\nEND [end_label]\n\nBEGIN ... END syntax is used for writing compound statements, which can\nappear within stored programs. A compound statement can contain\nmultiple statements, enclosed by the BEGIN and END keywords.\nstatement_list represents a list of one or more statements, each\nterminated by a semicolon (;) statement delimiter. statement_list is\noptional, which means that the empty compound statement (BEGIN END) is\nlegal.\n\nUse of multiple statements requires that a client is able to send\nstatement strings containing the ; statement delimiter. This is handled\nin the mysql command-line client with the delimiter command. Changing\nthe ; end-of-statement delimiter (for example, to //) allows ; to be\nused in a program body. For an example, see\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html.\… compound statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/begin-end.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/begin-end.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (323,26,'FLUSH','Syntax:\nFLUSH [NO_WRITE_TO_BINLOG | LOCAL]\n flush_option [, flush_option] ...\n\nThe FLUSH statement clears or reloads various internal caches used by\nMySQL. To execute FLUSH, you must have the RELOAD privilege.\n\nThe RESET statement is similar to FLUSH. See [HELP RESET].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/flush.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/flush.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (324,26,'SHOW PROCEDURE STATUS','Syntax:\nSHOW PROCEDURE STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is a MySQL extension. It returns characteristics of a\nstored procedure, such as the database, name, type, creator, creation\nand modification dates, and character set information. A similar\nstatement, SHOW FUNCTION STATUS, displays information about stored\nfunctions (see [HELP SHOW FUNCTION STATUS]).\n\nThe LIKE clause, if present, indicates which procedure or function\nnames to match. The WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-procedure-status.html\n\n','mysql> SHOW PROCEDURE STATUS LIKE \'sp1\'\\G\n*************************** 1. row ***************************\n Db: test\n Name: sp1\n Type: PROCEDURE\n Definer: testuser@localhost\n Modified: 2004-08-03 15:29:37\n Created: 2004-08-03 15:29:37\n Security_type: DEFINER\n Comment:\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-procedure-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (325,26,'SHOW WARNINGS','Syntax:\nSHOW WARNINGS [LIMIT [offset,] row_count]\nSHOW COUNT(*) WARNINGS\n\nSHOW WARNINGS shows the error, warning, and note messages that resulted\nfrom the last statement that generated messages in the current session.\nIt shows nothing if the last statement used a table and generated no\nmessages. (That is, a statement that uses a table but generates no\nmessages clears the message list.) Statements that do not use tables\nand do not generate messages have no effect on the message list.\n\nA related statement, SHOW ERRORS, shows only the errors. See [HELP SHOW\nERRORS].\n\nThe SHOW COUNT(*) WARNINGS statement displays the total number of\nerrors, warnings, and notes. You can also retrieve this number from the\nwarning_count variable:\n\nSHOW COUNT(*) WARNINGS;\nSELECT @@warning_count;\n\nThe value of warning_count might be greater than the number of messages\ndisplayed by SHOW WARNINGS if the max_error_count system variable is\nset so low that not all messages are stored. An example shown later in\nthis section demonstrates how this can happen.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-warnings.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-warnings.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (326,27,'DESCRIBE','Syntax:\n{DESCRIBE | DESC} tbl_name [col_name | wild]\n\nDESCRIBE provides information about the columns in a table. It is a\nshortcut for SHOW COLUMNS FROM. These statements also display\ninformation for views. (See [HELP SHOW COLUMNS].)\n\ncol_name can be a column name, or a string containing the SQL "%" and\n"_" wildcard characters to obtain output only for the columns with\nnames matching the string. There is no need to enclose the string\nwithin quotes unless it contains spaces or other special characters.\n\nmysql> DESCRIBE City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n5 rows in set (0.00 sec)\n\nThe description for SHOW COLUMNS provides more information about the\noutput columns (see [HELP SHOW COLUMNS]).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/describe.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/describe.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (327,9,'DROP USER','Syntax:\nDROP USER user [, user] ...\n\nThe DROP USER statement removes one or more MySQL accounts. It removes\nprivilege rows for the account from all grant tables. To use this\nstatement, you must have the global CREATE USER privilege or the DELETE\nprivilege for the mysql database. Each account is named using the same\nformat as for the GRANT statement; for example, \'jeffrey\'@\'localhost\'.\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used. For additional information about specifying\naccount names, see [HELP GRANT].\n\nWith DROP USER, you can remove an account and its privileges as\nfollows:\n\nDROP USER user;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-user.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (328,16,'STDDEV_POP','Syntax:\nSTDDEV_POP(expr)\n\nReturns the population standard deviation of expr (the square root of\nVAR_POP()). You can also use STD() or STDDEV(), which are equivalent\nbut not standard SQL.\n\nSTDDEV_POP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (329,26,'SHOW CHARACTER SET','Syntax:\nSHOW CHARACTER SET\n [LIKE \'pattern\' | WHERE expr]\n\nThe SHOW CHARACTER SET statement shows all available character sets.\nThe LIKE clause, if present, indicates which character set names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. For example:\n\nmysql> SHOW CHARACTER SET LIKE \'latin%\';\n+---------+-----------------------------+-------------------+--------+\n| Charset | Description | Default collation | Maxlen |\n+---------+-----------------------------+-------------------+--------+\n| latin1 | cp1252 West European | latin1_swedish_ci | 1 |\n| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |\n| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |\n| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |\n+---------+-----------------------------+-------------------+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-character-set.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-character-set.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (330,35,'SUBSTRING','Syntax:\nSUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len),\nSUBSTRING(str FROM pos FOR len)\n\nThe forms without a len argument return a substring from string str\nstarting at position pos. The forms with a len argument return a\nsubstring len characters long from string str, starting at position\npos. The forms that use FROM are standard SQL syntax. It is also\npossible to use a negative value for pos. In this case, the beginning\nof the substring is pos characters from the end of the string, rather\nthan the beginning. A negative value may be used for pos in any of the\nforms of this function.\n\nFor all forms of SUBSTRING(), the position of the first character in\nthe string from which the substring is to be extracted is reckoned as\n1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SUBSTRING(\'Quadratically\',5);\n -> \'ratically\'\nmysql> SELECT SUBSTRING(\'foobarbar\' FROM 4);\n -> \'barbar\'\nmysql> SELECT SUBSTRING(\'Quadratically\',5,6);\n -> \'ratica\' \nmysql> SELECT SUBSTRING(\'Sakila\', -3);\n -> \'ila\' \nmysql> SELECT SUBSTRING(\'Sakila\', -5, 3);\n -> \'aki\'\nmysql> SELECT SUBSTRING(\'Sakila\' FROM -4 FOR 2);\n -> \'ki\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (331,34,'ISEMPTY','IsEmpty(g)\n\nReturns 1 if the geometry value g is the empty geometry, 0 if it is not\nempty, and -1 if the argument is NULL. If the geometry is empty, it\nrepresents the empty point set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (332,26,'SHOW FUNCTION STATUS','Syntax:\nSHOW FUNCTION STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is similar to SHOW PROCEDURE STATUS but for stored\nfunctions. See [HELP SHOW PROCEDURE STATUS].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-function-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-function-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (333,35,'LTRIM','Syntax:\nLTRIM(str)\n\nReturns the string str with leading space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LTRIM(\' barbar\');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (334,29,'INTERSECTS','Intersects(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially intersects g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (335,26,'CALL','Syntax:\nCALL sp_name([parameter[,...]])\nCALL sp_name[()]\n\nThe CALL statement invokes a stored procedure that was defined\npreviously with CREATE PROCEDURE.\n\nAs of MySQL 5.1.13, stored procedures that take no arguments can be\ninvoked without parentheses. That is, CALL p() and CALL p are\nequivalent.\n\nCALL can pass back values to its caller using parameters that are\ndeclared as OUT or INOUT parameters. When the procedure returns, a\nclient program can also obtain the number of rows affected for the\nfinal statement executed within the routine: At the SQL level, call the\nROW_COUNT() function; from the C API, call the mysql_affected_rows()\nfunction.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/call.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/call.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (336,6,'MBRDISJOINT','MBRDisjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 are disjoint (do not intersect).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (337,14,'VALUES','Syntax:\nVALUES(col_name)\n\nIn an INSERT ... ON DUPLICATE KEY UPDATE statement, you can use the\nVALUES(col_name) function in the UPDATE clause to refer to column\nvalues from the INSERT portion of the statement. In other words,\nVALUES(col_name) in the UPDATE clause refers to the value of col_name\nthat would be inserted, had no duplicate-key conflict occurred. This\nfunction is especially useful in multiple-row inserts. The VALUES()\nfunction is meaningful only in INSERT ... ON DUPLICATE KEY UPDATE\nstatements and returns NULL otherwise.\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html…: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)\n -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (338,35,'SUBSTRING_INDEX','Syntax:\nSUBSTRING_INDEX(str,delim,count)\n\nReturns the substring from string str before count occurrences of the\ndelimiter delim. If count is positive, everything to the left of the\nfinal delimiter (counting from the left) is returned. If count is\nnegative, everything to the right of the final delimiter (counting from\nthe right) is returned. SUBSTRING_INDEX() performs a case-sensitive\nmatch when searching for delim.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', 2);\n -> \'www.mysql\'\nmysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', -2);\n -> \'mysql.com\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (339,11,'ENCODE','Syntax:\nENCODE(str,pass_str)\n\nEncrypt str using pass_str as the password. To decrypt the result, use\nDECODE().\n\nThe result is a binary string of the same length as str.\n\nThe strength of the encryption is based on how good the random\ngenerator is. It should suffice for short strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (340,22,'LOOP','Syntax:\n[begin_label:] LOOP\n statement_list\nEND LOOP [end_label]\n\nLOOP implements a simple loop construct, enabling repeated execution of\nthe statement list, which consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter. The statements\nwithin the loop are repeated until the loop is exited; usually this is\naccomplished with a LEAVE statement.\n\nA LOOP statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/loop-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/loop-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (341,4,'TRUNCATE','Syntax:\nTRUNCATE(X,D)\n\nReturns the number X, truncated to D decimal places. If D is 0, the\nresult has no decimal point or fractional part. D can be negative to\ncause D digits left of the decimal point of the value X to become zero.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT TRUNCATE(1.223,1);\n -> 1.2\nmysql> SELECT TRUNCATE(1.999,1);\n -> 1.9\nmysql> SELECT TRUNCATE(1.999,0);\n -> 1\nmysql> SELECT TRUNCATE(-1.999,1);\n -> -1.9\nmysql> SELECT TRUNCATE(122,-2);\n -> 100\nmysql> SELECT TRUNCATE(10.28*100,0);\n -> 1028\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (342,30,'TIMESTAMPADD','Syntax:\nTIMESTAMPADD(unit,interval,datetime_expr)\n\nAdds the integer expression interval to the date or datetime expression\ndatetime_expr. The unit for interval is given by the unit argument,\nwhich should be one of the following values: FRAC_SECOND\n(microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or\nYEAR.\n\nBeginning with MySQL 5.1.24, it is possible to use MICROSECOND in place\nof FRAC_SECOND with this function, and FRAC_SECOND is deprecated.\n\nThe unit value may be specified using one of keywords as shown, or with\na prefix of SQL_TSI_. For example, DAY and SQL_TSI_DAY both are legal.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPADD(MINUTE,1,\'2003-01-02\');\n -> \'2003-01-02 00:01:00\'\nmysql> SELECT TIMESTAMPADD(WEEK,1,\'2003-01-02\');\n -> \'2003-01-09\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (343,26,'SHOW','SHOW has many forms that provide information about databases, tables,\ncolumns, or status information about the server. This section describes\nthose following:\n\nSHOW AUTHORS\nSHOW CHARACTER SET [like_or_where]\nSHOW COLLATION [like_or_where]\nSHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]\nSHOW CONTRIBUTORS\nSHOW CREATE DATABASE db_name\nSHOW CREATE EVENT event_name\nSHOW CREATE FUNCTION func_name\nSHOW CREATE PROCEDURE proc_name\nSHOW CREATE TABLE tbl_name\nSHOW CREATE TRIGGER trigger_name\nSHOW CREATE VIEW view_name\nSHOW DATABASES [like_or_where]\nSHOW ENGINE engine_name {STATUS | MUTEX}\nSHOW [STORAGE] ENGINES\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW [FULL] EVENTS\nSHOW FUNCTION CODE func_name\nSHOW FUNCTION STATUS [like_or_where]\nSHOW GRANTS FOR user\nSHOW INDEX FROM tbl_name [FROM db_name]\nSHOW INNODB STATUS\nSHOW OPEN TABLES [FROM db_name] [like_or_where]\nSHOW PLUGINS\nSHOW PROCEDURE CODE proc_name\nSHOW PROCEDURE STATUS [like_or_where]\nSHOW PRIVILEGES\nSHOW [FULL] PROCESSLIST\nSHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]\nSHOW PROFILES\nSHOW SCHEDULER STATUS\nSHOW [GLOBAL | SESSION] STATUS [like_or_where]\nSHOW TABLE STATUS [FROM db_name] [like_or_where]\nSHOW TABLES [FROM db_name] [like_or_where]\nSHOW TRIGGERS [FROM db_name] [like_or_where]\nSHOW [GLOBAL | SESSION] VARIABLES [like_or_where]\nSHOW WARNINGS [LIMIT [offset,] row_count]\n\nlike_or_where:\n LIKE \'pattern\'\n | WHERE expr\n\nIf the syntax for a given SHOW statement includes a LIKE \'pattern\'\npart, \'pattern\' is a string that can contain the SQL "%" and "_"\nwildcard characters. The pattern is useful for restricting statement\noutput to matching values.\n\nSeveral SHOW statements also accept a WHERE clause that provides more\nflexibility in specifying which rows to display. See\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (344,17,'GREATEST','Syntax:\nGREATEST(value1,value2,...)\n\nWith two or more arguments, returns the largest (maximum-valued)\nargument. The arguments are compared using the same rules as for\nLEAST().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT GREATEST(2,0);\n -> 2\nmysql> SELECT GREATEST(34.0,3.0,5.0,767.0);\n -> 767.0\nmysql> SELECT GREATEST(\'B\',\'A\',\'C\');\n -> \'C\'\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (345,26,'SHOW VARIABLES','Syntax:\nSHOW [GLOBAL | SESSION] VARIABLES\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW VARIABLES shows the values of MySQL system variables. This\ninformation also can be obtained using the mysqladmin variables\ncommand. The LIKE clause, if present, indicates which variable names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nWith the GLOBAL modifier, SHOW VARIABLES displays the values that are\nused for new connections to MySQL. With SESSION, it displays the values\nthat are in effect for the current connection. If no modifier is\npresent, the default is SESSION. LOCAL is a synonym for SESSION.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern. To obtain the row for a\nspecific variable, use a LIKE clause as shown:\n\nSHOW VARIABLES LIKE \'max_join_size\';\nSHOW SESSION VARIABLES LIKE \'max_join_size\';\n\nTo get a list of variables whose name match a pattern, use the "%"\nwildcard character in a LIKE clause:\n\nSHOW VARIABLES LIKE \'%size%\';\nSHOW GLOBAL VARIABLES LIKE \'%size%\';\n\nWildcard characters can be used in any position within the pattern to\nbe matched. Strictly speaking, because "_" is a wildcard that matches\nany single character, you should escape it as "\\_" to match it\nliterally. In practice, this is rarely necessary.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-variables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-variables.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (346,26,'BINLOG','Syntax:\nBINLOG \'str\'\n\nBINLOG is an internal-use statement. It is generated by the mysqlbinlog\nprogram as the printable representation of certain events in binary log\nfiles. (See http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html.)\nThe \'str\' value is a base 64-encoded string the that server decodes to\ndetermine the data change indicated by the corresponding event. This\nstatement requires the SUPER privilege. It was added in MySQL 5.1.5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/binlog.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/binlog.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (347,16,'BIT_AND','Syntax:\nBIT_AND(expr)\n\nReturns the bitwise AND of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (348,30,'SECOND','Syntax:\nSECOND(time)\n\nReturns the second for time, in the range 0 to 59.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SECOND(\'10:05:03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (349,4,'ATAN2','Syntax:\nATAN(Y,X), ATAN2(Y,X)\n\nReturns the arc tangent of the two variables X and Y. It is similar to\ncalculating the arc tangent of Y / X, except that the signs of both\narguments are used to determine the quadrant of the result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(-2,2);\n -> -0.78539816339745\nmysql> SELECT ATAN2(PI(),0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (350,6,'MBRCONTAINS','MBRContains(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1\ncontains the Minimum Bounding Rectangle of g2. This tests the opposite\nrelationship as MBRWithin().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Point(1 1)\');\nmysql> SELECT MBRContains(@g1,@g2), MBRContains(@g2,@g1);\n----------------------+----------------------+\n| MBRContains(@g1,@g2) | MBRContains(@g2,@g1) |\n+----------------------+----------------------+\n| 1 | 0 |\n+----------------------+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (351,30,'HOUR','Syntax:\nHOUR(time)\n\nReturns the hour for time. The range of the return value is 0 to 23 for\ntime-of-day values. However, the range of TIME values actually is much\nlarger, so HOUR can return values greater than 23.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT HOUR(\'10:05:03\');\n -> 10\nmysql> SELECT HOUR(\'272:59:59\');\n -> 272\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (352,26,'SELECT','Syntax:\nSELECT\n [ALL | DISTINCT | DISTINCTROW ]\n [HIGH_PRIORITY]\n [STRAIGHT_JOIN]\n [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]\n [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]\n select_expr [, select_expr ...]\n [FROM table_references\n [WHERE where_condition]\n [GROUP BY {col_name | expr | position}\n [ASC | DESC], ... [WITH ROLLUP]]\n [HAVING where_condition]\n [ORDER BY {col_name | expr | position}\n [ASC | DESC], ...]\n [LIMIT {[offset,] row_count | row_count OFFSET offset}]\n [PROCEDURE procedure_name(argument_list)]\n [INTO OUTFILE \'file_name\' export_options\n | INTO DUMPFILE \'file_name\'\n | INTO var_name [, var_name]]\n [FOR UPDATE | LOCK IN SHARE MODE]]\n\nSELECT is used to retrieve rows selected from one or more tables, and\ncan include UNION statements and subqueries. See [HELP UNION], and\nhttp://dev.mysql.com/doc/refman/5.1/en/subqueries.html.\n\nThe most commonly used clauses of SELECT statements are these:\n\no Each select_expr indicates a column that you want to retrieve. There\n must be at least one select_expr.\n\no table_references indicates the table or tables from which to retrieve\n rows. Its syntax is described in [HELP JOIN].\n\no The WHERE clause, if given, indicates the condition or conditions\n that rows must satisfy to be selected. where_condition is an\n expression that evaluates to true for each row to be selected. The\n statement selects all rows if there is no WHERE clause.\n\n In the WHERE clause, you can use any of the functions and operators\n that MySQL supports, except for aggregate (summary) functions. See\n http://dev.mysql.com/doc/refman/5.1/en/functions.html.\n\nSELECT can also be used to retrieve rows computed without reference to\nany table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/select.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (353,4,'COT','Syntax:\nCOT(X)\n\nReturns the cotangent of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT COT(12);\n -> -1.5726734063977\nmysql> SELECT COT(0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (354,26,'SHOW CREATE EVENT','Syntax:\nSHOW CREATE EVENT event_name\n\nThis statement displays the CREATE EVENT statement needed to re-create\na given event. For example (using the same event e_daily defined and\nthen altered in\nhttp://dev.mysql.com/doc/refman/5.1/en/show-events.html):\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-event.html\n\n','mysql> SHOW CREATE EVENT test.e_daily\\G\n*************************** 1. row ***************************\n Event: e_daily\n sql_mode: \n time_zone: SYSTEM\n Create Event: CREATE EVENT `e_daily`\n ON SCHEDULE EVERY 1 DAY\n STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR\n ON COMPLETION NOT PRESERVE\n ENABLE\n COMMENT \'Saves total number of sessions then\n clears the table each day\'\n DO BEGIN\n INSERT INTO site_activity.totals (time, total)\n SELECT CURRENT_TIMESTAMP, COUNT(*) \n FROM site_activity.sessions;\n DELETE FROM site_activity.sessions;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-event.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (355,19,'BACKUP TABLE','Syntax:\nBACKUP TABLE tbl_name [, tbl_name] ... TO \'/path/to/backup/directory\'\n\n*Note*: This statement is deprecated. We are working on a better\nreplacement for it that will provide online backup capabilities. In the\nmeantime, the mysqlhotcopy script can be used instead.\n\nBACKUP TABLE copies to the backup directory the minimum number of table\nfiles needed to restore the table, after flushing any buffered changes\nto disk. The statement works only for MyISAM tables. It copies the .frm\ndefinition and .MYD data files. The .MYI index file can be rebuilt from\nthose two files. The directory should be specified as a full path name.\nTo restore the table, use RESTORE TABLE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/backup-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/backup-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (356,35,'LOAD_FILE','Syntax:\nLOAD_FILE(file_name)\n\nReads the file and returns the file contents as a string. To use this\nfunction, the file must be located on the server host, you must specify\nthe full path name to the file, and you must have the FILE privilege.\nThe file must be readable by all and its size less than\nmax_allowed_packet bytes. If the secure_file_priv system variable is\nset to a non-empty directory name, the file to be loaded must be\nlocated in that directory.\n\nIf the file does not exist or cannot be read because one of the\npreceding conditions is not satisfied, the function returns NULL.\n\nAs of MySQL 5.1.6, the character_set_filesystem system variable\ncontrols interpretation of file names that are given as literal\nstrings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> UPDATE t\n SET blob_col=LOAD_FILE(\'/tmp/picture\')\n WHERE id=1;\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (357,26,'LOAD TABLE FROM MASTER','Syntax:\nLOAD TABLE tbl_name FROM MASTER\n\nThis feature is deprecated. We recommend not using it anymore. It is\nsubject to removal in a future version of MySQL.\n\nSince the current implementation of LOAD DATA FROM MASTER and LOAD\nTABLE FROM MASTER is very limited, these statements are deprecated in\nversions 4.1 of MySQL and above. We will introduce a more advanced\ntechnique (called "online backup") in a future version. That technique\nwill have the additional advantage of working with more storage\nengines.\n\nFor MySQL 5.1 and earlier, the recommended alternative solution to\nusing LOAD DATA FROM MASTER or LOAD TABLE FROM MASTER is using\nmysqldump or mysqlhotcopy. The latter requires Perl and two Perl\nmodules (DBI and DBD:mysql) and works for MyISAM and ARCHIVE tables\nonly. With mysqldump, you can create SQL dumps on the master and pipe\n(or copy) these to a mysql client on the slave. This has the advantage\nof working for all storage engines, but can be quite slow, since it\nworks using SELECT.\n\nTransfers a copy of the table from the master to the slave. This\nstatement is implemented mainly debugging LOAD DATA FROM MASTER\noperations. To use LOAD TABLE, the account used for connecting to the\nmaster server must have the RELOAD and SUPER privileges on the master\nand the SELECT privilege for the master table to load. On the slave\nside, the user that issues LOAD TABLE FROM MASTER must have privileges\nfor dropping and creating the table.\n\nThe conditions for LOAD DATA FROM MASTER apply here as well. For\nexample, LOAD TABLE FROM MASTER works only for MyISAM tables. The\ntimeout notes for LOAD DATA FROM MASTER apply as well.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-table-from-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-table-from-master.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (358,3,'POINTFROMTEXT','PointFromText(wkt[,srid])\n\nConstructs a POINT value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (359,16,'GROUP_CONCAT','Syntax:\nGROUP_CONCAT(expr)\n\nThis function returns a string result with the concatenated non-NULL\nvalues from a group. It returns NULL if there are no non-NULL values.\nThe full syntax is as follows:\n\nGROUP_CONCAT([DISTINCT] expr [,expr ...]\n [ORDER BY {unsigned_integer | col_name | expr}\n [ASC | DESC] [,col_name ...]]\n [SEPARATOR str_val])\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name,\n -> GROUP_CONCAT(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (360,30,'DATE_FORMAT','Syntax:\nDATE_FORMAT(date,format)\n\nFormats the date value according to the format string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2009-10-04 22:23:00\', \'%W %M %Y\');\n -> \'Sunday October 2009\'\nmysql> SELECT DATE_FORMAT(\'2007-10-04 22:23:00\', \'%H:%i:%s\');\n -> \'22:23:00\'\nmysql> SELECT DATE_FORMAT(\'1900-10-04 22:23:00\',\n -> \'%D %y %a %d %m %b %j\');\n -> \'4th 00 Thu 04 10 Oct 277\'\nmysql> SELECT DATE_FORMAT(\'1997-10-04 22:23:00\',\n -> \'%H %k %I %r %T %S %w\');\n -> \'22 22 10 10:23:00 PM 22:23:00 00 6\'\nmysql> SELECT DATE_FORMAT(\'1999-01-01\', \'%X %V\');\n -> \'1998 52\'\nmysql> SELECT DATE_FORMAT(\'2006-06-00\', \'%d\');\n -> \'00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (361,15,'BENCHMARK','Syntax:\nBENCHMARK(count,expr)\n\nThe BENCHMARK() function executes the expression expr repeatedly count\ntimes. It may be used to time how quickly MySQL processes the\nexpression. The result value is always 0. The intended use is from\nwithin the mysql client, which reports query execution times:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\'));\n+----------------------------------------------+\n| BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\')) |\n+----------------------------------------------+\n| 0 |\n+----------------------------------------------+\n1 row in set (4.74 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (362,30,'YEAR','Syntax:\nYEAR(date)\n\nReturns the year for date, in the range 1000 to 9999, or 0 for the\n"zero" date.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT YEAR(\'1987-01-01\');\n -> 1987\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (363,26,'SHOW ENGINE','Syntax:\nSHOW ENGINE engine_name {STATUS | MUTEX}\n\nSHOW ENGINE displays operational information about a storage engine.\nThe following statements currently are supported:\n\nSHOW ENGINE INNODB STATUS\nSHOW ENGINE INNODB MUTEX\nSHOW ENGINE {NDB | NDBCLUSTER} STATUS\n\nOlder (and now deprecated) synonyms are SHOW INNODB STATUS for SHOW\nENGINE INNODB STATUS and SHOW MUTEX STATUS for SHOW ENGINE INNODB\nMUTEX.\n\nIn MySQL 5.0, SHOW ENGINE INNODB MUTEX is invoked as SHOW MUTEX STATUS.\nThe latter statement displays similar information but in a somewhat\ndifferent output format.\n\nSHOW ENGINE BDB LOGS formerly displayed status information about BDB\nlog files. As of MySQL 5.1.12, the BDB storage engine is not supported,\nand this statement produces a warning.\n\nSHOW ENGINE INNODB STATUS displays extensive information from the\nstandard InnoDB Monitor about the state of the InnoDB storage engine.\nFor information about the standard monitor and other InnoDB Monitors\nthat provide information about InnoDB processing, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-monitors.html.\n\nSHOW ENGINE INNODB MUTEX displays InnoDB mutex statistics. From MySQL\n5.1.2 to 5.1.14, the statement displays the following output fields:\n\no Type\n\n Always InnoDB.\n\no Name\n\n The mutex name and the source file where it is implemented. Example:\n &pool->mutex:mem0pool.c\n\n The mutex name indicates its purpose. For example, the log_sys mutex\n is used by the InnoDB logging subsystem and indicates how intensive\n logging activity is. The buf_pool mutex protects the InnoDB buffer\n pool.\n\no Status\n\n The mutex status. The fields contains several values:\n\n o count indicates how many times the mutex was requested.\n\n o spin_waits indicates how many times the spinlock had to run.\n\n o spin_rounds indicates the number of spinlock rounds. (spin_rounds\n divided by spin_waits provides the average round count.)\n\n o os_waits indicates the number of operating system waits. This\n occurs when the spinlock did not work (the mutex was not locked\n during the spinlock and it was necessary to yield to the operating\n system and wait).\n\n o os_yields indicates the number of times a the thread trying to lock\n a mutex gave up its timeslice and yielded to the operating system\n (on the presumption that allowing other threads to run will free\n the mutex so that it can be locked).\n\n o os_wait_times indicates the amount of time (in ms) spent in\n operating system waits, if the timed_mutexes system variable is 1\n (ON). If timed_mutexes is 0 (OFF), timing is disabled, so\n os_wait_times is 0. timed_mutexes is off by default.\n\nFrom MySQL 5.1.15 on, the statement displays the following output\nfields:\n\no Type\n\n Always InnoDB.\n\no Name\n\n The source file where the mutex is implemented, and the line number\n in the file where the mutex is created. The line number may change\n depending on your version of MySQL.\n\no Status\n\n This field displays the same values as previously described (count,\n spin_waits, spin_rounds, os_waits, os_yields, os_wait_times), but\n only if UNIV_DEBUG was defined at MySQL compilation time (for\n example, in include/univ.h in the InnoDB part of the MySQL source\n tree). If UNIV_DEBUG was not defined, the statement displays only the\n os_waits value. In the latter case (without UNIV_DEBUG), the\n information on which the output is based is insufficient to\n distinguish regular mutexes and mutexes that protect rw-locks (which\n allow multiple readers or a single writer). Consequently, the output\n may appear to contain multiple rows for the same mutex.\n\nInformation from this statement can be used to diagnose system\nproblems. For example, large values of spin_waits and spin_rounds may\nindicate scalability problems.\n\nIf the server has the NDBCLUSTER storage engine enabled, SHOW ENGINE\nNDB STATUS displays cluster status information such as the number of\nconnected data nodes, the cluster connectstring, and cluster binlog\nepochs, as well as counts of various Cluster API objects created by the\nMySQL Server when connected to the cluster. Sample output from this\nstatement is shown here:\n\nmysql> SHOW ENGINE NDB STATUS;\n+------------+-----------------------+--------------------------------------------------+\n| Type | Name | Status |\n+------------+-----------------------+--------------------------------------------------+\n| ndbcluster | connection | cluster_node_id=7, \n connected_host=192.168.0.103, connected_port=1186, number_of_data_nodes=4, \n number_of_ready_data_nodes=3, connect_count=0 |\n| ndbcluster | NdbTransaction | created=6, free=0, sizeof=212 |\n| ndbcluster | NdbOperation | created=8, free=8, sizeof=660 |\n| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744 |\n| ndbcluster | NdbIndexOperation | created=0, free=0, sizeof=664 |\n| ndbcluster | NdbRecAttr | created=1285, free=1285, sizeof=60 |\n| ndbcluster | NdbApiSignal | created=16, free=16, sizeof=136 |\n| ndbcluster | NdbLabel | created=0, free=0, sizeof=196 |\n| ndbcluster | NdbBranch | created=0, free=0, sizeof=24 |\n| ndbcluster | NdbSubroutine | created=0, free=0, sizeof=68 |\n| ndbcluster | NdbCall | created=0, free=0, sizeof=16 |\n| ndbcluster | NdbBlob | created=1, free=1, sizeof=264 |\n| ndbcluster | NdbReceiver | created=4, free=0, sizeof=68 |\n| ndbcluster | binlog | latest_epoch=155467, latest_trans_epoch=148126, \n latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0, \n latest_applied_binlog_epoch=0 |\n+------------+-----------------------+--------------------------------------------------+\n\nThe rows with connection and binlog in the Name column were added to\nthe output of this statement in MySQL 5.1. The Status column in each of\nthese rows provides information about the MySQL server\'s connection to\nthe cluster and about the cluster binary log\'s status, respectively.\nThe Status information is in the form of comma-delimited set of\nname/value pairs.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-engine.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-engine.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (364,14,'NAME_CONST','Syntax:\nNAME_CONST(name,value)\n\nReturns the given value. When used to produce a result set column,\nNAME_CONST() causes the column to have the given name. The arguments\nshould be constants.\n\nmysql> SELECT NAME_CONST(\'myname\', 14);\n+--------+\n| myname |\n+--------+\n| 14 |\n+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (365,14,'RELEASE_LOCK','Syntax:\nRELEASE_LOCK(str)\n\nReleases the lock named by the string str that was obtained with\nGET_LOCK(). Returns 1 if the lock was released, 0 if the lock was not\nestablished by this thread (in which case the lock is not released),\nand NULL if the named lock did not exist. The lock does not exist if it\nwas never obtained by a call to GET_LOCK() or if it has previously been\nreleased.\n\nThe DO statement is convenient to use with RELEASE_LOCK(). See [HELP\nDO].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (366,17,'IS NULL','Syntax:\nIS NULL\n\nTests whether a value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;\n -> 0, 0, 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (367,30,'CONVERT_TZ','Syntax:\nCONVERT_TZ(dt,from_tz,to_tz)\n\nCONVERT_TZ() converts a datetime value dt from the time zone given by\nfrom_tz to the time zone given by to_tz and returns the resulting\nvalue. Time zones are specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html. This\nfunction returns NULL if the arguments are invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'GMT\',\'MET\');\n -> \'2004-01-01 13:00:00\'\nmysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'+00:00\',\'+10:00\');\n -> \'2004-01-01 22:00:00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (368,30,'TIME_TO_SEC','Syntax:\nTIME_TO_SEC(time)\n\nReturns the time argument, converted to seconds.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_TO_SEC(\'22:23:00\');\n -> 80580\nmysql> SELECT TIME_TO_SEC(\'00:39:38\');\n -> 2378\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (369,30,'WEEKDAY','Syntax:\nWEEKDAY(date)\n\nReturns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 =\nSunday).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKDAY(\'2008-02-03 22:23:00\');\n -> 6\nmysql> SELECT WEEKDAY(\'2007-11-06\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (370,35,'EXPORT_SET','Syntax:\nEXPORT_SET(bits,on,off[,separator[,number_of_bits]])\n\nReturns a string such that for every bit set in the value bits, you get\nan on string and for every bit not set in the value, you get an off\nstring. Bits in bits are examined from right to left (from low-order to\nhigh-order bits). Strings are added to the result from left to right,\nseparated by the separator string (the default being the comma\ncharacter ","). The number of bits examined is given by number_of_bits\n(defaults to 64).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT EXPORT_SET(5,\'Y\',\'N\',\',\',4);\n -> \'Y,N,Y,N\'\nmysql> SELECT EXPORT_SET(6,\'1\',\'0\',\',\',10);\n -> \'0,1,1,0,0,0,0,0,0,0\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (371,37,'ALTER SERVER','Syntax:\nALTER SERVER server_name\n OPTIONS (option [, option] ...)\n\nAlters the server information for server_name, adjusting the specified\noptions as per the CREATE SERVER command. See [HELP CREATE SERVER]. The\ncorresponding fields in the mysql.servers table are updated\naccordingly. This statement requires the SUPER privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-server.html\n\n','ALTER SERVER s OPTIONS (USER \'sally\');\n','http://dev.mysql.com/doc/refman/5.1/en/alter-server.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (372,30,'TIME FUNCTION','Syntax:\nTIME(expr)\n\nExtracts the time part of the time or datetime expression expr and\nreturns it as a string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME(\'2003-12-31 01:02:03\');\n -> \'01:02:03\'\nmysql> SELECT TIME(\'2003-12-31 01:02:03.000123\');\n -> \'01:02:03.000123\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (373,30,'DATE_ADD','Syntax:\nDATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)\n\nThese functions perform date arithmetic. The date argument specifies\nthe starting date or datetime value. expr is an expression specifying\nthe interval value to be added or subtracted from the starting date.\nexpr is a string; it may start with a "-" for negative intervals. unit\nis a keyword indicating the units in which the expression should be\ninterpreted.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT \'2008-12-31 23:59:59\' + INTERVAL 1 SECOND;\n -> \'2009-01-01 00:00:00\'\nmysql> SELECT INTERVAL 1 DAY + \'2008-12-31\';\n -> \'2009-01-01\'\nmysql> SELECT \'2005-01-01\' - INTERVAL 1 SECOND;\n -> \'2004-12-31 23:59:59\'\nmysql> SELECT DATE_ADD(\'2000-12-31 23:59:59\',\n -> INTERVAL 1 SECOND);\n -> \'2001-01-01 00:00:00\'\nmysql> SELECT DATE_ADD(\'2010-12-31 23:59:59\',\n -> INTERVAL 1 DAY);\n -> \'2011-01-01 23:59:59\'\nmysql> SELECT DATE_ADD(\'2100-12-31 23:59:59\',\n -> INTERVAL \'1:1\' MINUTE_SECOND);\n -> \'2101-01-01 00:01:00\'\nmysql> SELECT DATE_SUB(\'2005-01-01 00:00:00\',\n -> INTERVAL \'1 1:1:1\' DAY_SECOND);\n -> \'2004-12-30 22:58:59\'\nmysql> SELECT DATE_ADD(\'1900-01-01 00:00:00\',\n -> INTERVAL \'-1 10\' DAY_HOUR);\n -> \'1899-12-30 14:00:00\'\nmysql> SELECT DATE_SUB(\'1998-01-02\', INTERVAL 31 DAY);\n -> \'1997-12-02\'\nmysql> SELECT DATE_ADD(\'1992-12-31 23:59:59.000002\',\n -> INTERVAL \'1.999999\' SECOND_MICROSECOND);\n -> \'1993-01-01 00:00:01.000001\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (374,35,'CAST','Syntax:\nCAST(expr AS type)\n\nThe CAST() function takes a value of one type and produce a value of\nanother type, similar to CONVERT(). See the description of CONVERT()\nfor more information.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (375,35,'SOUNDS LIKE','Syntax:\nexpr1 SOUNDS LIKE expr2\n\nThis is the same as SOUNDEX(expr1) = SOUNDEX(expr2).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (376,30,'PERIOD_DIFF','Syntax:\nPERIOD_DIFF(P1,P2)\n\nReturns the number of months between periods P1 and P2. P1 and P2\nshould be in the format YYMM or YYYYMM. Note that the period arguments\nP1 and P2 are not date values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_DIFF(200802,200703);\n -> 11\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (377,35,'LIKE','Syntax:\nexpr LIKE pat [ESCAPE \'escape_char\']\n\nPattern matching using SQL simple regular expression comparison.\nReturns 1 (TRUE) or 0 (FALSE). If either expr or pat is NULL, the\nresult is NULL.\n\nThe pattern need not be a literal string. For example, it can be\nspecified as a string expression or table column.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','mysql> SELECT \'David!\' LIKE \'David_\';\n -> 1\nmysql> SELECT \'David!\' LIKE \'%D%v%\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (378,23,'MULTIPOINT','MultiPoint(pt1,pt2,...)\n\nConstructs a WKB MultiPoint value using WKB Point arguments. If any\nargument is not a WKB Point, the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (379,18,'>>','Syntax:\n>>\n\nShifts a longlong (BIGINT) number to the right.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 4 >> 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (380,22,'FETCH','Syntax:\nFETCH cursor_name INTO var_name [, var_name] ...\n\nThis statement fetches the next row (if a row exists) using the\nspecified open cursor, and advances the cursor pointer.\n\nIf no more rows are available, a No Data condition occurs with SQLSTATE\nvalue 02000. To detect this condition, you can set up a handler for it\n(or for a NOT FOUND condition). An example is shown in\nhttp://dev.mysql.com/doc/refman/5.1/en/cursors.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/fetch.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/fetch.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (381,16,'AVG','Syntax:\nAVG([DISTINCT] expr)\n\nReturns the average value of expr. The DISTINCT option can be used to\nreturn the average of the distinct values of expr.\n\nAVG() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name, AVG(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (382,28,'TRUE FALSE','The constants TRUE and FALSE evaluate to 1 and 0, respectively. The\nconstant names can be written in any lettercase.\n\nmysql> SELECT TRUE, true, FALSE, false;\n -> 1, 1, 0, 0\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/boolean-values.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/boolean-values.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (383,6,'MBRWITHIN','MBRWithin(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1\nis within the Minimum Bounding Rectangle of g2. This tests the opposite\nrelationship as MBRContains().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Polygon((0 0,0 5,5 5,5 0,0 0))\');\nmysql> SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1);\n+--------------------+--------------------+\n| MBRWithin(@g1,@g2) | MBRWithin(@g2,@g1) |\n+--------------------+--------------------+\n| 1 | 0 |\n+--------------------+--------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (384,17,'IN','Syntax:\nexpr IN (value,...)\n\nReturns 1 if expr is equal to any of the values in the IN list, else\nreturns 0. If all values are constants, they are evaluated according to\nthe type of expr and sorted. The search for the item then is done using\na binary search. This means IN is very quick if the IN value list\nconsists entirely of constants. Otherwise, type conversion takes place\naccording to the rules described in\nhttp://dev.mysql.com/doc/refman/5.1/en/type-conversion.html, but\napplied to all the arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 IN (0,3,5,7);\n -> 0\nmysql> SELECT \'wefwf\' IN (\'wee\',\'wefwf\',\'weg\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (385,35,'QUOTE','Syntax:\nQUOTE(str)\n\nQuotes a string to produce a result that can be used as a properly\nescaped data value in an SQL statement. The string is returned enclosed\nby single quotes and with each instance of single quote ("\'"),\nbackslash ("\\"), ASCII NUL, and Control-Z preceded by a backslash. If\nthe argument is NULL, the return value is the word "NULL" without\nenclosing single quotes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT QUOTE(\'Don\\\'t!\');\n -> \'Don\\\'t!\'\nmysql> SELECT QUOTE(NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (386,15,'SESSION_USER','Syntax:\nSESSION_USER()\n\nSESSION_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (387,25,'HELP COMMAND','Syntax:\nmysql> help search_string\n\nIf you provide an argument to the help command, mysql uses it as a\nsearch string to access server-side help from the contents of the MySQL\nReference Manual. The proper operation of this command requires that\nthe help tables in the mysql database be initialized with help topic\ninformation (see\nhttp://dev.mysql.com/doc/refman/5.1/en/server-side-help-support.html).… there is no match for the search string, the search fails:\n\nmysql> help me\n\nNothing found\nPlease try to run \'help contents\' for a list of all accessible topics\n\nUse help contents to see a list of the help categories:\n\nmysql> help contents\nYou asked for help about help category: "Contents"\nFor more information, type \'help <item>\', where <item> is one of the\nfollowing categories:\n Account Management\n Administration\n Data Definition\n Data Manipulation\n Data Types\n Functions\n Functions and Modifiers for Use with GROUP BY\n Geographic Features\n Language Structure\n Plugins\n Storage Engines\n Stored Routines\n Table Maintenance\n Transactions\n Triggers\n\nIf the search string matches multiple items, mysql shows a list of\nmatching topics:\n\nmysql> help logs\nMany help items for your request exist.\nTo make a more specific request, please type \'help <item>\',\nwhere <item> is one of the following topics:\n SHOW\n SHOW BINARY LOGS\n SHOW ENGINE\n SHOW LOGS\n\nUse a topic as the search string to see the help entry for that topic:\n\nmysql> help show binary logs\nName: \'SHOW BINARY LOGS\'\nDescription:\nSyntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [purge-binary-logs], that shows how\nto determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mysql-server-side-help.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mysql-server-side-help.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (388,30,'QUARTER','Syntax:\nQUARTER(date)\n\nReturns the quarter of the year for date, in the range 1 to 4.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT QUARTER(\'2008-04-01\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (389,35,'POSITION','Syntax:\nPOSITION(substr IN str)\n\nPOSITION(substr IN str) is a synonym for LOCATE(substr,str).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (390,26,'SHOW CREATE FUNCTION','Syntax:\nSHOW CREATE FUNCTION func_name\n\nThis statement is similar to SHOW CREATE PROCEDURE but for stored\nfunctions. See [HELP SHOW CREATE PROCEDURE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-function.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (391,14,'IS_USED_LOCK','Syntax:\nIS_USED_LOCK(str)\n\nChecks whether the lock named str is in use (that is, locked). If so,\nit returns the connection identifier of the client that holds the lock.\nOtherwise, it returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (392,3,'POLYFROMTEXT','PolyFromText(wkt[,srid]), PolygonFromText(wkt[,srid])\n\nConstructs a POLYGON value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (393,11,'DES_ENCRYPT','Syntax:\nDES_ENCRYPT(str[,{key_num|key_str}])\n\nEncrypts the string with the given key using the Triple-DES algorithm.\n\nThis function works only if MySQL has been configured with SSL support.\nSee http://dev.mysql.com/doc/refman/5.1/en/secure-connections.html.\n\nThe encryption key to use is chosen based on the second argument to\nDES_ENCRYPT(), if one was given. With no argument, the first key from\nthe DES key file is used. With a key_num argument, the given key number\n(0-9) from the DES key file is used. With a key_str argument, the given\nkey string is used to encrypt str.\n\nThe key file can be specified with the --des-key-file server option.\n\nThe return string is a binary string where the first character is\nCHAR(128 | key_num). If an error occurs, DES_ENCRYPT() returns NULL.\n\nThe 128 is added to make it easier to recognize an encrypted key. If\nyou use a string key, key_num is 127.\n\nThe string length for the result is given by this formula:\n\nnew_len = orig_len + (8 - (orig_len % 8)) + 1\n\nEach line in the DES key file has the following format:\n\nkey_num des_key_str\n\nEach key_num value must be a number in the range from 0 to 9. Lines in\nthe file may be in any order. des_key_str is the string that is used to\nencrypt the message. There should be at least one space between the\nnumber and the key. The first key is the default key that is used if\nyou do not specify any key argument to DES_ENCRYPT().\n\nYou can tell MySQL to read new key values from the key file with the\nFLUSH DES_KEY_FILE statement. This requires the RELOAD privilege.\n\nOne benefit of having a set of default keys is that it gives\napplications a way to check for the existence of encrypted column\nvalues, without giving the end user the right to decrypt those values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT customer_address FROM customer_table \n > WHERE crypted_credit_card = DES_ENCRYPT(\'credit_card_number\');\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (394,4,'CEIL','Syntax:\nCEIL(X)\n\nCEIL() is a synonym for CEILING().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (395,35,'LENGTH','Syntax:\nLENGTH(str)\n\nReturns the length of the string str, measured in bytes. A multi-byte\ncharacter counts as multiple bytes. This means that for a string\ncontaining five two-byte characters, LENGTH() returns 10, whereas\nCHAR_LENGTH() returns 5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LENGTH(\'text\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (396,30,'STR_TO_DATE','Syntax:\nSTR_TO_DATE(str,format)\n\nThis is the inverse of the DATE_FORMAT() function. It takes a string\nstr and a format string format. STR_TO_DATE() returns a DATETIME value\nif the format string contains both date and time parts, or a DATE or\nTIME value if the string contains only date or time parts.\n\nThe date, time, or datetime values contained in str should be given in\nthe format indicated by format. For the specifiers that can be used in\nformat, see the DATE_FORMAT() function description. If str contains an\nillegal date, time, or datetime value, STR_TO_DATE() returns NULL. An\nillegal value also produces a warning.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (397,10,'Y','Y(p)\n\nReturns the Y-coordinate value for the point p as a double-precision\nnumber.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…','mysql> SET @pt = \'Point(56.7 53.34)\';\nmysql> SELECT Y(GeomFromText(@pt));\n+----------------------+\n| Y(GeomFromText(@pt)) |\n+----------------------+\n| 53.34 |\n+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (398,26,'SHOW INNODB STATUS','Syntax:\nSHOW INNODB STATUS\n\nIn MySQL 5.1, this is a deprecated synonym for SHOW ENGINE INNODB\nSTATUS. See [HELP SHOW ENGINE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-innodb-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-innodb-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (399,19,'CHECKSUM TABLE','Syntax:\nCHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]\n\nCHECKSUM TABLE reports a table checksum.\n\nWith QUICK, the live table checksum is reported if it is available, or\nNULL otherwise. This is very fast. A live checksum is enabled by\nspecifying the CHECKSUM=1 table option when you create the table;\ncurrently, this is supported only for MyISAM tables. See [HELP CREATE\nTABLE].\n\nWith EXTENDED, the entire table is read row by row and the checksum is\ncalculated. This can be very slow for large tables.\n\nIf neither QUICK nor EXTENDED is specified, MySQL returns a live\nchecksum if the table storage engine supports it and scans the table\notherwise.\n\nFor a non-existent table, CHECKSUM TABLE returns NULL and generates a\nwarning.\n\nThe checksum value depends on the table row format. If the row format\nchanges, the checksum also changes. For example, the storage format for\nVARCHAR changed between MySQL 4.1 and 5.0, so if a 4.1 table is\nupgraded to MySQL 5.0, the checksum value may change.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/checksum-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/checksum-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (400,2,'NUMINTERIORRINGS','NumInteriorRings(poly)\n\nReturns the number of interior rings in the Polygon value poly.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT NumInteriorRings(GeomFromText(@poly));\n+---------------------------------------+\n| NumInteriorRings(GeomFromText(@poly)) |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (401,2,'INTERIORRINGN','InteriorRingN(poly,N)\n\nReturns the N-th interior ring for the Polygon value poly as a\nLineString. Rings are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT AsText(InteriorRingN(GeomFromText(@poly),1));\n+----------------------------------------------+\n| AsText(InteriorRingN(GeomFromText(@poly),1)) |\n+----------------------------------------------+\n| LINESTRING(1 1,1 2,2 2,2 1,1 1) |\n+----------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (402,30,'UTC_TIME','Syntax:\nUTC_TIME, UTC_TIME()\n\nReturns the current UTC time as a value in \'HH:MM:SS\' or HHMMSS.uuuuuu\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIME(), UTC_TIME() + 0;\n -> \'18:07:53\', 180753.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (403,37,'DROP FUNCTION','The DROP FUNCTION statement is used to drop stored functions and\nuser-defined functions (UDFs):\n\no For information about dropping stored functions, see [HELP DROP\n PROCEDURE].\n\no For information about dropping user-defined functions, see [HELP DROP\n FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-function.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (404,37,'ALTER EVENT','Syntax:\nALTER\n [DEFINER = { user | CURRENT_USER }]\n EVENT event_name\n [ON SCHEDULE schedule]\n [ON COMPLETION [NOT] PRESERVE]\n [RENAME TO new_event_name]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n [DO sql_statement]\n\nThe ALTER EVENT statement is used to change one or more of the\ncharacteristics of an existing event without the need to drop and\nrecreate it. The syntax for each of the DEFINER, ON SCHEDULE, ON\nCOMPLETION, COMMENT, ENABLE / DISABLE, and DO clauses is exactly the\nsame as when used with CREATE EVENT. (See [HELP CREATE EVENT].)\n\nSupport for the DEFINER clause was added in MySQL 5.1.17.\n\nBeginning with MySQL 5.1.12, this statement requires the EVENT\nprivilege. When a user executes a successful ALTER EVENT statement,\nthat user becomes the definer for the affected event.\n\n(In MySQL 5.1.11 and earlier, an event could be altered only by its\ndefiner, or by a user having the SUPER privilege.)\n\nALTER EVENT works only with an existing event:\n\nmysql> ALTER EVENT no_such_event \n > ON SCHEDULE \n > EVERY \'2:3\' DAY_HOUR;\nERROR 1517 (HY000): Unknown event \'no_such_event\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-event.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (405,16,'STDDEV','Syntax:\nSTDDEV(expr)\n\nReturns the population standard deviation of expr. This function is\nprovided for compatibility with Oracle. The standard SQL function\nSTDDEV_POP() can be used instead.\n\nThis function returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (406,30,'DATE_SUB','Syntax:\nDATE_SUB(date,INTERVAL expr unit)\n\nSee the description for DATE_ADD().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (407,30,'PERIOD_ADD','Syntax:\nPERIOD_ADD(P,N)\n\nAdds N months to period P (in the format YYMM or YYYYMM). Returns a\nvalue in the format YYYYMM. Note that the period argument P is not a\ndate value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_ADD(200801,2);\n -> 200803\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (408,18,'|','Syntax:\n|\n\nBitwise OR:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 29 | 15;\n -> 31\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (409,3,'GEOMFROMTEXT','GeomFromText(wkt[,srid]), GeometryFromText(wkt[,srid])\n\nConstructs a geometry value of any type using its WKT representation\nand SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (410,14,'UUID_SHORT','Syntax:\nUUID_SHORT()\n\nReturns a "short" universal identifier as a 64-bit unsigned integer\n(rather than a string-form 128-bit identifier as returned by the UUID()\nfunction).\n\nThe value of UUID_SHORT() is guaranteed to be unique if the following\nconditions hold:\n\no The server_id of the current host is unique among your set of master\n and slave servers\n\no server_id is between 0 and 255\n\no You don\'t set back your system time for your server between mysqld\n restarts\n\no You do not invoke UUID_SHORT() on average more than 16 million times\n per second between mysqld restarts\n\nThe UUID_SHORT() return value is constructed this way:\n\n (server_id & 255) << 56\n+ (server_startup_time_in_seconds << 24)\n+ incremented_variable++;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID_SHORT();\n -> 92395783831158784 \n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (411,35,'RIGHT','Syntax:\nRIGHT(str,len)\n\nReturns the rightmost len characters from the string str, or NULL if\nany argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RIGHT(\'foobarbar\', 4);\n -> \'rbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (412,30,'DATEDIFF','Syntax:\nDATEDIFF(expr1,expr2)\n\nDATEDIFF() returns expr1 - expr2 expressed as a value in days from one\ndate to the other. expr1 and expr2 are date or date-and-time\nexpressions. Only the date parts of the values are used in the\ncalculation.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATEDIFF(\'2007-12-31 23:59:59\',\'2007-12-30\');\n -> 1\nmysql> SELECT DATEDIFF(\'2010-11-30 23:59:59\',\'2010-12-31\');\n -> -31\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (413,37,'DROP TABLESPACE','Syntax:\nDROP TABLESPACE tablespace_name\n ENGINE [=] engine_name\n\nThis statement drops a tablespace that was previously created using\nCREATE TABLESPACE (see [HELP CREATE TABLESPACE]).\n\n*Important*: The tablespace to be dropped must not contain any data\nfiles; in other words, before you can drop a tablespace, you must first\ndrop each of its data files using ALTER TABLESPACE ... DROP DATAFILE\n(see [HELP ALTER TABLESPACE]).\n\nThe ENGINE clause (required) specifies the storage engine used by the\ntablespace. In MySQL 5.1, the only accepted values for engine_name are\nNDB and NDBCLUSTER.\n\nDROP TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/drop-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-tablespace.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (414,37,'DROP PROCEDURE','Syntax:\nDROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name\n\nThis statement is used to drop a stored procedure or function. That is,\nthe specified routine is removed from the server. You must have the\nALTER ROUTINE privilege for the routine. (That privilege is granted\nautomatically to the routine creator.)\n\nThe IF EXISTS clause is a MySQL extension. It prevents an error from\noccurring if the procedure or function does not exist. A warning is\nproduced that can be viewed with SHOW WARNINGS.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-procedure.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (415,19,'CHECK TABLE','Syntax:\nCHECK TABLE tbl_name [, tbl_name] ... [option] ...\n\noption = {FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED}\n\nCHECK TABLE checks a table or tables for errors. CHECK TABLE works for\nMyISAM, InnoDB, and ARCHIVE tables. Starting with MySQL 5.1.9, CHECK\nTABLE is also valid for CSV tables, see\nhttp://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html. For\nMyISAM tables, the key statistics are updated as well.\n\nCHECK TABLE can also check views for problems, such as tables that are\nreferenced in the view definition that no longer exist.\n\nBeginning with MySQL 5.1.27, CHECK TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... CHECK PARTITION to check one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/check-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/check-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (416,35,'BIN','Syntax:\nBIN(N)\n\nReturns a string representation of the binary value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,2). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT BIN(12);\n -> \'1100\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (417,5,'INSTALL PLUGIN','Syntax:\nINSTALL PLUGIN plugin_name SONAME \'plugin_library\'\n\nThis statement installs a plugin.\n\nplugin_name is the name of the plugin as defined in the plugin\ndeclaration structure contained in the library file. Plugin names are\nnot case sensitive. For maximal compatibility, plugin names should be\nlimited to ASCII letters, digits, and underscore, because they are used\nin C source files, shell command lines, M4 and Bourne shell scripts,\nand SQL environments.\n\nplugin_library is the name of the shared library that contains the\nplugin code. The name includes the file name extension (for example,\nlibmyplugin.so or libmyplugin.dylib).\n\nThe shared library must be located in the plugin directory (that is,\nthe directory named by the plugin_dir system variable). The library\nmust be in the plugin directory itself, not in a subdirectory. By\ndefault, plugin_dir is plugin directory under the directory named by\nthe pkglibdir configuration variable, but it can be changed by setting\nthe value of plugin_dir at server startup. For example, set its value\nin a my.cnf file:\n\n[mysqld]\nplugin_dir=/path/to/plugin/directory\n\nIf the value of plugin_dir is a relative path name, it is taken to be\nrelative to the MySQL base directory (the value of the basedir system\nvariable).\n\nINSTALL PLUGIN adds a line to the mysql.plugin table that describes the\nplugin. This table contains the plugin name and library file name.\n\nAs of MySQL 5.1.33, INSTALL PLUGIN causes the server to read option\n(my.cnf) files just as during server startup. This enables the plugin\nto pick up any relevant options from those files. It is possible to add\nplugin options to an option file even before loading a plugin (if the\nloose prefix is used). It is also possible to uninstall a plugin, edit\nmy.cnf, and install the plugin again. Restarting the plugin this way\nenables it to the new option values without a server restart.\n\nBefore MySQL 5.1.33, a plugin is started with each option set to its\ndefault value.\n\nINSTALL PLUGIN also loads and initializes the plugin code to make the\nplugin available for use. A plugin is initialized by executing its\ninitialization function, which handles any setup that the plugin must\nperform before it can be used.\n\nTo use INSTALL PLUGIN, you must have the INSERT privilege for the\nmysql.plugin table.\n\nAt server startup, the server loads and initializes any plugin that is\nlisted in the mysql.plugin table. This means that a plugin is installed\nwith INSTALL PLUGIN only once, not every time the server starts. Plugin\nloading at startup does not occur if the server is started with the\n--skip-grant-tables option.\n\nWhen the server shuts down, it executes the deinitialization function\nfor each plugin that is loaded so that the plugin has a change to\nperform any final cleanup.\n\nIf you need to load plugins for a single server startup when the\n--skip-grant-tables option is given (which tells the server not to read\nsystem tables), use the --plugin-load option. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-options.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/install-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/install-plugin.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (418,22,'DECLARE CURSOR','Syntax:\nDECLARE cursor_name CURSOR FOR select_statement\n\nThis statement declares a cursor. Multiple cursors may be declared in a\nstored program, but each cursor in a given block must have a unique\nname.\n\nThe SELECT statement cannot have an INTO clause.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-cursor.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-cursor.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (419,26,'LOAD DATA','Syntax:\nLOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE \'file_name\'\n [REPLACE | IGNORE]\n INTO TABLE tbl_name\n [CHARACTER SET charset_name]\n [{FIELDS | COLUMNS}\n [TERMINATED BY \'string\']\n [[OPTIONALLY] ENCLOSED BY \'char\']\n [ESCAPED BY \'char\']\n ]\n [LINES\n [STARTING BY \'string\']\n [TERMINATED BY \'string\']\n ]\n [IGNORE number LINES]\n [(col_name_or_user_var,...)]\n [SET col_name = expr,...]\n\nThe LOAD DATA INFILE statement reads rows from a text file into a table\nat a very high speed. The file name must be given as a literal string.\n\nLOAD DATA INFILE is the complement of SELECT ... INTO OUTFILE. (See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.) To write data from\na table to a file, use SELECT ... INTO OUTFILE. To read the file back\ninto a table, use LOAD DATA INFILE. The syntax of the FIELDS and LINES\nclauses is the same for both statements. Both clauses are optional, but\nFIELDS must precede LINES if both are specified.\n\nFor more information about the efficiency of INSERT versus LOAD DATA\nINFILE and speeding up LOAD DATA INFILE, see\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-speed.html.\n\nThe character set indicated by the character_set_database system\nvariable is used to interpret the information in the file. SET NAMES\nand the setting of character_set_client do not affect interpretation of\ninput. If the contents of the input file use a character set that\ndiffers from the default, it is usually preferable to specify the\ncharacter set of the file by using the CHARACTER SET clause, which is\navailable as of MySQL 5.1.17.\n\nLOAD DATA INFILE interprets all fields in the file as having the same\ncharacter set, regardless of the data types of the columns into which\nfield values are loaded. For proper interpretation of file contents,\nyou must ensure that it was written with the correct character set. For\nexample, if you write a data file with mysqldump -T or by issuing a\nSELECT ... INTO OUTFILE statement in mysql, be sure to use a\n--default-character-set option with mysqldump or mysql so that output\nis written in the character set to be used when the file is loaded with\nLOAD DATA INFILE.\n\nNote that it is currently not possible to load data files that use the\nucs2, utf16, or utf32 character set.\n\nAs of MySQL 5.1.6, the character_set_filesystem system variable\ncontrols the interpretation of the file name.\n\nYou can also load data files by using the mysqlimport utility; it\noperates by sending a LOAD DATA INFILE statement to the server. The\n--local option causes mysqlimport to read data files from the client\nhost. You can specify the --compress option to get better performance\nover slow networks if the client and server support the compressed\nprotocol. See http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html.\n\nIf you use LOW_PRIORITY, execution of the LOAD DATA statement is\ndelayed until no other clients are reading from the table. This affects\nonly storage engines that use only table-level locking (MyISAM, MEMORY,\nMERGE).\n\nIf you specify CONCURRENT with a MyISAM table that satisfies the\ncondition for concurrent inserts (that is, it contains no free blocks\nin the middle), other threads can retrieve data from the table while\nLOAD DATA is executing. Using this option affects the performance of\nLOAD DATA a bit, even if no other thread is using the table at the same\ntime.\n\nCONCURRENT is not replicated when using statement-based replication;\nhowever, it is replicated when using row-based replication. See\nhttp://dev.mysql.com/doc/refman/5.1/en/replication-features-load-data.…, for more information.\n\n*Note*: Prior to MySQL 5.1.23, LOAD DATA performed very poorly when\nimporting into partitioned tables. The statement now uses buffering to\nimprove performance; however, the buffer uses 130 KB memory per\npartition to achieve this. (Bug#26527 (http://bugs.mysql.com/26527))\n\nThe LOCAL keyword, if specified, is interpreted with respect to the\nclient end of the connection:\n\no If LOCAL is specified, the file is read by the client program on the\n client host and sent to the server. The file can be given as a full\n path name to specify its exact location. If given as a relative path\n name, the name is interpreted relative to the directory in which the\n client program was started.\n\no If LOCAL is not specified, the file must be located on the server\n host and is read directly by the server. The server uses the\n following rules to locate the file:\n\n o If the file name is an absolute path name, the server uses it as\n given.\n\n o If the file name is a relative path name with one or more leading\n components, the server searches for the file relative to the\n server\'s data directory.\n\n o If a file name with no leading components is given, the server\n looks for the file in the database directory of the default\n database.\n\nNote that, in the non-LOCAL case, these rules mean that a file named as\n./myfile.txt is read from the server\'s data directory, whereas the file\nnamed as myfile.txt is read from the database directory of the default\ndatabase. For example, if db1 is the default database, the following\nLOAD DATA statement reads the file data.txt from the database directory\nfor db1, even though the statement explicitly loads the file into a\ntable in the db2 database:\n\nLOAD DATA INFILE \'data.txt\' INTO TABLE db2.my_table;\n\nWindows path names are specified using forward slashes rather than\nbackslashes. If you do use backslashes, you must double them.\n\nFor security reasons, when reading text files located on the server,\nthe files must either reside in the database directory or be readable\nby all. Also, to use LOAD DATA INFILE on server files, you must have\nthe FILE privilege. See\nhttp://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html. For\nnon-LOCAL load operations, if the secure_file_priv system variable is\nset to a non-empty directory name, the file to be loaded must be\nlocated in that directory.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-data.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-data.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (420,23,'MULTILINESTRING','MultiLineString(ls1,ls2,...)\n\nConstructs a WKB MultiLineString value using WKB LineString arguments.\nIf any argument is not a WKB LineString, the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (421,30,'LOCALTIME','Syntax:\nLOCALTIME, LOCALTIME()\n\nLOCALTIME and LOCALTIME() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (422,3,'MPOINTFROMTEXT','MPointFromText(wkt[,srid]), MultiPointFromText(wkt[,srid])\n\nConstructs a MULTIPOINT value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (423,20,'BLOB','BLOB[(M)]\n\nA BLOB column with a maximum length of 65,535 (216 - 1) bytes. Each\nBLOB value is stored using a two-byte length prefix that indicates the\nnumber of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest BLOB type large enough to hold\nvalues M bytes long.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (424,11,'SHA1','Syntax:\nSHA1(str), SHA(str)\n\nCalculates an SHA-1 160-bit checksum for the string, as described in\nRFC 3174 (Secure Hash Algorithm). The value is returned as a binary\nstring of 40 hex digits, or NULL if the argument was NULL. One of the\npossible uses for this function is as a hash key. You can also use it\nas a cryptographic function for storing passwords. SHA() is synonymous\nwith SHA1().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT SHA1(\'abc\');\n -> \'a9993e364706816aba3e25717850c26c9cd0d89d\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (425,35,'SUBSTR','Syntax:\nSUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str\nFROM pos FOR len)\n\nSUBSTR() is a synonym for SUBSTRING().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (426,11,'PASSWORD','Syntax:\nPASSWORD(str)\n\nCalculates and returns a password string from the plaintext password\nstr and returns a binary string, or NULL if the argument was NULL. This\nis the function that is used for encrypting MySQL passwords for storage\nin the Password column of the user grant table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT PASSWORD(\'badpwd\');\n -> \'*AAB3E285149C0135D51A520E1940DD3263DC008C\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (427,20,'CHAR','[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA fixed-length string that is always right-padded with spaces to the\nspecified length when stored. M represents the column length in\ncharacters. The range of M is 0 to 255. If M is omitted, the length is\n1.\n\n*Note*: Trailing spaces are removed when CHAR values are retrieved\nunless the PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (428,30,'UTC_DATE','Syntax:\nUTC_DATE, UTC_DATE()\n\nReturns the current UTC date as a value in \'YYYY-MM-DD\' or YYYYMMDD\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_DATE(), UTC_DATE() + 0;\n -> \'2003-08-14\', 20030814\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (429,34,'DIMENSION','Dimension(g)\n\nReturns the inherent dimension of the geometry value g. The result can\nbe -1, 0, 1, or 2. The meaning of these values is given in\nhttp://dev.mysql.com/doc/refman/5.1/en/gis-class-geometry.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT Dimension(GeomFromText(\'LineString(1 1,2 2)\'));\n+------------------------------------------------+\n| Dimension(GeomFromText(\'LineString(1 1,2 2)\')) |\n+------------------------------------------------+\n| 1 |\n+------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (430,16,'COUNT DISTINCT','Syntax:\nCOUNT(DISTINCT expr,[expr...])\n\nReturns a count of the number of different non-NULL values.\n\nCOUNT(DISTINCT) returns 0 if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT COUNT(DISTINCT results) FROM student;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (431,20,'BIT','BIT[(M)]\n\nA bit-field type. M indicates the number of bits per value, from 1 to\n64. The default is 1 if M is omitted.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (432,29,'EQUALS','Equals(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially equal to g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (433,26,'SHOW CREATE VIEW','Syntax:\nSHOW CREATE VIEW view_name\n\nThis statement shows a CREATE VIEW statement that creates the given\nview.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (434,17,'INTERVAL','Syntax:\nINTERVAL(N,N1,N2,N3,...)\n\nReturns 0 if N < N1, 1 if N < N2 and so on or -1 if N is NULL. All\narguments are treated as integers. It is required that N1 < N2 < N3 <\n... < Nn for this function to work correctly. This is because a binary\nsearch is used (very fast).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);\n -> 3\nmysql> SELECT INTERVAL(10, 1, 10, 100, 1000);\n -> 2\nmysql> SELECT INTERVAL(22, 23, 30, 44, 200);\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (435,30,'FROM_DAYS','Syntax:\nFROM_DAYS(N)\n\nGiven a day number N, returns a DATE value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_DAYS(730669);\n -> \'2007-07-03\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (436,37,'ALTER PROCEDURE','Syntax:\nALTER PROCEDURE proc_name [characteristic ...]\n\ncharacteristic:\n { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nThis statement can be used to change the characteristics of a stored\nprocedure. More than one change may be specified in an ALTER PROCEDURE\nstatement. However, you cannot change the parameters or body of a\nstored procedure using this statement; to make such changes, you must\ndrop and re-create the procedure using DROP PROCEDURE and CREATE\nPROCEDURE.\n\nYou must have the ALTER ROUTINE privilege for the procedure. (That\nprivilege is granted automatically to the procedure creator.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-procedure.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (437,18,'BIT_COUNT','Syntax:\nBIT_COUNT(N)\n\nReturns the number of bits that are set in the argument N.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT BIT_COUNT(29), BIT_COUNT(b\'101010\');\n -> 4, 3\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (438,35,'OCTET_LENGTH','Syntax:\nOCTET_LENGTH(str)\n\nOCTET_LENGTH() is a synonym for LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (439,30,'UTC_TIMESTAMP','Syntax:\nUTC_TIMESTAMP, UTC_TIMESTAMP()\n\nReturns the current UTC date and time as a value in \'YYYY-MM-DD\nHH:MM:SS\' or YYYYMMDDHHMMSS.uuuuuu format, depending on whether the\nfunction is used in a string or numeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;\n -> \'2003-08-14 18:08:04\', 20030814180804.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (440,11,'AES_ENCRYPT','Syntax:\nAES_ENCRYPT(str,key_str)\n\nAES_ENCRYPT() and AES_DECRYPT() allow encryption and decryption of data\nusing the official AES (Advanced Encryption Standard) algorithm,\npreviously known as "Rijndael." Encoding with a 128-bit key length is\nused, but you can extend it up to 256 bits by modifying the source. We\nchose 128 bits because it is much faster and it is secure enough for\nmost purposes.\n\nAES_ENCRYPT() encrypts a string and returns a binary string.\nAES_DECRYPT() decrypts the encrypted string and returns the original\nstring. The input arguments may be any length. If either argument is\nNULL, the result of this function is also NULL.\n\nBecause AES is a block-level algorithm, padding is used to encode\nuneven length strings and so the result string length may be calculated\nusing this formula:\n\n16 x (trunc(string_length / 16) + 1)\n\nIf AES_DECRYPT() detects invalid data or incorrect padding, it returns\nNULL. However, it is possible for AES_DECRYPT() to return a non-NULL\nvalue (possibly garbage) if the input data or the key is invalid.\n\nYou can use the AES functions to store data in an encrypted form by\nmodifying your queries:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','INSERT INTO t VALUES (1,AES_ENCRYPT(\'text\',\'password\'));\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (441,4,'+','Syntax:\n+\n\nAddition:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3+5;\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (442,14,'INET_NTOA','Syntax:\nINET_NTOA(expr)\n\nGiven a numeric network address in network byte order (4 or 8 byte),\nreturns the dotted-quad representation of the address as a string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_NTOA(3520061480);\n -> \'209.207.224.40\'\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (443,4,'ACOS','Syntax:\nACOS(X)\n\nReturns the arc cosine of X, that is, the value whose cosine is X.\nReturns NULL if X is not in the range -1 to 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ACOS(1);\n -> 0\nmysql> SELECT ACOS(1.0001);\n -> NULL\nmysql> SELECT ACOS(0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (444,8,'ISOLATION','Syntax:\nSET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL\n {\n READ UNCOMMITTED\n | READ COMMITTED\n | REPEATABLE READ\n | SERIALIZABLE\n }\n\nThis statement sets the transaction isolation level globally, for the\ncurrent session, or for the next transaction:\n\no With the GLOBAL keyword, the statement sets the default transaction\n level globally for all subsequent sessions. Existing sessions are\n unaffected.\n\no With the SESSION keyword, the statement sets the default transaction\n level for all subsequent transactions performed within the current\n session.\n\no Without any SESSION or GLOBAL keyword, the statement sets the\n isolation level for the next (not started) transaction performed\n within the current session.\n\nA change to the global default isolation level requires the SUPER\nprivilege. Any session is free to change its session isolation level\n(even in the middle of a transaction), or the isolation level for its\nnext transaction.\n\nTo set the global default isolation level at server startup, use the\n--transaction-isolation=level option to mysqld on the command line or\nin an option file. Values of level for this option use dashes rather\nthan spaces, so the allowable values are READ-UNCOMMITTED,\nREAD-COMMITTED, REPEATABLE-READ, or SERIALIZABLE. For example, to set\nthe default isolation level to REPEATABLE READ, use these lines in the\n[mysqld] section of an option file:\n\n[mysqld]\ntransaction-isolation = REPEATABLE-READ\n\nTo determine the global and session transaction isolation levels at\nruntime, check the value of the tx_isolation system variable:\n\nSELECT @@GLOBAL.tx_isolation, @@tx_isolation;\n\nInnoDB supports each of the translation isolation levels described here\nusing different locking strategies. The default level is REPEATABLE\nREAD. For additional information about InnoDB record-level locks and\nhow it uses them to execute various types of statements, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-record-level-locks.html,… http://dev.mysql.com/doc/refman/5.1/en/innodb-locks-set.html.\n\nThe following list describes how MySQL supports the different\ntransaction levels:\n\no READ UNCOMMITTED\n\n SELECT statements are performed in a non-locking fashion, but a\n possible earlier version of a row might be used. Thus, using this\n isolation level, such reads are not consistent. This is also called a\n "dirty read." Otherwise, this isolation level works like READ\n COMMITTED.\n\no READ COMMITTED\n\n A somewhat Oracle-like isolation level with respect to consistent\n (non-locking) reads: Each consistent read, even within the same\n transaction, sets and reads its own fresh snapshot. See\n http://dev.mysql.com/doc/refman/5.1/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n InnoDB locks only index records, not the gaps before them, and thus\n allows the free insertion of new records next to locked records. For\n UPDATE and DELETE statements, locking depends on whether the\n statement uses a unique index with a unique search condition (such as\n WHERE id = 100), or a range-type search condition (such as WHERE id >\n 100). For a unique index with a unique search condition, InnoDB locks\n only the index record found, not the gap before it. For range-type\n searches, InnoDB locks the index range scanned, using gap locks or\n next-key (gap plus index-record) locks to block insertions by other\n sessions into the gaps covered by the range. This is necessary\n because "phantom rows" must be blocked for MySQL replication and\n recovery to work.\n\n *Note*: In MySQL 5.1, if the READ COMMITTED isolation level is used\n or the innodb_locks_unsafe_for_binlog system variable is enabled,\n there is no InnoDB gap locking except for foreign-key constraint\n checking and duplicate-key checking. Also, record locks for\n non-matching rows are released after MySQL has evaluated the WHERE\n condition. As of MySQL 5.1, if you use READ COMMITTED or enable\n innodb_locks_unsafe_for_binlog, you must use row-based binary\n logging.\n\no REPEATABLE READ\n\n This is the default isolation level for InnoDB. For consistent reads,\n there is an important difference from the READ COMMITTED isolation\n level: All consistent reads within the same transaction read the\n snapshot established by the first read. This convention means that if\n you issue several plain (non-locking) SELECT statements within the\n same transaction, these SELECT statements are consistent also with\n respect to each other. See\n http://dev.mysql.com/doc/refman/5.1/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n UPDATE, and DELETE statements, locking depends on whether the\n statement uses a unique index with a unique search condition, or a\n range-type search condition. For a unique index with a unique search\n condition, InnoDB locks only the index record found, not the gap\n before it. For other search conditions, InnoDB locks the index range\n scanned, using gap locks or next-key (gap plus index-record) locks to\n block insertions by other sessions into the gaps covered by the\n range.\n\no SERIALIZABLE\n\n This level is like REPEATABLE READ, but InnoDB implicitly converts\n all plain SELECT statements to SELECT ... LOCK IN SHARE MODE if\n autocommit is disabled. If autocommit is enabled, the SELECT is its\n own transaction. It therefore is known to be read only and can be\n serialized if performed as a consistent (non-locking) read and need\n not block for other transactions. (This means that to force a plain\n SELECT to block if other transactions have modified the selected\n rows, you should disable autocommit.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (445,4,'CEILING','Syntax:\nCEILING(X)\n\nReturns the smallest integer value not less than X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CEILING(1.23);\n -> 2\nmysql> SELECT CEILING(-1.23);\n -> -1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (446,4,'SIN','Syntax:\nSIN(X)\n\nReturns the sine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT SIN(PI());\n -> 1.2246063538224e-16\nmysql> SELECT ROUND(SIN(PI()));\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (447,30,'DAYOFWEEK','Syntax:\nDAYOFWEEK(date)\n\nReturns the weekday index for date (1 = Sunday, 2 = Monday, ..., 7 =\nSaturday). These index values correspond to the ODBC standard.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFWEEK(\'2007-02-03\');\n -> 7\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (448,26,'SHOW PROCESSLIST','Syntax:\nSHOW [FULL] PROCESSLIST\n\nSHOW PROCESSLIST shows you which threads are running. You can also get\nthis information from the INFORMATION_SCHEMA PROCESSLIST table or the\nmysqladmin processlist command. If you have the PROCESS privilege, you\ncan see all threads. Otherwise, you can see only your own threads (that\nis, threads associated with the MySQL account that you are using). If\nyou do not use the FULL keyword, only the first 100 characters of each\nstatement are shown in the Info field.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (449,31,'LINEFROMWKB','LineFromWKB(wkb[,srid]), LineStringFromWKB(wkb[,srid])\n\nConstructs a LINESTRING value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (450,34,'GEOMETRYTYPE','GeometryType(g)\n\nReturns as a string the name of the geometry type of which the geometry\ninstance g is a member. The name corresponds to one of the instantiable\nGeometry subclasses.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT GeometryType(GeomFromText(\'POINT(1 1)\'));\n+------------------------------------------+\n| GeometryType(GeomFromText(\'POINT(1 1)\')) |\n+------------------------------------------+\n| POINT |\n+------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (451,37,'CREATE VIEW','Syntax:\nCREATE\n [OR REPLACE]\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = { user | CURRENT_USER }]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThe CREATE VIEW statement creates a new view, or replaces an existing\none if the OR REPLACE clause is given. If the view does not exist,\nCREATE OR REPLACE VIEW is the same as CREATE VIEW. If the view does\nexist, CREATE OR REPLACE VIEW is the same as ALTER VIEW.\n\nThe select_statement is a SELECT statement that provides the definition\nof the view. (When you select from the view, you select in effect using\nthe SELECT statement.) select_statement can select from base tables or\nother views.\n\nThe view definition is "frozen" at creation time, so changes to the\nunderlying tables afterward do not affect the view definition. For\nexample, if a view is defined as SELECT * on a table, new columns added\nto the table later do not become part of the view.\n\nThe ALGORITHM clause affects how MySQL processes the view. The DEFINER\nand SQL SECURITY clauses specify the security context to be used when\nchecking access privileges at view invocation time. The WITH CHECK\nOPTION clause can be given to constrain inserts or updates to rows in\ntables referenced by the view. These clauses are described later in\nthis section.\n\nThe CREATE VIEW statement requires the CREATE VIEW privilege for the\nview, and some privilege for each column selected by the SELECT\nstatement. For columns used elsewhere in the SELECT statement you must\nhave the SELECT privilege. If the OR REPLACE clause is present, you\nmust also have the DROP privilege for the view.\n\nA view belongs to a database. By default, a new view is created in the\ndefault database. To create the view explicitly in a given database,\nspecify the name as db_name.view_name when you create it.\n\nmysql> CREATE VIEW test.v AS SELECT * FROM t;\n\nBase tables and views share the same namespace within a database, so a\ndatabase cannot contain a base table and a view that have the same\nname.\n\nViews must have unique column names with no duplicates, just like base\ntables. By default, the names of the columns retrieved by the SELECT\nstatement are used for the view column names. To define explicit names\nfor the view columns, the optional column_list clause can be given as a\nlist of comma-separated identifiers. The number of names in column_list\nmust be the same as the number of columns retrieved by the SELECT\nstatement.\n\n*Note*: Prior to MySQL 5.1.29, When you modify an existing view, the\ncurrent view definition is backed up and saved. It is stored in that\ntable\'s database directory, in a subdirectory named arc. The backup\nfile for a view v is named v.frm-00001. If you alter the view again,\nthe next backup is named v.frm-00002. The three latest view backup\ndefinitions are stored. Backed up view definitions are not preserved by\nmysqldump, or any other such programs, but you can retain them using a\nfile copy operation. However, they are not needed for anything but to\nprovide you with a backup of your previous view definition. It is safe\nto remove these backup definitions, but only while mysqld is not\nrunning. If you delete the arc subdirectory or its files while mysqld\nis running, you will receive an error the next time you try to alter\nthe view: mysql> ALTER VIEW v AS SELECT * FROM t; ERROR 6 (HY000):\nError on delete of \'.\\test\\arc/v.frm-0004\' (Errcode: 2)\n\nColumns retrieved by the SELECT statement can be simple references to\ntable columns. They can also be expressions that use functions,\nconstant values, operators, and so forth.\n\nUnqualified table or view names in the SELECT statement are interpreted\nwith respect to the default database. A view can refer to tables or\nviews in other databases by qualifying the table or view name with the\nproper database name.\n\nA view can be created from many kinds of SELECT statements. It can\nrefer to base tables or other views. It can use joins, UNION, and\nsubqueries. The SELECT need not even refer to any tables. The following\nexample defines a view that selects two columns from another table, as\nwell as an expression calculated from those columns:\n\nmysql> CREATE TABLE t (qty INT, price INT);\nmysql> INSERT INTO t VALUES(3, 50);\nmysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;\nmysql> SELECT * FROM v;\n+------+-------+-------+\n| qty | price | value |\n+------+-------+-------+\n| 3 | 50 | 150 |\n+------+-------+-------+\n\nA view definition is subject to the following restrictions:\n\no The SELECT statement cannot contain a subquery in the FROM clause.\n\no The SELECT statement cannot refer to system or user variables.\n\no Within a stored program, the definition cannot refer to program\n parameters or local variables.\n\no The SELECT statement cannot refer to prepared statement parameters.\n\no Any table or view referred to in the definition must exist. However,\n after a view has been created, it is possible to drop a table or view\n that the definition refers to. In this case, use of the view results\n in an error. To check a view definition for problems of this kind,\n use the CHECK TABLE statement.\n\no The definition cannot refer to a TEMPORARY table, and you cannot\n create a TEMPORARY view.\n\no Any tables named in the view definition must exist at definition\n time.\n\no You cannot associate a trigger with a view.\n\nORDER BY is allowed in a view definition, but it is ignored if you\nselect from a view using a statement that has its own ORDER BY.\n\nFor other options or clauses in the definition, they are added to the\noptions or clauses of the statement that references the view, but the\neffect is undefined. For example, if a view definition includes a LIMIT\nclause, and you select from the view using a statement that has its own\nLIMIT clause, it is undefined which limit applies. This same principle\napplies to options such as ALL, DISTINCT, or SQL_SMALL_RESULT that\nfollow the SELECT keyword, and to clauses such as INTO, FOR UPDATE,\nLOCK IN SHARE MODE, and PROCEDURE.\n\nIf you create a view and then change the query processing environment\nby changing system variables, that may affect the results that you get\nfrom the view:\n\nmysql> CREATE VIEW v (mycol) AS SELECT \'abc\';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SET sql_mode = \'\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT "mycol" FROM v;\n+-------+\n| mycol |\n+-------+\n| mycol | \n+-------+\n1 row in set (0.01 sec)\n\nmysql> SET sql_mode = \'ANSI_QUOTES\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT "mycol" FROM v;\n+-------+\n| mycol |\n+-------+\n| abc | \n+-------+\n1 row in set (0.00 sec)\n\nThe DEFINER and SQL SECURITY clauses determine which MySQL account to\nuse when checking access privileges for the view when a statement is\nexecuted that references the view. They were addded in MySQL 5.1.2. The\nlegal SQL SECURITY characteristic values are DEFINER and INVOKER. These\nindicate that the required privileges must be held by the user who\ndefined or invoked the view, respectively. The default SQL SECURITY\nvalue is DEFINER.\n\nIf a user value is given for the DEFINER clause, it should be a MySQL\naccount in \'user_name\'@\'host_name\' format (the same format used in the\nGRANT statement). The user_name and host_name values both are required.\nThe definer can also be given as CURRENT_USER or CURRENT_USER(). The\ndefault DEFINER value is the user who executes the CREATE VIEW\nstatement. This is the same as specifying DEFINER = CURRENT_USER\nexplicitly.\n\nIf you specify the DEFINER clause, these rules determine the legal\nDEFINER user values:\n\no If you do not have the SUPER privilege, the only legal user value is\n your own account, either specified literally or by using\n CURRENT_USER. You cannot set the definer to some other account.\n\no If you have the SUPER privilege, you can specify any syntactically\n legal account name. If the account does not actually exist, a warning\n is generated.\n\no If the SQL SECURITY value is DEFINER but the definer account does not\n exist when the view is referenced, an error occurs.\n\nWithin a view definition, CURRENT_USER returns the view\'s DEFINER value\nby default as of MySQL 5.1.12. For older versions, and for views\ndefined with the SQL SECURITY INVOKER characteristic, CURRENT_USER\nreturns the account for the view\'s invoker. For information about user\nauditing within views, see\nhttp://dev.mysql.com/doc/refman/5.1/en/account-activity-auditing.html.… a stored routine that is defined with the SQL SECURITY DEFINER\ncharacteristic, CURRENT_USER returns the routine\'s DEFINER value. This\nalso affects a view defined within such a program, if the view\ndefinition contains a DEFINER value of CURRENT_USER.\n\nAs of MySQL 5.1.2 (when the DEFINER and SQL SECURITY clauses were\nimplemented), view privileges are checked like this:\n\no At view definition time, the view creator must have the privileges\n needed to use the top-level objects accessed by the view. For\n example, if the view definition refers to table columns, the creator\n must have privileges for the columns, as described previously. If the\n definition refers to a stored function, only the privileges needed to\n invoke the function can be checked. The privileges required when the\n function runs can be checked only as it executes: For different\n invocations of the function, different execution paths within the\n function might be taken.\n\no When a view is referenced, privileges for objects accessed by the\n view are checked against the privileges held by the view creator or\n invoker, depending on whether the SQL SECURITY characteristic is\n DEFINER or INVOKER, respectively.\n\no If reference to a view causes execution of a stored function,\n privilege checking for statements executed within the function depend\n on whether the function is defined with a SQL SECURITY characteristic\n of DEFINER or INVOKER. If the security characteristic is DEFINER, the\n function runs with the privileges of its creator. If the\n characteristic is INVOKER, the function runs with the privileges\n determined by the view\'s SQL SECURITY characteristic.\n\nPrior to MySQL 5.1.2 (before the DEFINER and SQL SECURITY clauses were\nimplemented), privileges required for objects used in a view are\nchecked at view creation time.\n\nExample: A view might depend on a stored function, and that function\nmight invoke other stored routines. For example, the following view\ninvokes a stored function f():\n\nCREATE VIEW v AS SELECT * FROM t WHERE t.id = f(t.name);\n\nSuppose that f() contains a statement such as this:\n\nIF name IS NULL then\n CALL p1();\nELSE\n CALL p2();\nEND IF;\n\nThe privileges required for executing statements within f() need to be\nchecked when f() executes. This might mean that privileges are needed\nfor p1() or p2(), depending on the execution path within f(). Those\nprivileges must be checked at runtime, and the user who must possess\nthe privileges is determined by the SQL SECURITY values of the view v\nand the function f().\n\nThe DEFINER and SQL SECURITY clauses for views are extensions to\nstandard SQL. In standard SQL, views are handled using the rules for\nSQL SECURITY INVOKER.\n\nIf you invoke a view that was created before MySQL 5.1.2, it is treated\nas though it was created with a SQL SECURITY DEFINER clause and with a\nDEFINER value that is the same as your account. However, because the\nactual definer is unknown, MySQL issues a warning. To make the warning\ngo away, it is sufficient to re-create the view so that the view\ndefinition includes a DEFINER clause.\n\nThe optional ALGORITHM clause is a MySQL extension to standard SQL. It\naffects how MySQL processes the view. ALGORITHM takes three values:\nMERGE, TEMPTABLE, or UNDEFINED. The default algorithm is UNDEFINED if\nno ALGORITHM clause is present. For more information, see\nhttp://dev.mysql.com/doc/refman/5.1/en/view-algorithms.html.\n\nSome views are updatable. That is, you can use them in statements such\nas UPDATE, DELETE, or INSERT to update the contents of the underlying\ntable. For a view to be updatable, there must be a one-to-one\nrelationship between the rows in the view and the rows in the\nunderlying table. There are also certain other constructs that make a\nview non-updatable.\n\nThe WITH CHECK OPTION clause can be given for an updatable view to\nprevent inserts or updates to rows except those for which the WHERE\nclause in the select_statement is true.\n\nIn a WITH CHECK OPTION clause for an updatable view, the LOCAL and\nCASCADED keywords determine the scope of check testing when the view is\ndefined in terms of another view. The LOCAL keyword restricts the CHECK\nOPTION only to the view being defined. CASCADED causes the checks for\nunderlying views to be evaluated as well. When neither keyword is\ngiven, the default is CASCADED.\n\nFor more information about updatable views and the WITH CHECK OPTION\nclause, see\nhttp://dev.mysql.com/doc/refman/5.1/en/view-updatability.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-view.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (452,35,'TRIM','Syntax:\nTRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr\nFROM] str)\n\nReturns the string str with all remstr prefixes or suffixes removed. If\nnone of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is\nassumed. remstr is optional and, if not specified, spaces are removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT TRIM(\' bar \');\n -> \'bar\'\nmysql> SELECT TRIM(LEADING \'x\' FROM \'xxxbarxxx\');\n -> \'barxxx\'\nmysql> SELECT TRIM(BOTH \'x\' FROM \'xxxbarxxx\');\n -> \'bar\'\nmysql> SELECT TRIM(TRAILING \'xyz\' FROM \'barxxyz\');\n -> \'barx\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (453,17,'IS','Syntax:\nIS boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;\n -> 1, 1, 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (454,30,'GET_FORMAT','Syntax:\nGET_FORMAT({DATE|TIME|DATETIME}, {\'EUR\'|\'USA\'|\'JIS\'|\'ISO\'|\'INTERNAL\'})\n\nReturns a format string. This function is useful in combination with\nthe DATE_FORMAT() and the STR_TO_DATE() functions.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2003-10-03\',GET_FORMAT(DATE,\'EUR\'));\n -> \'03.10.2003\'\nmysql> SELECT STR_TO_DATE(\'10.31.2003\',GET_FORMAT(DATE,\'USA\'));\n -> \'2003-10-31\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (455,20,'TINYBLOB','TINYBLOB\n\nA BLOB column with a maximum length of 255 (28 - 1) bytes. Each\nTINYBLOB value is stored using a one-byte length prefix that indicates\nthe number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (456,8,'SAVEPOINT','Syntax:\nSAVEPOINT identifier\nROLLBACK [WORK] TO [SAVEPOINT] identifier\nRELEASE SAVEPOINT identifier\n\nInnoDB supports the SQL statements SAVEPOINT, ROLLBACK TO SAVEPOINT,\nRELEASE SAVEPOINT and the optional WORK keyword for ROLLBACK.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/savepoint.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/savepoint.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (457,15,'USER','Syntax:\nUSER()\n\nReturns the current MySQL user name and host name as a string in the\nutf8 character set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (458,37,'ALTER TABLE','Syntax:\nALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name\n alter_specification [, alter_specification] ...\n\nalter_specification:\n table_option ...\n | ADD [COLUMN] col_name column_definition\n [FIRST | AFTER col_name ]\n | ADD [COLUMN] (col_name column_definition,...)\n | ADD {INDEX|KEY} [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]] PRIMARY KEY\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n UNIQUE [INDEX|KEY] [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD FULLTEXT [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD SPATIAL [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n FOREIGN KEY [index_name] (index_col_name,...)\n reference_definition\n | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}\n | CHANGE [COLUMN] old_col_name new_col_name column_definition\n [FIRST|AFTER col_name]\n | MODIFY [COLUMN] col_name column_definition\n [FIRST | AFTER col_name]\n | DROP [COLUMN] col_name\n | DROP PRIMARY KEY\n | DROP {INDEX|KEY} index_name\n | DROP FOREIGN KEY fk_symbol\n | DISABLE KEYS\n | ENABLE KEYS\n | RENAME [TO] new_tbl_name\n | ORDER BY col_name [, col_name] ...\n | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]\n | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]\n | DISCARD TABLESPACE\n | IMPORT TABLESPACE\n | partition_options\n | ADD PARTITION (partition_definition)\n | DROP PARTITION partition_names\n | COALESCE PARTITION number\n | REORGANIZE PARTITION [partition_names INTO (partition_definitions)]\n | ANALYZE PARTITION partition_names\n | CHECK PARTITION partition_names\n | OPTIMIZE PARTITION partition_names\n | REBUILD PARTITION partition_names\n | REPAIR PARTITION partition_names\n | REMOVE PARTITIONING\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n\nALTER TABLE enables you to change the structure of an existing table.\nFor example, you can add or delete columns, create or destroy indexes,\nchange the type of existing columns, or rename columns or the table\nitself. You can also change the comment for the table and type of the\ntable.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (459,31,'MPOINTFROMWKB','MPointFromWKB(wkb[,srid]), MultiPointFromWKB(wkb[,srid])\n\nConstructs a MULTIPOINT value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (460,20,'CHAR BYTE','The CHAR BYTE data type is an alias for the BINARY data type. This is a\ncompatibility feature.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (461,19,'REPAIR TABLE','Syntax:\nREPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n [QUICK] [EXTENDED] [USE_FRM]\n\nREPAIR TABLE repairs a possibly corrupted table. By default, it has the\nsame effect as myisamchk --recover tbl_name. REPAIR TABLE works for\nMyISAM and for ARCHIVE tables. Starting with MySQL 5.1.9, REPAIR is\nalso valid for CSV tables. See\nhttp://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html, and\nhttp://dev.mysql.com/doc/refman/5.1/en/archive-storage-engine.html, and\nhttp://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, REPAIR TABLE is also supported for\npartitioned tables. However, the USE_FRM option cannot be used with\nthis statement on a partitioned table.\n\nAlso beginning with MySQL 5.1.27, you can use ALTER TABLE ... REPAIR\nPARTITION to repair one or more partitions; for more information, see\n[HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/repair-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/repair-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (462,37,'MERGE','The MERGE storage engine, also known as the MRG_MyISAM engine, is a\ncollection of identical MyISAM tables that can be used as one.\n"Identical" means that all tables have identical column and index\ninformation. You cannot merge MyISAM tables in which the columns are\nlisted in a different order, do not have exactly the same columns, or\nhave the indexes in different order. However, any or all of the MyISAM\ntables can be compressed with myisampack. See\nhttp://dev.mysql.com/doc/refman/5.1/en/myisampack.html. Differences in\ntable options such as AVG_ROW_LENGTH, MAX_ROWS, or PACK_KEYS do not\nmatter.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html\n\n','mysql> CREATE TABLE t1 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> CREATE TABLE t2 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> INSERT INTO t1 (message) VALUES (\'Testing\'),(\'table\'),(\'t1\');\nmysql> INSERT INTO t2 (message) VALUES (\'Testing\'),(\'table\'),(\'t2\');\nmysql> CREATE TABLE total (\n -> a INT NOT NULL AUTO_INCREMENT,\n -> message CHAR(20), INDEX(a))\n -> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;\n','http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (463,37,'CREATE TABLE','Syntax:\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n (create_definition,...)\n [table_option] ...\n [partition_options]\n\nOr:\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n [(create_definition,...)]\n [table_option] ...\n [partition_options]\n select_statement\n\nOr:\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n { LIKE old_tbl_name | (LIKE old_tbl_name) }\n\ncreate_definition:\n col_name column_definition\n | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)\n [index_option] ...\n | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]\n [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name,...) reference_definition\n | CHECK (expr)\n\ncolumn_definition:\n data_type [NOT NULL | NULL] [DEFAULT default_value]\n [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]\n [COMMENT \'string\']\n [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]\n [STORAGE {DISK|MEMORY|DEFAULT}]\n [reference_definition]\n\ndata_type:\n BIT[(length)]\n | TINYINT[(length)] [UNSIGNED] [ZEROFILL]\n | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]\n | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]\n | INT[(length)] [UNSIGNED] [ZEROFILL]\n | INTEGER[(length)] [UNSIGNED] [ZEROFILL]\n | BIGINT[(length)] [UNSIGNED] [ZEROFILL]\n | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | DATE\n | TIME\n | TIMESTAMP\n | DATETIME\n | YEAR\n | CHAR[(length)]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | VARCHAR(length)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | BINARY[(length)]\n | VARBINARY(length)\n | TINYBLOB\n | BLOB\n | MEDIUMBLOB\n | LONGBLOB\n | TINYTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | TEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | MEDIUMTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | LONGTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | ENUM(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | SET(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | spatial_type\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n\nreference_definition:\n REFERENCES tbl_name (index_col_name,...)\n [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\ntable_option: \n ENGINE [=] engine_name\n | AUTO_INCREMENT [=] value\n | AVG_ROW_LENGTH [=] value\n | [DEFAULT] CHARACTER SET [=] charset_name\n | CHECKSUM [=] {0 | 1}\n | [DEFAULT] COLLATE [=] collation_name\n | COMMENT [=] \'string\'\n | CONNECTION [=] \'connect_string\'\n | DATA DIRECTORY [=] \'absolute path to directory\'\n | DELAY_KEY_WRITE [=] {0 | 1}\n | INDEX DIRECTORY [=] \'absolute path to directory\'\n | INSERT_METHOD [=] { NO | FIRST | LAST }\n | KEY_BLOCK_SIZE [=] value\n | MAX_ROWS [=] value\n | MIN_ROWS [=] value\n | PACK_KEYS [=] {0 | 1 | DEFAULT}\n | PASSWORD [=] \'string\'\n | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}\n | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}]\n | UNION [=] (tbl_name[,tbl_name]...)\n\npartition_options:\n PARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY(column_list)\n | RANGE(expr)\n | LIST(expr) }\n [PARTITIONS num]\n [SUBPARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY(column_list) }\n [SUBPARTITIONS num]\n ]\n [(partition_definition [, partition_definition] ...)]\n\npartition_definition:\n PARTITION partition_name\n [VALUES {LESS THAN {(expr) | MAXVALUE} | IN (value_list)}]\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n [(subpartition_definition [, subpartition_definition] ...)]\n\nsubpartition_definition:\n SUBPARTITION logical_name\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n\nselect_statement:\n [IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)\n\nCREATE TABLE creates a table with the given name. You must have the\nCREATE privilege for the table.\n\nRules for allowable table names are given in\nhttp://dev.mysql.com/doc/refman/5.1/en/identifiers.html. By default,\nthe table is created in the default database. An error occurs if the\ntable exists, if there is no default database, or if the database does\nnot exist.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (464,17,'>','Syntax:\n>\n\nGreater than:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 > 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (465,19,'ANALYZE TABLE','Syntax:\nANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n\nANALYZE TABLE analyzes and stores the key distribution for a table.\nDuring the analysis, the table is locked with a read lock for MyISAM.\nFor InnoDB the table is locked with a write lock. This statement works\nwith MyISAM, and InnoDB tables. For MyISAM tables, this statement is\nequivalent to using myisamchk --analyze.\n\nFor more information on how the analysis works within InnoDB, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html.\n\nMy… uses the stored key distribution to decide the order in which\ntables should be joined when you perform a join on something other than\na constant. In addition, key distributions can be used when deciding\nwhich indexes to use for a specific table within a query.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, ANALYZE TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... ANALYZE PARTITION to analyze one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (466,30,'MICROSECOND','Syntax:\nMICROSECOND(expr)\n\nReturns the microseconds from the time or datetime expression expr as a\nnumber in the range from 0 to 999999.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MICROSECOND(\'12:00:00.123456\');\n -> 123456\nmysql> SELECT MICROSECOND(\'2009-12-31 23:59:59.000010\');\n -> 10\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (467,37,'CONSTRAINT','InnoDB supports foreign key constraints. The syntax for a foreign key\nconstraint definition in InnoDB looks like this:\n\n[CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name, ...)\n REFERENCES tbl_name (index_col_name,...)\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html\…','CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,\n price DECIMAL,\n PRIMARY KEY(category, id)) ENGINE=INNODB;\nCREATE TABLE customer (id INT NOT NULL,\n PRIMARY KEY (id)) ENGINE=INNODB;\nCREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,\n product_category INT NOT NULL,\n product_id INT NOT NULL,\n customer_id INT NOT NULL,\n PRIMARY KEY(no),\n INDEX (product_category, product_id),\n FOREIGN KEY (product_category, product_id)\n REFERENCES product(category, id)\n ON UPDATE CASCADE ON DELETE RESTRICT,\n INDEX (customer_id),\n FOREIGN KEY (customer_id)\n REFERENCES customer(id)) ENGINE=INNODB;\n','http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (468,37,'CREATE SERVER','Syntax:\nCREATE SERVER server_name\n FOREIGN DATA WRAPPER wrapper_name\n OPTIONS (option [, option] ...)\n\noption:\n { HOST character-literal\n | DATABASE character-literal\n | USER character-literal\n | PASSWORD character-literal\n | SOCKET character-literal\n | OWNER character-literal\n | PORT numeric-literal }\n\nThis statement creates the definition of a server for use with the\nFEDERATED storage engine. The CREATE SERVER statement creates a new row\nwithin the servers table within the mysql database. This statement\nrequires the SUPER privilege.\n\nThe server_name should be a unique reference to the server. Server\ndefinitions are global within the scope of the server, it is not\npossible to qualify the server definition to a specific database.\nserver_name has a maximum length of 64 characters (names longer than 64\ncharacters are silently truncated), and is case insensitive. You may\nspecify the name as a quoted string.\n\nThe wrapper_name should be mysql, and may be quoted with single quotes.\nOther values for wrapper_name are not currently supported.\n\nFor each option you must specify either a character literal or numeric\nliteral. Character literals are UTF-8, support a maximum length of 64\ncharacters and default to a blank (empty) string. String literals are\nsilently truncated to 64 characters. Numeric literals must be a number\nbetween 0 and 9999, default value is 0.\n\n*Note*: Note that the OWNER option is currently not applied, and has no\neffect on the ownership or operation of the server connection that is\ncreated.\n\nThe CREATE SERVER statement creates an entry in the mysql.server table\nthat can later be used with the CREATE TABLE statement when creating a\nFEDERATED table. The options that you specify will be used to populate\nthe columns in the mysql.server table. The table columns are\nServer_name, Host, Db, Username, Password, Port and Socket.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-server.html\n\n','CREATE SERVER s\nFOREIGN DATA WRAPPER mysql\nOPTIONS (USER \'Remote\', HOST \'192.168.1.106\', DATABASE \'test\');\n','http://dev.mysql.com/doc/refman/5.1/en/create-server.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (469,35,'FIELD','Syntax:\nFIELD(str,str1,str2,str3,...)\n\nReturns the index (position) of str in the str1, str2, str3, ... list.\nReturns 0 if str is not found.\n\nIf all arguments to FIELD() are strings, all arguments are compared as\nstrings. If all arguments are numbers, they are compared as numbers.\nOtherwise, the arguments are compared as double.\n\nIf str is NULL, the return value is 0 because NULL fails equality\ncomparison with any value. FIELD() is the complement of ELT().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FIELD(\'ej\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 2\nmysql> SELECT FIELD(\'fo\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (470,30,'MAKETIME','Syntax:\nMAKETIME(hour,minute,second)\n\nReturns a time value calculated from the hour, minute, and second\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MAKETIME(12,15,30);\n -> \'12:15:30\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (471,30,'CURDATE','Syntax:\nCURDATE()\n\nReturns the current date as a value in \'YYYY-MM-DD\' or YYYYMMDD format,\ndepending on whether the function is used in a string or numeric\ncontext.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CURDATE();\n -> \'2008-06-13\'\nmysql> SELECT CURDATE() + 0;\n -> 20080613\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (472,9,'SET PASSWORD','Syntax:\nSET PASSWORD [FOR user] =\n {\n PASSWORD(\'some password\')\n | OLD_PASSWORD(\'some password\')\n | \'encrypted password\'\n }\n\nThe SET PASSWORD statement assigns a password to an existing MySQL user\naccount.\n\nIf the password is specified using the PASSWORD() or OLD_PASSWORD()\nfunction, the literal text of the password should be given. If the\npassword is specified without using either function, the password\nshould be the already-encrypted password value as returned by\nPASSWORD().\n\nWith no FOR clause, this statement sets the password for the current\nuser. Any client that has connected to the server using a non-anonymous\naccount can change the password for that account.\n\nWith a FOR clause, this statement sets the password for a specific\naccount on the current server host. Only clients that have the UPDATE\nprivilege for the mysql database can do this. The user value should be\ngiven in user_name@host_name format, where user_name and host_name are\nexactly as they are listed in the User and Host columns of the\nmysql.user table entry. For example, if you had an entry with User and\nHost column values of \'bob\' and \'%.loc.gov\', you would write the\nstatement like this:\n\nSET PASSWORD FOR \'bob\'@\'%.loc.gov\' = PASSWORD(\'newpass\');\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-password.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-password.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (473,37,'ALTER TABLESPACE','Syntax:\nALTER TABLESPACE tablespace_name\n {ADD|DROP} DATAFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement can be used either to add a new data file, or to drop a\ndata file from a tablespace.\n\nThe ADD DATAFILE variant allows you to specify an initial size using an\nINITIAL_SIZE clause, where size is measured in bytes; the default value\nis 128M (128 megabytes). You may optionally follow this integer value\nwith a one-letter abbreviation for an order of magnitude, similar to\nthose used in my.cnf. Generally, this is one of the letters M (for\nmegabytes) or G (for gigabytes).\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an data file with the same name, or an undo log\nfile and a with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for data files could not be longer than 128 characters.\n(Bug#31770 (http://bugs.mysql.com/31770))\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nOnce a data file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using additional ALTER\nTABLESPACE ... ADD DATAFILE statements.\n\nUsing DROP DATAFILE with ALTER TABLESPACE drops the data file\n\'file_name\' from the tablespace. This file must already have been added\nto the tablespace using CREATE TABLESPACE or ALTER TABLESPACE;\notherwise an error will result.\n\nBoth ALTER TABLESPACE ... ADD DATAFILE and ALTER TABLESPACE ... DROP\nDATAFILE require an ENGINE clause which specifies the storage engine\nused by the tablespace. In MySQL 5.1, the only accepted values for\nengine_name are NDB and NDBCLUSTER.\n\nWAIT is parsed but otherwise ignored, and so has no effect in MySQL\n5.1. It is intended for future expansion.\n\nWhen ALTER TABLESPACE ... ADD DATAFILE is used with ENGINE = NDB, a\ndata file is created on each Cluster data node. You can verify that the\ndata files were created and obtain information about them by querying\nthe INFORMATION_SCHEMA.FILES table. For example, the following query\nshows all data files belonging to the tablespace named newts:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA \n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+--------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+--------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=4 |\n+--------------------+--------------+----------------+\n2 rows in set (0.03 sec)\n\nSee http://dev.mysql.com/doc/refman/5.1/en/files-table.html.\n\nALTER TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (474,20,'ENUM','ENUM(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nAn enumeration. A string object that can have only one value, chosen\nfrom the list of values \'value1\', \'value2\', ..., NULL or the special \'\'\nerror value. An ENUM column can have a maximum of 65,535 distinct\nvalues. ENUM values are represented internally as integers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (475,7,'IF FUNCTION','Syntax:\nIF(expr1,expr2,expr3)\n\nIf expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns\nexpr2; otherwise it returns expr3. IF() returns a numeric or string\nvalue, depending on the context in which it is used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT IF(1>2,2,3);\n -> 3\nmysql> SELECT IF(1<2,\'yes\',\'no\');\n -> \'yes\'\nmysql> SELECT IF(STRCMP(\'test\',\'test1\'),\'no\',\'yes\');\n -> \'no\'\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (476,15,'DATABASE','Syntax:\nDATABASE()\n\nReturns the default (current) database name as a string in the utf8\ncharacter set. If there is no default database, DATABASE() returns\nNULL. Within a stored routine, the default database is the database\nthat the routine is associated with, which is not necessarily the same\nas the database that is the default in the calling context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT DATABASE();\n -> \'test\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (477,31,'POINTFROMWKB','PointFromWKB(wkb[,srid])\n\nConstructs a POINT value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (478,4,'POWER','Syntax:\nPOWER(X,Y)\n\nThis is a synonym for POW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (479,4,'ATAN','Syntax:\nATAN(X)\n\nReturns the arc tangent of X, that is, the value whose tangent is X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(2);\n -> 1.1071487177941\nmysql> SELECT ATAN(-2);\n -> -1.1071487177941\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (480,35,'STRCMP','Syntax:\nSTRCMP(expr1,expr2)\n\nSTRCMP() returns 0 if the strings are the same, -1 if the first\nargument is smaller than the second according to the current sort\norder, and 1 otherwise.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','mysql> SELECT STRCMP(\'text\', \'text2\');\n -> -1\nmysql> SELECT STRCMP(\'text2\', \'text\');\n -> 1\nmysql> SELECT STRCMP(\'text\', \'text\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (481,26,'INSERT DELAYED','Syntax:\nINSERT DELAYED ...\n\nThe DELAYED option for the INSERT statement is a MySQL extension to\nstandard SQL that is very useful if you have clients that cannot or\nneed not wait for the INSERT to complete. This is a common situation\nwhen you use MySQL for logging and you also periodically run SELECT and\nUPDATE statements that take a long time to complete.\n\nWhen a client uses INSERT DELAYED, it gets an okay from the server at\nonce, and the row is queued to be inserted when the table is not in use\nby any other thread.\n\nAnother major benefit of using INSERT DELAYED is that inserts from many\nclients are bundled together and written in one block. This is much\nfaster than performing many separate inserts.\n\nNote that INSERT DELAYED is slower than a normal INSERT if the table is\nnot otherwise in use. There is also the additional overhead for the\nserver to handle a separate thread for each table for which there are\ndelayed rows. This means that you should use INSERT DELAYED only when\nyou are really sure that you need it.\n\nThe queued rows are held only in memory until they are inserted into\nthe table. This means that if you terminate mysqld forcibly (for\nexample, with kill -9) or if mysqld dies unexpectedly, any queued rows\nthat have not been written to disk are lost.\n\nThere are some constraints on the use of DELAYED:\n\no INSERT DELAYED works only with MyISAM, MEMORY, ARCHIVE, and (as of\n MySQL 5.1.19) BLACKHOLE tables. See\n http://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html,\n http://dev.mysql.com/doc/refman/5.1/en/memory-storage-engine.html,\n http://dev.mysql.com/doc/refman/5.1/en/archive-storage-engine.html,\n and\n http://dev.mysql.com/doc/refman/5.1/en/blackhole-storage-engine.html.\n\no For MyISAM tables, if there are no free blocks in the middle of the\n data file, concurrent SELECT and INSERT statements are supported.\n Under these circumstances, you very seldom need to use INSERT DELAYED\n with MyISAM.\n\no INSERT DELAYED should be used only for INSERT statements that specify\n value lists. The server ignores DELAYED for INSERT ... SELECT or\n INSERT ... ON DUPLICATE KEY UPDATE statements.\n\no Because the INSERT DELAYED statement returns immediately, before the\n rows are inserted, you cannot use LAST_INSERT_ID() to get the\n AUTO_INCREMENT value that the statement might generate.\n\no DELAYED rows are not visible to SELECT statements until they actually\n have been inserted.\n\no DELAYED is ignored on slave replication servers, so that INSERT\n DELAYED is treated as a normal INSERT on slaves. This is because\n DELAYED could cause the slave to have different data than the master.\n\no Pending INSERT DELAYED statements are lost if a table is write locked\n and ALTER TABLE is used to modify the table structure.\n\no INSERT DELAYED is not supported for views.\n\no INSERT DELAYED is not supported for partitioned tables.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (482,26,'SHOW PROFILE','Syntax:\nSHOW PROFILES\n\nThe SHOW PROFILE statement display profiling information that indicates\nresource usage for statements executed during the course of the current\nsession. It is used together with SHOW PROFILES; see [HELP SHOW\nPROFILES].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-profile.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-profile.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (483,26,'SHOW PROCEDURE CODE','Syntax:\nSHOW PROCEDURE CODE proc_name\n\nThis statement is a MySQL extension that is available only for servers\nthat have been built with debugging support. It displays a\nrepresentation of the internal implementation of the named stored\nprocedure. A similar statement, SHOW FUNCTION CODE, displays\ninformation about stored functions (see [HELP SHOW FUNCTION CODE]).\n\nBoth statements require that you be the owner of the routine or have\nSELECT access to the mysql.proc table.\n\nIf the named routine is available, each statement produces a result\nset. Each row in the result set corresponds to one "instruction" in the\nroutine. The first column is Pos, which is an ordinal number beginning\nwith 0. The second column is Instruction, which contains an SQL\nstatement (usually changed from the original source), or a directive\nwhich has meaning only to the stored-routine handler.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-procedure-code.html\n\n','mysql> DELIMITER //\nmysql> CREATE PROCEDURE p1 ()\n -> BEGIN\n -> DECLARE fanta INT DEFAULT 55;\n -> DROP TABLE t2;\n -> LOOP\n -> INSERT INTO t3 VALUES (fanta);\n -> END LOOP;\n -> END//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SHOW PROCEDURE CODE p1//\n+-----+----------------------------------------+\n| Pos | Instruction |\n+-----+----------------------------------------+\n| 0 | set fanta@0 55 |\n| 1 | stmt 9 "DROP TABLE t2" |\n| 2 | stmt 5 "INSERT INTO t3 VALUES (fanta)" |\n| 3 | jump 2 |\n+-----+----------------------------------------+\n4 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/show-procedure-code.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (484,20,'MEDIUMTEXT','MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 16,777,215 (224 - 1) characters.\nThe effective maximum length is less if the value contains multi-byte\ncharacters. Each MEDIUMTEXT value is stored using a three-byte length\nprefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (485,4,'LN','Syntax:\nLN(X)\n\nReturns the natural logarithm of X; that is, the base-e logarithm of X.\nIf X is less than or equal to 0, then NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LN(2);\n -> 0.69314718055995\nmysql> SELECT LN(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (486,22,'RETURN','Syntax:\nRETURN expr\n\nThe RETURN statement terminates execution of a stored function and\nreturns the value expr to the function caller. There must be at least\none RETURN statement in a stored function. There may be more than one\nif the function has multiple exit points.\n\nThis statement is not used in stored procedures, triggers, or events.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/return.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/return.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (487,26,'SHOW COLLATION','Syntax:\nSHOW COLLATION\n [LIKE \'pattern\' | WHERE expr]\n\nThe output from SHOW COLLATION includes all available character sets.\nThe LIKE clause, if present, indicates which collation names to match.\nThe WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. For example:\n\nmysql> SHOW COLLATION LIKE \'latin1%\';\n+-------------------+---------+----+---------+----------+---------+\n| Collation | Charset | Id | Default | Compiled | Sortlen |\n+-------------------+---------+----+---------+----------+---------+\n| latin1_german1_ci | latin1 | 5 | | | 0 |\n| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 0 |\n| latin1_danish_ci | latin1 | 15 | | | 0 |\n| latin1_german2_ci | latin1 | 31 | | Yes | 2 |\n| latin1_bin | latin1 | 47 | | Yes | 0 |\n| latin1_general_ci | latin1 | 48 | | | 0 |\n| latin1_general_cs | latin1 | 49 | | | 0 |\n| latin1_spanish_ci | latin1 | 94 | | | 0 |\n+-------------------+---------+----+---------+----------+---------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-collation.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-collation.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (488,4,'LOG','Syntax:\nLOG(X), LOG(B,X)\n\nIf called with one parameter, this function returns the natural\nlogarithm of X. If X is less than or equal to 0, then NULL is returned.\n\nThe inverse of this function (when called with a single argument) is\nthe EXP() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG(2);\n -> 0.69314718055995\nmysql> SELECT LOG(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (489,26,'SET SQL_LOG_BIN','Syntax:\nSET sql_log_bin = {0|1}\n\nDisables or enables binary logging for the current connection\n(sql_log_bin is a session variable) if the client has the SUPER\nprivilege. The statement is refused with an error if the client does\nnot have that privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-sql-log-bin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-sql-log-bin.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (490,17,'!=','Syntax:\n<>, !=\n\nNot equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT \'.01\' <> \'0.01\';\n -> 1\nmysql> SELECT .01 <> \'0.01\';\n -> 0\nmysql> SELECT \'zapp\' <> \'zappp\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (491,22,'WHILE','Syntax:\n[begin_label:] WHILE search_condition DO\n statement_list\nEND WHILE [end_label]\n\nThe statement list within a WHILE statement is repeated as long as the\nsearch_condition is true. statement_list consists of one or more\nstatements.\n\nA WHILE statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/while-statement.html\n\n','CREATE PROCEDURE dowhile()\nBEGIN\n DECLARE v1 INT DEFAULT 5;\n\n WHILE v1 > 0 DO\n ...\n SET v1 = v1 - 1;\n END WHILE;\nEND\n','http://dev.mysql.com/doc/refman/5.1/en/while-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (492,11,'AES_DECRYPT','Syntax:\nAES_DECRYPT(crypt_str,key_str)\n\nThis function allows decryption of data using the official AES\n(Advanced Encryption Standard) algorithm. For more information, see the\ndescription of AES_ENCRYPT().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (493,30,'DAYNAME','Syntax:\nDAYNAME(date)\n\nReturns the name of the weekday for date. As of MySQL 5.1.12, the\nlanguage used for the name is controlled by the value of the\nlc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.1/en/locale-support.html).\n\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYNAME(\'2007-02-03\');\n -> \'Saturday\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (494,15,'COERCIBILITY','Syntax:\nCOERCIBILITY(str)\n\nReturns the collation coercibility value of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT COERCIBILITY(\'abc\' COLLATE latin1_swedish_ci);\n -> 0\nmysql> SELECT COERCIBILITY(USER());\n -> 3\nmysql> SELECT COERCIBILITY(\'abc\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (495,20,'INT','INT[(M)] [UNSIGNED] [ZEROFILL]\n\nA normal-size integer. The signed range is -2147483648 to 2147483647.\nThe unsigned range is 0 to 4294967295.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (496,12,'GLENGTH','GLength(ls)\n\nReturns as a double-precision number the length of the LineString value\nls in its associated spatial reference.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT GLength(GeomFromText(@ls));\n+----------------------------+\n| GLength(GeomFromText(@ls)) |\n+----------------------------+\n| 2.8284271247462 |\n+----------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (497,4,'RADIANS','Syntax:\nRADIANS(X)\n\nReturns the argument X, converted from degrees to radians. (Note that\nπ radians equals 180 degrees.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT RADIANS(90);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (498,15,'COLLATION','Syntax:\nCOLLATION(str)\n\nReturns the collation of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT COLLATION(\'abc\');\n -> \'latin1_swedish_ci\'\nmysql> SELECT COLLATION(_utf8\'abc\');\n -> \'utf8_general_ci\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (499,17,'COALESCE','Syntax:\nCOALESCE(value,...)\n\nReturns the first non-NULL value in the list, or NULL if there are no\nnon-NULL values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT COALESCE(NULL,1);\n -> 1\nmysql> SELECT COALESCE(NULL,NULL,NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (500,15,'VERSION','Syntax:\nVERSION()\n\nReturns a string that indicates the MySQL server version. The string\nuses the utf8 character set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT VERSION();\n -> \'5.1.35-standard\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (501,35,'MAKE_SET','Syntax:\nMAKE_SET(bits,str1,str2,...)\n\nReturns a set value (a string containing substrings separated by ","\ncharacters) consisting of the strings that have the corresponding bit\nin bits set. str1 corresponds to bit 0, str2 to bit 1, and so on. NULL\nvalues in str1, str2, ... are not appended to the result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT MAKE_SET(1,\'a\',\'b\',\'c\');\n -> \'a\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',\'world\');\n -> \'hello,world\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',NULL,\'world\');\n -> \'hello\'\nmysql> SELECT MAKE_SET(0,\'a\',\'b\',\'c\');\n -> \'\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (502,35,'FIND_IN_SET','Syntax:\nFIND_IN_SET(str,strlist)\n\nReturns a value in the range of 1 to N if the string str is in the\nstring list strlist consisting of N substrings. A string list is a\nstring composed of substrings separated by "," characters. If the first\nargument is a constant string and the second is a column of type SET,\nthe FIND_IN_SET() function is optimized to use bit arithmetic. Returns\n0 if str is not in strlist or if strlist is the empty string. Returns\nNULL if either argument is NULL. This function does not work properly\nif the first argument contains a comma (",") character.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FIND_IN_SET(\'b\',\'a,b,c,d\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (167,25,'SHOW EVENTS','Syntax:\nSHOW EVENTS [{FROM | IN} schema_name]\n [LIKE \'pattern\' | WHERE expr]\n\nIn its simplest form, SHOW EVENTS lists all of the events in the\ncurrent schema:\n\nmysql> SELECT CURRENT_USER(), SCHEMA();\n+----------------+----------+\n| CURRENT_USER() | SCHEMA() |\n+----------------+----------+\n| jon@ghidora | myschema |\n+----------------+----------+\n1 row in set (0.00 sec)\n\nmysql> SHOW EVENTS\\G\n*************************** 1. row ***************************\n Db: myschema\n Name: e_daily\n Definer: jon@ghidora\n Time zone: SYSTEM\n Type: RECURRING\n Execute at: NULL\n Interval value: 10\n Interval field: SECOND\n Starts: 2006-02-09 10:41:23\n Ends: 0000-00-00 00:00:00\n Status: ENABLED\n Originator: 0\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\nThe LIKE clause, if present, indicates which event names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-events.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-events.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (168,15,'CHARSET','Syntax:\nCHARSET(str)\n\nReturns the character set of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT CHARSET(\'abc\');\n -> \'latin1\'\nmysql> SELECT CHARSET(CONVERT(\'abc\' USING utf8));\n -> \'utf8\'\nmysql> SELECT CHARSET(USER());\n -> \'utf8\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (169,30,'SUBDATE','Syntax:\nSUBDATE(date,INTERVAL expr unit), SUBDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, SUBDATE()\nis a synonym for DATE_SUB(). For information on the INTERVAL unit\nargument, see the discussion for DATE_ADD().\n\nmysql> SELECT DATE_SUB(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\nmysql> SELECT SUBDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\n\nThe second form allows the use of an integer value for days. In such\ncases, it is interpreted as the number of days to be subtracted from\nthe date or datetime expression expr.\n\nmysql> SELECT SUBDATE(\'2008-01-02 12:00:00\', 31);\n -> \'2007-12-02 12:00:00\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (170,30,'DAYOFYEAR','Syntax:\nDAYOFYEAR(date)\n\nReturns the day of the year for date, in the range 1 to 366.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFYEAR(\'2007-02-03\');\n -> 34\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (171,20,'LONGTEXT','LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 4,294,967,295 or 4GB (232 - 1)\ncharacters. The effective maximum length is less if the value contains\nmulti-byte characters. The effective maximum length of LONGTEXT columns\nalso depends on the configured maximum packet size in the client/server\nprotocol and available memory. Each LONGTEXT value is stored using a\nfour-byte length prefix that indicates the number of bytes in the\nvalue.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (172,4,'%','Syntax:\nN % M\n\nModulo operation. Returns the remainder of N divided by M. For more\ninformation, see the description for the MOD() function in\nhttp://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html.\n\n…: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (173,25,'KILL','Syntax:\nKILL [CONNECTION | QUERY] thread_id\n\nEach connection to mysqld runs in a separate thread. You can see which\nthreads are running with the SHOW PROCESSLIST statement and kill a\nthread with the KILL thread_id statement.\n\nKILL allows the optional CONNECTION or QUERY modifier:\n\no KILL CONNECTION is the same as KILL with no modifier: It terminates\n the connection associated with the given thread_id.\n\no KILL QUERY terminates the statement that the connection is currently\n executing, but leaves the connection itself intact.\n\nIf you have the PROCESS privilege, you can see all threads. If you have\nthe SUPER privilege, you can kill all threads and statements.\nOtherwise, you can see and kill only your own threads and statements.\n\nYou can also use the mysqladmin processlist and mysqladmin kill\ncommands to examine and kill threads.\n\n*Note*: You cannot use KILL with the Embedded MySQL Server library,\nbecause the embedded server merely runs inside the threads of the host\napplication. It does not create any connection threads of its own.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/kill.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/kill.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (174,29,'DISJOINT','Disjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially disjoint from (does\nnot intersect) g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (175,3,'ASTEXT','AsText(g), AsWKT(g)\n\nConverts a value in internal geometry format to its WKT representation\nand returns the string result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…','mysql> SET @g = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(GeomFromText(@g));\n+--------------------------+\n| AsText(GeomFromText(@g)) |\n+--------------------------+\n| LINESTRING(1 1,2 2,3 3) |\n+--------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (176,35,'LPAD','Syntax:\nLPAD(str,len,padstr)\n\nReturns the string str, left-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters.\n\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LPAD(\'hi\',4,\'??\');\n -> \'??hi\'\nmysql> SELECT LPAD(\'hi\',1,\'??\');\n -> \'h\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (177,19,'RESTORE TABLE','Syntax:\nRESTORE TABLE tbl_name [, tbl_name] ... FROM \'/path/to/backup/directory\'\n\nRESTORE TABLE restores the table or tables from a backup that was made\nwith BACKUP TABLE. The directory should be specified as a full path\nname.\n\nExisting tables are not overwritten; if you try to restore over an\nexisting table, an error occurs. Just as for BACKUP TABLE, RESTORE\nTABLE currently works only for MyISAM tables. Restored tables are not\nreplicated from master to slave.\n\nThe backup for each table consists of its .frm format file and .MYD\ndata file. The restore operation restores those files, and then uses\nthem to rebuild the .MYI index file. Restoring takes longer than\nbacking up due to the need to rebuild the indexes. The more indexes the\ntable has, the longer it takes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/restore-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/restore-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (178,22,'DECLARE CONDITION','Syntax:\nDECLARE condition_name CONDITION FOR condition_value\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | mysql_error_code\n\nThe DECLARE ... CONDITION statement defines a named error condition. It\nspecifies a condition that needs specific handling and associates a\nname with that condition. The name can be referred to in a subsequence\nDECLARE ... HANDLER statement. See [HELP DECLARE HANDLER].\n\nA condition_value for DECLARE ... CONDITION can be an SQLSTATE value (a\n5-character string literal) or a MySQL error code (a number). You\nshould not use SQLSTATE value \'00000\' or MySQL error code 0, because\nthose indicate sucess rather than an error condition. For a list of\nSQLSTATE values and MySQL error codes, see\nhttp://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html.\n\n…: http://dev.mysql.com/doc/refman/5.1/en/declare-condition.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-condition.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (179,29,'OVERLAPS','Overlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially overlaps g2. The term\nspatially overlaps is used if two geometries intersect and their\nintersection results in a geometry of the same dimension but not equal\nto either of the given geometries.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (180,25,'SET GLOBAL SQL_SLAVE_SKIP_COUNTER','Syntax:\nSET GLOBAL SQL_SLAVE_SKIP_COUNTER = N\n\nThis statement skips the next N events from the master. This is useful\nfor recovering from replication stops caused by a statement.\n\nThis statement is valid only when the slave thread is not running.\nOtherwise, it produces an error.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-global-sql-slave-skip-counter.ht…','','http://dev.mysql.com/doc/refman/5.1/en/set-global-sql-slave-skip-counter.ht…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (181,24,'NUMGEOMETRIES','NumGeometries(gc)\n\nReturns the number of geometries in the GeometryCollection value gc.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT NumGeometries(GeomFromText(@gc));\n+----------------------------------+\n| NumGeometries(GeomFromText(@gc)) |\n+----------------------------------+\n| 2 |\n+----------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (182,30,'MONTHNAME','Syntax:\nMONTHNAME(date)\n\nReturns the full name of the month for date. As of MySQL 5.1.12, the\nlanguage used for the name is controlled by the value of the\nlc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.1/en/locale-support.html).\n\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MONTHNAME(\'2008-02-03\');\n -> \'February\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (183,36,'PROCEDURE ANALYSE','Syntax:\nANALYSE([max_elements[,max_memory]])\n\nANALYSE() is defined in the sql/sql_analyse.cc source file, which\nserves as an example of how to create a procedure for use with the\nPROCEDURE clause of SELECT statements. ANALYSE() is built in and is\navailable by default; other procedures can be created using the format\ndemonstrated in the source file.\n\nANALYSE() examines the result from a query and returns an analysis of\nthe results that suggests optimal data types for each column that may\nhelp reduce table sizes. To obtain this analysis, append PROCEDURE\nANALYSE to the end of a SELECT statement:\n\nSELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])\n\nFor example:\n\nSELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);\n\nThe results show some statistics for the values returned by the query,\nand propose an optimal data type for the columns. This can be helpful\nfor checking your existing tables, or after importing new data. You may\nneed to try different settings for the arguments so that PROCEDURE\nANALYSE() does not suggest the ENUM data type when it is not\nappropriate.\n\nThe arguments are optional and are used as follows:\n\no max_elements (default 256) is the maximum number of distinct values\n that ANALYSE() notices per column. This is used by ANALYSE() to check\n whether the optimal data type should be of type ENUM; if there are\n more than max_elements distinct values, then ENUM is not a suggested\n type.\n\no max_memory (default 8192) is the maximum amount of memory that\n ANALYSE() should allocate per column while trying to find all\n distinct values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/procedure-analyse.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/procedure-analyse.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (184,25,'CHANGE MASTER TO','Syntax:\nCHANGE MASTER TO master_def [, master_def] ...\n\nmaster_def:\n MASTER_BIND = \'interface_name\'\n | MASTER_HOST = \'host_name\'\n | MASTER_USER = \'user_name\'\n | MASTER_PASSWORD = \'password\'\n | MASTER_PORT = port_num\n | MASTER_CONNECT_RETRY = interval\n | MASTER_HEARTBEAT_PERIOD = interval\n | MASTER_LOG_FILE = \'master_log_name\'\n | MASTER_LOG_POS = master_log_pos\n | RELAY_LOG_FILE = \'relay_log_name\'\n | RELAY_LOG_POS = relay_log_pos\n | MASTER_SSL = {0|1}\n | MASTER_SSL_CA = \'ca_file_name\'\n | MASTER_SSL_CAPATH = \'ca_directory_name\'\n | MASTER_SSL_CERT = \'cert_file_name\'\n | MASTER_SSL_KEY = \'key_file_name\'\n | MASTER_SSL_CIPHER = \'cipher_list\'\n | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}\n\nCHANGE MASTER TO changes the parameters that the slave server uses for\nconnecting to and communicating with the master server. It also updates\nthe contents of the master.info and relay-log.info files.\n\nMASTER_USER, MASTER_PASSWORD, MASTER_SSL, MASTER_SSL_CA,\nMASTER_SSL_CAPATH, MASTER_SSL_CERT, MASTER_SSL_KEY, MASTER_SSL_CIPHER,\nand MASTER_SSL_VERIFY_SERVER_CERT provide information to the slave\nabout how to connect to its master. MASTER_SSL_VERIFY_SERVER_CERT was\nadded in MySQL 5.1.18. It is used as described for the\n--ssl-verify-server-cert option in\nhttp://dev.mysql.com/doc/refman/5.1/en/ssl-options.html.\n\nMASTER_CONN… specifies how many seconds to wait between connect\nretries. The default is 60. The number of reconnection attempts is\nlimited by the --master-retry-count server option; for more\ninformation, see\nhttp://dev.mysql.com/doc/refman/5.1/en/replication-options.html.\n\nThe SSL options (MASTER_SSL, MASTER_SSL_CA, MASTER_SSL_CAPATH,\nMASTER_SSL_CERT, MASTER_SSL_KEY, MASTER_SSL_CIPHER), and\nMASTER_SSL_VERIFY_SERVER_CERT can be changed even on slaves that are\ncompiled without SSL support. They are saved to the master.info file,\nbut are ignored unless you use a server that has SSL support enabled.\n\nIf you don\'t specify a given parameter, it keeps its old value, except\nas indicated in the following discussion. For example, if the password\nto connect to your MySQL master has changed, you just need to issue\nthese statements to tell the slave about the new password:\n\nSTOP SLAVE; -- if replication was running\nCHANGE MASTER TO MASTER_PASSWORD=\'new3cret\';\nSTART SLAVE; -- if you want to restart replication\n\nThere is no need to specify the parameters that do not change (host,\nport, user, and so forth).\n\nMASTER_HOST and MASTER_PORT are the host name (or IP address) of the\nmaster host and its TCP/IP port.\n\nThe next two options are available only in MySQL Cluster NDB 6.3 and\n6.4; they are not supported in mainline MySQL 5.1:\n\no MASTER_BIND is for use on replication slaves having multiple network\n interfaces, and determines which of the slave\'s network interfaces is\n chosen for connecting to the master. It is also possible to determine\n which network interface is to be used in such cases by starting the\n slave mysqld process with the --master-bind option.\n\n The ability to bind a replication slave to specific network interface\n was added in MySQL Cluster NDB 6.3.4.\n\no MASTER_HEARTBEAT_PERIOD is used to set the interval in seconds\n between replication heartbeats. Whenever the master\'s binlog is\n updated with an event, the waiting period for the next heartbeat is\n reset. interval is a decimal value having the range 0 to 4294967\n seconds and a resolution to hundredths of a second; the smallest\n nonzero value is 0.001. Heartbeats are sent by the master only if\n there are no unsent events in the binlog file for a period longer\n than interval.\n\n Setting interval to 0 disables heartbeats altogether. The default\n value for interval is equal to the value of slave_net_timeout divided\n by 2.\n\n *Note*: Setting @@global.slave_net_timeout to a value less than that\n of the current heartbeat interval results in a warning being issued.\n\n Issuing RESET SLAVE resets the heartbeat interval to the default.\n\n MASTER_HEARTBEAT_PERIOD was added in MySQL Cluster NDB 6.3.4.\n\n*Note*: Replication cannot use Unix socket files. You must be able to\nconnect to the master MySQL server using TCP/IP.\n\nIf you specify MASTER_HOST or MASTER_PORT, the slave assumes that the\nmaster server is different from before (even if you specify a host or\nport value that is the same as the current value.) In this case, the\nold values for the master binary log name and position are considered\nno longer applicable, so if you do not specify MASTER_LOG_FILE and\nMASTER_LOG_POS in the statement, MASTER_LOG_FILE=\'\' and\nMASTER_LOG_POS=4 are silently appended to it.\n\nSetting MASTER_HOST=\'\' --- that is, setting its value explicitly to an\nempty string --- is not the same as not setting it at all. Setting this\noption to an empty string causes START SLAVE subsequently to fail. This\nissue is addressed in MySQL 6.0. (Bug#28796\n(http://bugs.mysql.com/28796))\n\nMASTER_LOG_FILE and MASTER_LOG_POS are the coordinates at which the\nslave I/O thread should begin reading from the master the next time the\nthread starts. If you specify either of them, you cannot specify\nRELAY_LOG_FILE or RELAY_LOG_POS. If neither of MASTER_LOG_FILE or\nMASTER_LOG_POS are specified, the slave uses the last coordinates of\nthe slave SQL thread before CHANGE MASTER TO was issued. This ensures\nthat there is no discontinuity in replication, even if the slave SQL\nthread was late compared to the slave I/O thread, when you merely want\nto change, say, the password to use.\n\nCHANGE MASTER TO deletes all relay log files and starts a new one,\nunless you specify RELAY_LOG_FILE or RELAY_LOG_POS. In that case, relay\nlogs are kept; the relay_log_purge global variable is set silently to\n0.\n\nCHANGE MASTER TO is useful for setting up a slave when you have the\nsnapshot of the master and have recorded the log and the offset\ncorresponding to it. After loading the snapshot into the slave, you can\nrun CHANGE MASTER TO MASTER_LOG_FILE=\'log_name_on_master\',\nMASTER_LOG_POS=log_offset_on_master on the slave.\n\nThe following example changes the master and master\'s binary log\ncoordinates. This is used when you want to set up the slave to\nreplicate the master:\n\nCHANGE MASTER TO\n MASTER_HOST=\'master2.mycompany.com\',\n MASTER_USER=\'replication\',\n MASTER_PASSWORD=\'bigs3cret\',\n MASTER_PORT=3306,\n MASTER_LOG_FILE=\'master2-bin.001\',\n MASTER_LOG_POS=4,\n MASTER_CONNECT_RETRY=10;\n\nThe next example shows an operation that is less frequently employed.\nIt is used when the slave has relay logs that you want it to execute\nagain for some reason. To do this, the master need not be reachable.\nYou need only use CHANGE MASTER TO and start the SQL thread (START\nSLAVE SQL_THREAD):\n\nCHANGE MASTER TO\n RELAY_LOG_FILE=\'slave-relay-bin.006\',\n RELAY_LOG_POS=4025;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/change-master-to.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/change-master-to.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (185,37,'DROP DATABASE','Syntax:\nDROP {DATABASE | SCHEMA} [IF EXISTS] db_name\n\nDROP DATABASE drops all tables in the database and deletes the\ndatabase. Be very careful with this statement! To use DROP DATABASE,\nyou need the DROP privilege on the database. DROP SCHEMA is a synonym\nfor DROP DATABASE.\n\n*Important*: When a database is dropped, user privileges on the\ndatabase are not automatically dropped. See [HELP GRANT].\n\nIF EXISTS is used to prevent an error from occurring if the database\ndoes not exist.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-database.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (186,6,'MBREQUAL','MBREqual(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 are the same.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (187,30,'TIMESTAMP FUNCTION','Syntax:\nTIMESTAMP(expr), TIMESTAMP(expr1,expr2)\n\nWith a single argument, this function returns the date or datetime\nexpression expr as a datetime value. With two arguments, it adds the\ntime expression expr2 to the date or datetime expression expr1 and\nreturns the result as a datetime value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMP(\'2003-12-31\');\n -> \'2003-12-31 00:00:00\'\nmysql> SELECT TIMESTAMP(\'2003-12-31 12:00:00\',\'12:00:00\');\n -> \'2004-01-01 00:00:00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (188,35,'CHARACTER_LENGTH','Syntax:\nCHARACTER_LENGTH(str)\n\nCHARACTER_LENGTH() is a synonym for CHAR_LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (189,25,'SHOW GRANTS','Syntax:\nSHOW GRANTS [FOR user]\n\nThis statement lists the GRANT statement or statements that must be\nissued to duplicate the privileges that are granted to a MySQL user\naccount. The account is named using the same format as for the GRANT\nstatement; for example, \'jeffrey\'@\'localhost\'. If you specify only the\nuser name part of the account name, a host name part of \'%\' is used.\nFor additional information about specifying account names, see [HELP\nGRANT].\n\nmysql> SHOW GRANTS FOR \'root\'@\'localhost\';\n+---------------------------------------------------------------------+\n| Grants for root@localhost |\n+---------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'localhost\' WITH GRANT OPTION |\n+---------------------------------------------------------------------+\n\nTo list the privileges granted to the account that you are using to\nconnect to the server, you can use any of the following statements:\n\nSHOW GRANTS;\nSHOW GRANTS FOR CURRENT_USER;\nSHOW GRANTS FOR CURRENT_USER();\n\nAs of MySQL 5.1.12, if SHOW GRANTS FOR CURRENT_USER (or any of the\nequivalent syntaxes) is used in DEFINER context, such as within a\nstored procedure that is defined with SQL SECURITY DEFINER), the grants\ndisplayed are those of the definer and not the invoker.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-grants.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-grants.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (190,25,'SHOW PRIVILEGES','Syntax:\nSHOW PRIVILEGES\n\nSHOW PRIVILEGES shows the list of system privileges that the MySQL\nserver supports. The exact list of privileges depends on the version of\nyour server.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-privileges.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-privileges.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (191,37,'CREATE TABLESPACE','Syntax:\nCREATE TABLESPACE tablespace_name\n ADD DATAFILE \'file_name\'\n USE LOGFILE GROUP logfile_group\n [EXTENT_SIZE [=] extent_size]\n [INITIAL_SIZE [=] initial_size]\n [AUTOEXTEND_SIZE [=] autoextend_size]\n [MAX_SIZE [=] max_size]\n [NODEGROUP [=] nodegroup_id]\n [WAIT]\n [COMMENT [=] comment_text]\n ENGINE [=] engine_name\n\nThis statement is used to create a tablespace, which can contain one or\nmore data files, providing storage space for tables. One data file is\ncreated and added to the tablespace using this statement. Additional\ndata files may be added to the tablespace by using the ALTER TABLESPACE\nstatement (see [HELP ALTER TABLESPACE]). For rules covering the naming\nof tablespaces, see\nhttp://dev.mysql.com/doc/refman/5.1/en/identifiers.html.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and a log file group with the same name, or a\ntablespace and a data file with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for data files could not be longer than 128 characters.\n(Bug#31770 (http://bugs.mysql.com/31770))\n\nA log file group of one or more UNDO log files must be assigned to the\ntablespace to be created with the USE LOGFILE GROUP clause.\nlogfile_group must be an existing log file group created with CREATE\nLOGFILE GROUP (see\nhttp://dev.mysql.com/doc/refman/5.1/en/create-logfile-group.html).\nMu… tablespaces may use the same log file group for UNDO logging.\n\nThe EXTENT_SIZE sets the size, in bytes, of the extents used by any\nfiles belonging to the tablespace. The default value is 1M. The minimum\nsize is 32K, and theoretical maximum is 2G, although the practical\nmaximum size depends on a number of factors. In most cases, changing\nthe extent size does not have any measurable effect on performance, and\nthe default value is recommended for all but the most unusual\nsituations.\n\nAn extent is a unit of disk space allocation. One extent is filled with\nas much data as that extent can contain before another extent is used.\nIn theory, up to 65,535 (64K) extents may used per data file; however,\nthe recommended maximum is 32,768 (32K). The recommended maximum size\nfor a single data file is 32G --- that is, 32K extents x 1 MB per\nextent. In addition, once an extent is allocated to a given partition,\nit cannot be used to store data from a different partition; an extent\ncannot store data from more than one partition. This means, for example\nthat a tablespace having a single datafile whose INITIAL_SIZE is 256 MB\nand whose EXTENT_SIZE is 128M has just two extents, and so can be used\nto store data from at most two different disk data table partitions.\n\nYou can see how many extents remain free in a given data file by\nquerying the INFORMATION_SCHEMA.FILES table, and so derive an estimate\nfor how much space remains free in the file. For further discussion and\nexamples, see http://dev.mysql.com/doc/refman/5.1/en/files-table.html.\n\nThe INITIAL_SIZE parameter sets the data file\'s total size in bytes.\nOnce the file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using ALTER TABLESPACE\n... ADD DATAFILE. See [HELP ALTER TABLESPACE].\n\nINITIAL_SIZE is optional; its default value is 128M.\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nWhen setting EXTENT_SIZE or INITIAL_SIZE (either or both), you may\noptionally follow the number with a one-letter abbreviation for an\norder of magnitude, similar to those used in my.cnf. Generally, this is\none of the letters M (for megabytes) or G (for gigabytes).\n\nAUTOEXTEND_SIZE, MAX_SIZE, NODEGROUP, WAIT, and COMMENT are parsed but\nignored, and so have no effect in MySQL 5.1. These options are intended\nfor future expansion.\n\nThe ENGINE parameter determines the storage engine which uses this\ntablespace, with engine_name being the name of the storage engine. In\nMySQL 5.1, engine_name must be one of the values NDB or NDBCLUSTER.\n\nWhen CREATE TABLESPACE is used with ENGINE = NDB, a tablespace and\nassociated data file are created on each Cluster data node. You can\nverify that the data files were created and obtain information about\nthem by querying the INFORMATION_SCHEMA.FILES table. For example:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA\n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+-------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+-------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n+--------------------+-------------+----------------+\n2 rows in set (0.01 sec)\n\n(See http://dev.mysql.com/doc/refman/5.1/en/files-table.html.)\n\nCREATE TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (192,35,'INSERT FUNCTION','Syntax:\nINSERT(str,pos,len,newstr)\n\nReturns the string str, with the substring beginning at position pos\nand len characters long replaced by the string newstr. Returns the\noriginal string if pos is not within the length of the string. Replaces\nthe rest of the string from position pos if len is not within the\nlength of the rest of the string. Returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT INSERT(\'Quadratic\', 3, 4, \'What\');\n -> \'QuWhattic\'\nmysql> SELECT INSERT(\'Quadratic\', -1, 4, \'What\');\n -> \'Quadratic\'\nmysql> SELECT INSERT(\'Quadratic\', 3, 100, \'What\');\n -> \'QuWhat\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (193,4,'CRC32','Syntax:\nCRC32(expr)\n\nComputes a cyclic redundancy check value and returns a 32-bit unsigned\nvalue. The result is NULL if the argument is NULL. The argument is\nexpected to be a string and (if possible) is treated as one if it is\nnot.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CRC32(\'MySQL\');\n -> 3259397556\nmysql> SELECT CRC32(\'mysql\');\n -> 2501908538\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (194,13,'XOR','Syntax:\nXOR\n\nLogical XOR. Returns NULL if either operand is NULL. For non-NULL\noperands, evaluates to 1 if an odd number of operands is nonzero,\notherwise 0 is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 XOR 1;\n -> 0\nmysql> SELECT 1 XOR 0;\n -> 1\nmysql> SELECT 1 XOR NULL;\n -> NULL\nmysql> SELECT 1 XOR 1 XOR 1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (195,12,'STARTPOINT','StartPoint(ls)\n\nReturns the Point that is the start point of the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(StartPoint(GeomFromText(@ls)));\n+---------------------------------------+\n| AsText(StartPoint(GeomFromText(@ls))) |\n+---------------------------------------+\n| POINT(1 1) |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (196,22,'DECLARE VARIABLE','Syntax:\nDECLARE var_name [, var_name] ... type [DEFAULT value]\n\nThis statement is used to declare local variables within stored\nprograms. To provide a default value for the variable, include a\nDEFAULT clause. The value can be specified as an expression; it need\nnot be a constant. If the DEFAULT clause is missing, the initial value\nis NULL.\n\nLocal variables are treated like stored routine parameters with respect\nto data type and overflow checking. See [HELP CREATE PROCEDURE].\n\nLocal variable names are not case sensitive.\n\nThe scope of a local variable is within the BEGIN ... END block where\nit is declared. The variable can be referred to in blocks nested within\nthe declaring block, except those blocks that declare a variable with\nthe same name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-local-variable.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-local-variable.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (197,9,'GRANT','Syntax:\nGRANT\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n TO user [IDENTIFIED BY [PASSWORD] \'password\']\n [, user [IDENTIFIED BY [PASSWORD] \'password\']] ...\n [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]\n [WITH with_option [with_option] ...]\n\nobject_type:\n TABLE\n | FUNCTION\n | PROCEDURE\n\npriv_level:\n *\n | *.*\n | db_name.*\n | db_name.tbl_name\n | tbl_name\n | db_name.routine_name\n\nwith_option:\n GRANT OPTION\n | MAX_QUERIES_PER_HOUR count\n | MAX_UPDATES_PER_HOUR count\n | MAX_CONNECTIONS_PER_HOUR count\n | MAX_USER_CONNECTIONS count\n\nssl_option:\n SSL\n | X509\n | CIPHER \'cipher\'\n | ISSUER \'issuer\'\n | SUBJECT \'subject\'\n\nThe GRANT statement enables system administrators to create MySQL user\naccounts and to grant rights to accounts. To use GRANT, you must have\nthe GRANT OPTION privilege, and you must have the privileges that you\nare granting. The REVOKE statement is related and enables\nadministrators to remove account privileges. To determine what\nprivileges an account has, use SHOW GRANTS. See [HELP REVOKE], and\n[HELP SHOW GRANTS].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/grant.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/grant.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (198,3,'MPOLYFROMTEXT','MPolyFromText(wkt[,srid]), MultiPolygonFromText(wkt[,srid])\n\nConstructs a MULTIPOLYGON value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (199,6,'MBRINTERSECTS','MBRIntersects(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 intersect.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (200,16,'BIT_OR','Syntax:\nBIT_OR(expr)\n\nReturns the bitwise OR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (201,30,'YEARWEEK','Syntax:\nYEARWEEK(date), YEARWEEK(date,mode)\n\nReturns year and week for a date. The mode argument works exactly like\nthe mode argument to WEEK(). The year in the result may be different\nfrom the year in the date argument for the first and the last week of\nthe year.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT YEARWEEK(\'1987-01-01\');\n -> 198653\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (202,17,'NOT BETWEEN','Syntax:\nexpr NOT BETWEEN min AND max\n\nThis is the same as NOT (expr BETWEEN min AND max).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (203,17,'IS NOT','Syntax:\nIS NOT boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;\n -> 1, 1, 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (204,4,'LOG10','Syntax:\nLOG10(X)\n\nReturns the base-10 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG10(2);\n -> 0.30102999566398\nmysql> SELECT LOG10(100);\n -> 2\nmysql> SELECT LOG10(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (205,4,'SQRT','Syntax:\nSQRT(X)\n\nReturns the square root of a nonnegative number X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT SQRT(4);\n -> 2\nmysql> SELECT SQRT(20);\n -> 4.4721359549996\nmysql> SELECT SQRT(-16);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (206,20,'DECIMAL','DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nA packed "exact" fixed-point number. M is the total number of digits\n(the precision) and D is the number of digits after the decimal point\n(the scale). The decimal point and (for negative numbers) the "-" sign\nare not counted in M. If D is 0, values have no decimal point or\nfractional part. The maximum number of digits (M) for DECIMAL is 65.\nThe maximum number of supported decimals (D) is 30. If D is omitted,\nthe default is 0. If M is omitted, the default is 10.\n\nUNSIGNED, if specified, disallows negative values.\n\nAll basic calculations (+, -, *, /) with DECIMAL columns are done with\na precision of 65 digits.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (207,37,'CREATE INDEX','Syntax:\nCREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name\n [index_type]\n ON tbl_name (index_col_name,...)\n [index_option] ...\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n\nCREATE INDEX is mapped to an ALTER TABLE statement to create indexes.\nSee [HELP ALTER TABLE]. CREATE INDEX cannot be used to create a PRIMARY\nKEY; use ALTER TABLE instead. For more information about indexes, see\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-index.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (208,37,'CREATE FUNCTION','The CREATE FUNCTION statement is used to create stored functions and\nuser-defined functions (UDFs):\n\no For information about creating stored functions, see [HELP CREATE\n PROCEDURE].\n\no For information about creating user-defined functions, see [HELP\n CREATE FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-function.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (209,37,'ALTER DATABASE','Syntax:\nALTER {DATABASE | SCHEMA} [db_name]\n alter_specification ...\nALTER {DATABASE | SCHEMA} db_name\n UPGRADE DATA DIRECTORY NAME\n\nalter_specification:\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n\nALTER DATABASE enables you to change the overall characteristics of a\ndatabase. These characteristics are stored in the db.opt file in the\ndatabase directory. To use ALTER DATABASE, you need the ALTER privilege\non the database. ALTER SCHEMA is a synonym for ALTER DATABASE.\n\nThe CHARACTER SET clause changes the default database character set.\nThe COLLATE clause changes the default database collation.\nhttp://dev.mysql.com/doc/refman/5.1/en/charset.html, discusses\ncharacter set and collation names.\n\nYou can see what character sets and collations are available using,\nrespectively, the SHOW CHARACTER SET and SHOW COLLATION statements. See\n[HELP SHOW CHARACTER SET], and [HELP SHOW COLLATION], for more\ninformation.\n\nThe database name can be omitted from the first syntax, in which case\nthe statement applies to the default database.\n\nThe syntax that includes the UPGRADE DATA DIRECTORY NAME clause was\nadded in MySQL 5.1.23. It updates the name of the directory associated\nwith the database to use the encoding implemented in MySQL 5.1 for\nmapping database names to database directory names (see\nhttp://dev.mysql.com/doc/refman/5.1/en/identifier-mapping.html) This\nclause is for use under these conditions:\n\no It is intended when upgrading MySQL to 5.1 or later from older\n versions.\n\no It is intended to update a database directory name to the current\n encoding format if the name contains special characters that need\n encoding.\n\no The statement is used by mysqlcheck (as invoked by mysql_upgrade).\n\nFor example,if a database in MySQL 5.0 has a name of a-b-c, the name\ncontains instance of the `-\' character. In 5.0, the database directory\nis also named a-b-c, which is not necessarily safe for all file\nsystems. In MySQL 5.1 and up, the same database name is encoded as\na@002db@002dc to produce a file system-neutral directory name.\n\nWhen a MySQL installation is upgraded to MySQL 5.1 or later from an\nolder version,the server displays a name such as a-b-c (which is in the\nold format) as #mysql50#a-b-c, and you must refer to the name using the\n#mysql50# prefix. Use UPGRADE DATA DIRECTORY NAME in this case to\nexplicitly tell the server to re-encode the database directory name to\nthe current encoding format:\n\nALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;\n\nAfter executing this statement, you can refer to the database as a-b-c\nwithout the special #mysql50# prefix.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-database.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (210,24,'GEOMETRYN','GeometryN(gc,N)\n\nReturns the N-th geometry in the GeometryCollection value gc.\nGeometries are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT AsText(GeometryN(GeomFromText(@gc),1));\n+----------------------------------------+\n| AsText(GeometryN(GeomFromText(@gc),1)) |\n+----------------------------------------+\n| POINT(1 1) |\n+----------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (211,18,'<<','Syntax:\n<<\n\nShifts a longlong (BIGINT) number to the left.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 1 << 2;\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (212,25,'SHOW TABLE STATUS','Syntax:\nSHOW TABLE STATUS [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLE STATUS works likes SHOW TABLES, but provides a lot of\ninformation about each non-TEMPORARY table. You can also get this list\nusing the mysqlshow --status db_name command. The LIKE clause, if\npresent, indicates which table names to match. The WHERE clause can be\ngiven to select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (213,11,'MD5','Syntax:\nMD5(str)\n\nCalculates an MD5 128-bit checksum for the string. The value is\nreturned as a binary string of 32 hex digits, or NULL if the argument\nwas NULL. The return value can, for example, be used as a hash key.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT MD5(\'testing\');\n -> \'ae2b1fca515949e5d54fb22b8ed95575\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (214,17,'<','Syntax:\n<\n\nLess than:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 < 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (215,30,'UNIX_TIMESTAMP','Syntax:\nUNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)\n\nIf called with no argument, returns a Unix timestamp (seconds since\n\'1970-01-01 00:00:00\' UTC) as an unsigned integer. If UNIX_TIMESTAMP()\nis called with a date argument, it returns the value of the argument as\nseconds since \'1970-01-01 00:00:00\' UTC. date may be a DATE string, a\nDATETIME string, a TIMESTAMP, or a number in the format YYMMDD or\nYYYYMMDD. The server interprets date as a value in the current time\nzone and converts it to an internal value in UTC. Clients can set their\ntime zone as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UNIX_TIMESTAMP();\n -> 1196440210\nmysql> SELECT UNIX_TIMESTAMP(\'2007-11-30 10:30:19\');\n -> 1196440219\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (216,30,'DAYOFMONTH','Syntax:\nDAYOFMONTH(date)\n\nReturns the day of the month for date, in the range 1 to 31, or 0 for\ndates such as \'0000-00-00\' or \'2008-00-00\' that have a zero day part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFMONTH(\'2007-02-03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (217,35,'ASCII','Syntax:\nASCII(str)\n\nReturns the numeric value of the leftmost character of the string str.\nReturns 0 if str is the empty string. Returns NULL if str is NULL.\nASCII() works for 8-bit characters.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ASCII(\'2\');\n -> 50\nmysql> SELECT ASCII(2);\n -> 50\nmysql> SELECT ASCII(\'dx\');\n -> 100\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (218,4,'DIV','Syntax:\nDIV\n\nInteger division. Similar to FLOOR(), but is safe with BIGINT values.\nIncorrect results may occur for noninteger operands that exceed BIGINT\nrange.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 5 DIV 2;\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (219,9,'RENAME USER','Syntax:\nRENAME USER old_user TO new_user\n [, old_user TO new_user] ...\n\nThe RENAME USER statement renames existing MySQL accounts. To use it,\nyou must have the global CREATE USER privilege or the UPDATE privilege\nfor the mysql database. An error occurs if any old account does not\nexist or any new account exists. Each account is named using the same\nformat as for the GRANT statement; for example, \'jeffrey\'@\'localhost\'.\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used. For additional information about specifying\naccount names, see [HELP GRANT].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/rename-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/rename-user.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (220,25,'SHOW SLAVE STATUS','Syntax:\nSHOW SLAVE STATUS\n\nThis statement provides status information on essential parameters of\nthe slave threads. It requires either the SUPER or REPLICATION CLIENT\nprivilege.\n\nIf you issue this statement using the mysql client, you can use a \\G\nstatement terminator rather than a semicolon to obtain a more readable\nvertical layout:\n\nmysql> SHOW SLAVE STATUS\\G\n*************************** 1. row ***************************\n Slave_IO_State: Waiting for master to send event\n Master_Host: localhost\n Master_User: root\n Master_Port: 3306\n Connect_Retry: 3\n Master_Log_File: gbichot-bin.005\n Read_Master_Log_Pos: 79\n Relay_Log_File: gbichot-relay-bin.005\n Relay_Log_Pos: 548\n Relay_Master_Log_File: gbichot-bin.005\n Slave_IO_Running: Yes\n Slave_SQL_Running: Yes\n Replicate_Do_DB:\n Replicate_Ignore_DB:\n Last_Errno: 0\n Last_Error:\n Skip_Counter: 0\n Exec_Master_Log_Pos: 79\n Relay_Log_Space: 552\n Until_Condition: None\n Until_Log_File:\n Until_Log_Pos: 0\n Master_SSL_Allowed: No\n Master_SSL_CA_File:\n Master_SSL_CA_Path:\n Master_SSL_Cert:\n Master_SSL_Cipher:\n Master_SSL_Key:\n Seconds_Behind_Master: 8\nMaster_SSL_Verify_Server_Cert: No\n Last_IO_Errno: 0\n Last_IO_Error:\n Last_SQL_Errno: 0\n Last_SQL_Error:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-slave-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-slave-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (221,32,'GEOMETRY','MySQL provides a standard way of creating spatial columns for geometry\ntypes, for example, with CREATE TABLE or ALTER TABLE. Currently,\nspatial columns are supported for MyISAM, InnoDB, NDB, and ARCHIVE\ntables. See also the annotations about spatial indexes under [HELP\nSPATIAL].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-columns.html\n\n','CREATE TABLE geom (g GEOMETRY);\n','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-columns.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (222,12,'NUMPOINTS','NumPoints(ls)\n\nReturns the number of Point objects in the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT NumPoints(GeomFromText(@ls));\n+------------------------------+\n| NumPoints(GeomFromText(@ls)) |\n+------------------------------+\n| 3 |\n+------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (223,37,'ALTER LOGFILE GROUP','Syntax:\nALTER LOGFILE GROUP logfile_group\n ADD UNDOFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement adds an UNDO file named \'file_name\' to an existing log\nfile group logfile_group. An ALTER LOGFILE GROUP statement has one and\nonly one ADD UNDOFILE clause. No DROP UNDOFILE clause is currently\nsupported.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an undo log file with the same name, or an undo\nlog file and a data file with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for undo log files could not be longer than 128 characters.\n(Bug#31769 (http://bugs.mysql.com/31769))\n\nThe optional INITIAL_SIZE parameter sets the UNDO file\'s initial size\nin bytes; if not specified, the initial size default to 128M (128\nmegabytes). You may optionally follow size with a one-letter\nabbreviation for an order of magnitude, similar to those used in\nmy.cnf. Generally, this is one of the letters M (for megabytes) or G\n(for gigabytes).\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nBeginning with MySQL Cluster NDB 2.1.18, 6.3.24, and 7.0.4, the minimum\nallowed value for INITIAL_SIZE is 1M. (Bug#29574\n(http://bugs.mysql.com/29574))\n\n*Note*: WAIT is parsed but otherwise ignored, and so has no effect in\nMySQL 5.1 and MySQL Cluster NDB 6.x. It is intended for future\nexpansion.\n\nThe ENGINE parameter (required) determines the storage engine which is\nused by this log file group, with engine_name being the name of the\nstorage engine. In MySQL 5.1 and MySQL Cluster NDB 6.x, the only\naccepted values for engine_name are "NDBCLUSTER" and "NDB". The two\nvalues are equivalent.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-logfile-group.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-logfile-group.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (224,18,'&','Syntax:\n&\n\nBitwise AND:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 29 & 15;\n -> 13\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (225,30,'LOCALTIMESTAMP','Syntax:\nLOCALTIMESTAMP, LOCALTIMESTAMP()\n\nLOCALTIMESTAMP and LOCALTIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (226,35,'CONVERT','Syntax:\nCONVERT(expr,type), CONVERT(expr USING transcoding_name)\n\nThe CONVERT() and CAST() functions take a value of one type and produce\na value of another type.\n\nThe type can be one of the following values:\n\no BINARY[(N)]\n\no CHAR[(N)]\n\no DATE\n\no DATETIME\n\no DECIMAL[(M[,D])]\n\no SIGNED [INTEGER]\n\no TIME\n\no UNSIGNED [INTEGER]\n\nBINARY produces a string with the BINARY data type. See\nhttp://dev.mysql.com/doc/refman/5.1/en/binary-varbinary.html for a\ndescription of how this affects comparisons. If the optional length N\nis given, BINARY(N) causes the cast to use no more than N bytes of the\nargument. Values shorter than N bytes are padded with 0x00 bytes to a\nlength of N.\n\nCHAR(N) causes the cast to use no more than N characters of the\nargument.\n\nCAST() and CONVERT(... USING ...) are standard SQL syntax. The\nnon-USING form of CONVERT() is ODBC syntax.\n\nCONVERT() with USING is used to convert data between different\ncharacter sets. In MySQL, transcoding names are the same as the\ncorresponding character set names. For example, this statement converts\nthe string \'abc\' in the default character set to the corresponding\nstring in the utf8 character set:\n\nSELECT CONVERT(\'abc\' USING utf8);\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','SELECT enum_col FROM tbl_name ORDER BY CAST(enum_col AS CHAR);\n','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (227,30,'ADDDATE','Syntax:\nADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, ADDDATE()\nis a synonym for DATE_ADD(). The related function SUBDATE() is a\nsynonym for DATE_SUB(). For information on the INTERVAL unit argument,\nsee the discussion for DATE_ADD().\n\nmysql> SELECT DATE_ADD(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\nmysql> SELECT ADDDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\n\nWhen invoked with the days form of the second argument, MySQL treats it\nas an integer number of days to be added to expr.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT ADDDATE(\'2008-01-02\', 31);\n -> \'2008-02-02\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (228,22,'REPEAT LOOP','Syntax:\n[begin_label:] REPEAT\n statement_list\nUNTIL search_condition\nEND REPEAT [end_label]\n\nThe statement list within a REPEAT statement is repeated until the\nsearch_condition is true. Thus, a REPEAT always enters the loop at\nleast once. statement_list consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter.\n\nA REPEAT statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/repeat-statement.html\n\n','mysql> delimiter //\n\nmysql> CREATE PROCEDURE dorepeat(p1 INT)\n -> BEGIN\n -> SET @x = 0;\n -> REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;\n -> END\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL dorepeat(1000)//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n+------+\n| @x |\n+------+\n| 1001 |\n+------+\n1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/repeat-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (229,37,'ALTER FUNCTION','Syntax:\nALTER FUNCTION func_name [characteristic ...]\n\ncharacteristic:\n { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nThis statement can be used to change the characteristics of a stored\nfunction. More than one change may be specified in an ALTER FUNCTION\nstatement. However, you cannot change the parameters or body of a\nstored function using this statement; to make such changes, you must\ndrop and re-create the function using DROP FUNCTION and CREATE\nFUNCTION.\n\nYou must have the ALTER ROUTINE privilege for the function. (That\nprivilege is granted automatically to the function creator.) If binary\nlogging is enabled, the ALTER FUNCTION statement might also require the\nSUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/alter-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-function.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (230,20,'SMALLINT','SMALLINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA small integer. The signed range is -32768 to 32767. The unsigned\nrange is 0 to 65535.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (231,20,'DOUBLE PRECISION','DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED]\n[ZEROFILL]\n\nThese types are synonyms for DOUBLE. Exception: If the REAL_AS_FLOAT\nSQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (232,35,'ORD','Syntax:\nORD(str)\n\nIf the leftmost character of the string str is a multi-byte character,\nreturns the code for that character, calculated from the numeric values\nof its constituent bytes using this formula:\n\n (1st byte code)\n+ (2nd byte code x 256)\n+ (3rd byte code x 2562) ...\n\nIf the leftmost character is not a multi-byte character, ORD() returns\nthe same value as the ASCII() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ORD(\'2\');\n -> 50\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (233,25,'DEALLOCATE PREPARE','Syntax:\n{DEALLOCATE | DROP} PREPARE stmt_name\n\nTo deallocate a prepared statement produced with PREPARE, use a\nDEALLOCATE PREPARE statement that refers to the prepared statement\nname. Attempting to execute a prepared statement after deallocating it\nresults in an error.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/deallocate-prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/deallocate-prepare.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (234,34,'ENVELOPE','Envelope(g)\n\nReturns the Minimum Bounding Rectangle (MBR) for the geometry value g.\nThe result is returned as a Polygon value.\n\nThe polygon is defined by the corner points of the bounding box:\n\nPOLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\')));\n+-------------------------------------------------------+\n| AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\'))) |\n+-------------------------------------------------------+\n| POLYGON((1 1,2 1,2 2,1 2,1 1)) |\n+-------------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (235,14,'IS_FREE_LOCK','Syntax:\nIS_FREE_LOCK(str)\n\nChecks whether the lock named str is free to use (that is, not locked).\nReturns 1 if the lock is free (no one is using the lock), 0 if the lock\nis in use, and NULL if an error occurs (such as an incorrect argument).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (236,29,'TOUCHES','Touches(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially touches g2. Two\ngeometries spatially touch if the interiors of the geometries do not\nintersect, but the boundary of one of the geometries intersects either\nthe boundary or the interior of the other.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (237,14,'INET_ATON','Syntax:\nINET_ATON(expr)\n\nGiven the dotted-quad representation of a network address as a string,\nreturns an integer that represents the numeric value of the address.\nAddresses may be 4- or 8-byte addresses.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_ATON(\'209.207.224.40\');\n -> 3520061480\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (238,11,'UNCOMPRESS','Syntax:\nUNCOMPRESS(string_to_uncompress)\n\nUncompresses a string compressed by the COMPRESS() function. If the\nargument is not a compressed value, the result is NULL. This function\nrequires MySQL to have been compiled with a compression library such as\nzlib. Otherwise, the return value is always NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESS(COMPRESS(\'any string\'));\n -> \'any string\'\nmysql> SELECT UNCOMPRESS(\'any string\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (239,20,'AUTO_INCREMENT','The AUTO_INCREMENT attribute can be used to generate a unique identity\nfor new rows:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html\n\n','CREATE TABLE animals (\n id MEDIUMINT NOT NULL AUTO_INCREMENT,\n name CHAR(30) NOT NULL,\n PRIMARY KEY (id)\n );\n\nINSERT INTO animals (name) VALUES\n (\'dog\'),(\'cat\'),(\'penguin\'),\n (\'lax\'),(\'whale\'),(\'ostrich\');\n\nSELECT * FROM animals;\n','http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (240,34,'ISSIMPLE','IsSimple(g)\n\nCurrently, this function is a placeholder and should not be used. If\nimplemented, its behavior will be as described in the next paragraph.\n\nReturns 1 if the geometry value g has no anomalous geometric points,\nsuch as self-intersection or self-tangency. IsSimple() returns 0 if the\nargument is not simple, and -1 if it is NULL.\n\nThe description of each instantiable geometric class given earlier in\nthe chapter includes the specific conditions that cause an instance of\nthat class to be classified as not simple. (See [HELP Geometry\nhierarchy].)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (241,4,'- BINARY','Syntax:\n-\n\nSubtraction:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3-5;\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (242,3,'GEOMCOLLFROMTEXT','GeomCollFromText(wkt[,srid]), GeometryCollectionFromText(wkt[,srid])\n\nConstructs a GEOMETRYCOLLECTION value using its WKT representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (243,3,'WKT DEFINITION','The Well-Known Text (WKT) representation of Geometry is designed to\nexchange geometry data in ASCII form.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-wkt-format.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/gis-wkt-format.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (244,30,'CURRENT_TIME','Syntax:\nCURRENT_TIME, CURRENT_TIME()\n\nCURRENT_TIME and CURRENT_TIME() are synonyms for CURTIME().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (245,9,'REVOKE','Syntax:\nREVOKE\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n FROM user [, user] ...\n\nREVOKE ALL PRIVILEGES, GRANT OPTION\n FROM user [, user] ...\n\nThe REVOKE statement enables system administrators to revoke privileges\nfrom MySQL accounts. Each account is named using the same format as for\nthe GRANT statement; for example, \'jeffrey\'@\'localhost\'. If you specify\nonly the user name part of the account name, a host name part of \'%\' is\nused. For details on the levels at which privileges exist, the\nallowable priv_type and priv_level values, and the syntax for\nspecifying users and passwords, see [HELP GRANT]\n\nTo use the first REVOKE syntax, you must have the GRANT OPTION\nprivilege, and you must have the privileges that you are revoking.\n\nTo revoke all privileges, use the second syntax, which drops all\nglobal, database, table, column, and routine privileges for the named\nuser or users:\n\nREVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...\n\nTo use this REVOKE syntax, you must have the global CREATE USER\nprivilege or the UPDATE privilege for the mysql database.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/revoke.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/revoke.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (246,15,'LAST_INSERT_ID','Syntax:\nLAST_INSERT_ID(), LAST_INSERT_ID(expr)\n\nFor MySQL 5.1.12 and later, LAST_INSERT_ID() (no arguments) returns the\nfirst automatically generated value successfully inserted for an\nAUTO_INCREMENT column as a result of the most recently executed INSERT\nstatement. The value of LAST_INSERT_ID() remains unchanged if no rows\nare successfully inserted.\n\nFor example, after inserting a row that generates an AUTO_INCREMENT\nvalue, you can get the value like this:\n\nmysql> SELECT LAST_INSERT_ID();\n -> 195\n\nIn MySQL 5.1.11 and earlier, LAST_INSERT_ID() (no arguments) returns\nthe first automatically generated value if any rows were successfully\ninserted or updated. This means that the returned value could be a\nvalue that was not successfully inserted into the table. If no rows\nwere successfully inserted, LAST_INSERT_ID() returns 0.\n\nThe value of LAST_INSERT_ID() will be consistent across all versions if\nall rows in the INSERT or UPDATE statement were successful.\n\nif a table contains an AUTO_INCREMENT column and INSERT ... ON\nDUPLICATE KEY UPDATE updates (rather than inserts) a row, the value of\nLAST_INSERT_ID() is not meaningful prior to MySQL 5.1.12. For a\nworkaround, see\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html.\n\nThe currently executing statement does not affect the value of\nLAST_INSERT_ID(). Suppose that you generate an AUTO_INCREMENT value\nwith one statement, and then refer to LAST_INSERT_ID() in a\nmultiple-row INSERT statement that inserts rows into a table with its\nown AUTO_INCREMENT column. The value of LAST_INSERT_ID() will remain\nstable in the second statement; its value for the second and later rows\nis not affected by the earlier row insertions. (However, if you mix\nreferences to LAST_INSERT_ID() and LAST_INSERT_ID(expr), the effect is\nundefined.)\n\nIf the previous statement returned an error, the value of\nLAST_INSERT_ID() is undefined. For transactional tables, if the\nstatement is rolled back due to an error, the value of LAST_INSERT_ID()\nis left undefined. For manual ROLLBACK, the value of LAST_INSERT_ID()\nis not restored to that before the transaction; it remains as it was at\nthe point of the ROLLBACK.\n\nWithin the body of a stored routine (procedure or function) or a\ntrigger, the value of LAST_INSERT_ID() changes the same way as for\nstatements executed outside the body of these kinds of objects. The\neffect of a stored routine or trigger upon the value of\nLAST_INSERT_ID() that is seen by following statements depends on the\nkind of routine:\n\no If a stored procedure executes statements that change the value of\n LAST_INSERT_ID(), the changed value will be seen by statements that\n follow the procedure call.\n\no For stored functions and triggers that change the value, the value is\n restored when the function or trigger ends, so following statements\n will not see a changed value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (247,30,'LAST_DAY','Syntax:\nLAST_DAY(date)\n\nTakes a date or datetime value and returns the corresponding value for\nthe last day of the month. Returns NULL if the argument is invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT LAST_DAY(\'2003-02-05\');\n -> \'2003-02-28\'\nmysql> SELECT LAST_DAY(\'2004-02-05\');\n -> \'2004-02-29\'\nmysql> SELECT LAST_DAY(\'2004-01-01 01:01:01\');\n -> \'2004-01-31\'\nmysql> SELECT LAST_DAY(\'2003-03-32\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (248,20,'MEDIUMINT','MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA medium-sized integer. The signed range is -8388608 to 8388607. The\nunsigned range is 0 to 16777215.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (249,4,'FLOOR','Syntax:\nFLOOR(X)\n\nReturns the largest integer value not greater than X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT FLOOR(1.23);\n -> 1\nmysql> SELECT FLOOR(-1.23);\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (250,35,'RTRIM','Syntax:\nRTRIM(str)\n\nReturns the string str with trailing space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RTRIM(\'barbar \');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (251,27,'EXPLAIN','Syntax:\nEXPLAIN tbl_name\n\nOr:\n\nEXPLAIN [EXTENDED | PARTITIONS] SELECT select_options\n\nThe EXPLAIN statement can be used either as a synonym for DESCRIBE or\nas a way to obtain information about how MySQL executes a SELECT\nstatement:\n\no EXPLAIN tbl_name is synonymous with DESCRIBE tbl_name or SHOW COLUMNS\n FROM tbl_name.\n\n For a description of the DESCRIBE and SHOW COLUMNS statements, see\n [HELP DESCRIBE], and [HELP SHOW COLUMNS].\n\no When you precede a SELECT statement with the keyword EXPLAIN, MySQL\n displays information from the optimizer about the query execution\n plan. That is, MySQL explains how it would process the SELECT,\n including information about how tables are joined and in which order.\n EXPLAIN EXTENDED can be used to provide additional information.\n\n For information regarding the use of EXPLAIN and EXPLAIN EXTENDED for\n obtaining query execution plan information, see\n http://dev.mysql.com/doc/refman/5.1/en/using-explain.html.\n\no EXPLAIN PARTITIONS is available beginning with MySQL 5.1.5. It is\n useful only when examining queries involving partitioned tables.\n\n For details, see\n http://dev.mysql.com/doc/refman/5.1/en/partitioning-info.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/explain.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/explain.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (252,4,'DEGREES','Syntax:\nDEGREES(X)\n\nReturns the argument X, converted from radians to degrees.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT DEGREES(PI());\n -> 180\nmysql> SELECT DEGREES(PI() / 2);\n -> 90\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (253,20,'VARCHAR','[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA variable-length string. M represents the maximum column length in\ncharacters. The range of M is 0 to 65,535. The effective maximum length\nof a VARCHAR is subject to the maximum row size (65,535 bytes, which is\nshared among all columns) and the character set used. For example, utf8\ncharacters can require up to three bytes per character, so a VARCHAR\ncolumn that uses the utf8 character set can be declared to be a maximum\nof 21,844 characters.\n\nMySQL stores VARCHAR values as a one-byte or two-byte length prefix\nplus data. The length prefix indicates the number of bytes in the\nvalue. A VARCHAR column uses one length byte if values require no more\nthan 255 bytes, two length bytes if values may require more than 255\nbytes.\n\n*Note*: MySQL 5.1 follows the standard SQL specification, and does not\nremove trailing spaces from VARCHAR values.\n\nVARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the\nstandard SQL way to define that a VARCHAR column should use some\npredefined character set. MySQL 4.1 and up uses utf8 as this predefined\ncharacter set.\nhttp://dev.mysql.com/doc/refman/5.1/en/charset-national.html. NVARCHAR\nis shorthand for NATIONAL VARCHAR.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (254,35,'UNHEX','Syntax:\n\nUNHEX(str)\n\nPerforms the inverse operation of HEX(str). That is, it interprets each\npair of hexadecimal digits in the argument as a number and converts it\nto the character represented by the number. The resulting characters\nare returned as a binary string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT UNHEX(\'4D7953514C\');\n -> \'MySQL\'\nmysql> SELECT 0x4D7953514C;\n -> \'MySQL\'\nmysql> SELECT UNHEX(HEX(\'string\'));\n -> \'string\'\nmysql> SELECT HEX(UNHEX(\'1267\'));\n -> \'1267\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (255,4,'- UNARY','Syntax:\n-\n\nUnary minus. This operator changes the sign of the argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT - 2;\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (256,22,'SELECT INTO','Syntax:\nSELECT col_name [, col_name] ...\n INTO var_name [, var_name] ...\n table_expr\n\nSELECT ... INTO syntax enables selected columns to be stored directly\ninto variables. The query should return a single row. If the query\nreturns no rows, a warning with error code 1329 occurs (No data), and\nthe variable values remain unchanged. If the query returns multiple\nrows, error 1172 occurs (Result consisted of more than one row). If it\nis possible that the statement may retrieve multiple rows, you can use\nLIMIT 1 to limit the result set to a single row.\n\nIn the context of such statements that occur as part of events executed\nby the Event Scheduler, diagnostics messages (not only errors, but also\nwarnings) are written to the error log, and, on Windows, to the\napplication event log. For additional information, see\nhttp://dev.mysql.com/doc/refman/5.1/en/events-status-info.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select-into-statement.html\n\n','SELECT id,data INTO x,y FROM test.t1 LIMIT 1;\n','http://dev.mysql.com/doc/refman/5.1/en/select-into-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (257,16,'STD','Syntax:\nSTD(expr)\n\nReturns the population standard deviation of expr. This is an extension\nto standard SQL. The standard SQL function STDDEV_POP() can be used\ninstead.\n\nThis function returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (258,4,'COS','Syntax:\nCOS(X)\n\nReturns the cosine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT COS(PI());\n -> -1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (259,30,'DATE FUNCTION','Syntax:\nDATE(expr)\n\nExtracts the date part of the date or datetime expression expr.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE(\'2003-12-31 01:02:03\');\n -> \'2003-12-31\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (260,37,'DROP TRIGGER','Syntax:\nDROP TRIGGER [IF EXISTS] [schema_name.]trigger_name\n\nThis statement drops a trigger. The schema (database) name is optional.\nIf the schema is omitted, the trigger is dropped from the default\nschema. DROP TRIGGER was added in MySQL 5.0.2. Its use requires the\nTRIGGER privilege for the table associated with the trigger. (This\nstatement requires the SUPER privilege prior to MySQL 5.1.6.)\n\nUse IF EXISTS to prevent an error from occurring for a trigger that\ndoes not exist. A NOTE is generated for a nonexistent trigger when\nusing IF EXISTS. See [HELP SHOW WARNINGS]. The IF EXISTS clause was\nadded in MySQL 5.1.14.\n\nTriggers for a table are also dropped if you drop the table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-trigger.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (261,25,'RESET MASTER','Syntax:\nRESET MASTER\n\nDeletes all binary logs listed in the index file, resets the binary log\nindex file to be empty, and creates a new binary log file. It is\nintended to be used only when the master is started for the first time.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset-master.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (262,4,'TAN','Syntax:\nTAN(X)\n\nReturns the tangent of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT TAN(PI());\n -> -1.2246063538224e-16\nmysql> SELECT TAN(PI()+1);\n -> 1.5574077246549\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (263,4,'PI','Syntax:\nPI()\n\nReturns the value of π (pi). The default number of decimal places\ndisplayed is seven, but MySQL uses the full double-precision value\ninternally.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT PI();\n -> 3.141593\nmysql> SELECT PI()+0.000000000000000000;\n -> 3.141592653589793116\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (264,30,'WEEKOFYEAR','Syntax:\nWEEKOFYEAR(date)\n\nReturns the calendar week of the date as a number in the range from 1\nto 53. WEEKOFYEAR() is a compatibility function that is equivalent to\nWEEK(date,3).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKOFYEAR(\'2008-02-20\');\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (265,4,'/','Syntax:\n/\n\nDivision:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3/5;\n -> 0.60\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (266,25,'PURGE BINARY LOGS','Syntax:\nPURGE { BINARY | MASTER } LOGS\n { TO \'log_name\' | BEFORE datetime_expr }\n\nThe binary log is a set of files that contain information about data\nmodifications made by the MySQL server. The log consists of a set of\nbinary log files, plus an index file.\n\nThe PURGE BINARY LOGS statement deletes all the binary log files listed\nin the log index file prior to the specified log file name or date. The\nlog files also are removed from the list recorded in the index file, so\nthat the given log file becomes the first.\n\nThis statement has no effect if the --log-bin option has not been\nenabled.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/purge-binary-logs.html\n\n','PURGE BINARY LOGS TO \'mysql-bin.010\';\nPURGE BINARY LOGS BEFORE \'2008-04-02 22:46:26\';\n','http://dev.mysql.com/doc/refman/5.1/en/purge-binary-logs.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (267,16,'STDDEV_SAMP','Syntax:\nSTDDEV_SAMP(expr)\n\nReturns the sample standard deviation of expr (the square root of\nVAR_SAMP().\n\nSTDDEV_SAMP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (268,15,'SCHEMA','Syntax:\nSCHEMA()\n\nThis function is a synonym for DATABASE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (269,31,'MLINEFROMWKB','MLineFromWKB(wkb[,srid]), MultiLineStringFromWKB(wkb[,srid])\n\nConstructs a MULTILINESTRING value using its WKB representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (270,4,'LOG2','Syntax:\nLOG2(X)\n\nReturns the base-2 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG2(65536);\n -> 16\nmysql> SELECT LOG2(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (271,30,'SUBTIME','Syntax:\nSUBTIME(expr1,expr2)\n\nSUBTIME() returns expr1 - expr2 expressed as a value in the same format\nas expr1. expr1 is a time or datetime expression, and expr2 is a time\nexpression.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SUBTIME(\'2007-12-31 23:59:59.999999\',\'1 1:1:1.000002\');\n -> \'2007-12-30 22:58:58.999997\'\nmysql> SELECT SUBTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'-00:59:59.999999\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (272,11,'UNCOMPRESSED_LENGTH','Syntax:\nUNCOMPRESSED_LENGTH(compressed_string)\n\nReturns the length that the compressed string had before being\ncompressed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT(\'a\',30)));\n -> 30\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (273,37,'DROP TABLE','Syntax:\nDROP [TEMPORARY] TABLE [IF EXISTS]\n tbl_name [, tbl_name] ...\n [RESTRICT | CASCADE]\n\nDROP TABLE removes one or more tables. You must have the DROP privilege\nfor each table. All table data and the table definition are removed, so\nbe careful with this statement! If any of the tables named in the\nargument list do not exist, MySQL returns an error indicating by name\nwhich nonexisting tables it was unable to drop, but it also drops all\nof the tables in the list that do exist.\n\n*Important*: When a table is dropped, user privileges on the table are\nnot automatically dropped. See [HELP GRANT].\n\nNote that for a partitioned table, DROP TABLE permanently removes the\ntable definition, all of its partitions, and all of the data which was\nstored in those partitions. It also removes the partitioning definition\n(.par) file associated with the dropped table.\n\nUse IF EXISTS to prevent an error from occurring for tables that do not\nexist. A NOTE is generated for each nonexistent table when using IF\nEXISTS. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE are allowed to make porting easier. In MySQL 5.1,\nthey do nothing.\n\n*Note*: DROP TABLE automatically commits the current active\ntransaction, unless you use the TEMPORARY keyword.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (274,4,'POW','Syntax:\nPOW(X,Y)\n\nReturns the value of X raised to the power of Y.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT POW(2,2);\n -> 4\nmysql> SELECT POW(2,-2);\n -> 0.25\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (275,25,'SHOW CREATE TABLE','Syntax:\nSHOW CREATE TABLE tbl_name\n\nShows the CREATE TABLE statement that creates the given table. The\nstatement requires the SELECT privilege for the table. This statement\nalso works with views.\nSHOW CREATE TABLE quotes table and column names according to the value\nof the sql_quote_show_create option. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-session-variables.html.\…: http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html\n\n','mysql> SHOW CREATE TABLE t\\G\n*************************** 1. row ***************************\n Table: t\nCreate Table: CREATE TABLE t (\n id INT(11) default NULL auto_increment,\n s char(60) default NULL,\n PRIMARY KEY (id)\n) ENGINE=MyISAM\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (276,26,'DUAL','You are allowed to specify DUAL as a dummy table name in situations\nwhere no tables are referenced:\n\nmysql> SELECT 1 + 1 FROM DUAL;\n -> 2\n\nDUAL is purely for the convenience of people who require that all\nSELECT statements should have FROM and possibly other clauses. MySQL\nmay ignore the clauses. MySQL does not require FROM DUAL if no tables\nare referenced.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/select.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (277,35,'INSTR','Syntax:\nINSTR(str,substr)\n\nReturns the position of the first occurrence of substring substr in\nstring str. This is the same as the two-argument form of LOCATE(),\nexcept that the order of the arguments is reversed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT INSTR(\'foobarbar\', \'bar\');\n -> 4\nmysql> SELECT INSTR(\'xbar\', \'foobar\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (278,30,'NOW','Syntax:\nNOW()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context. The value is expressed in the\ncurrent time zone.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT NOW();\n -> \'2007-12-15 23:50:26\'\nmysql> SELECT NOW() + 0;\n -> 20071215235026.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (279,25,'SHOW ENGINES','Syntax:\nSHOW [STORAGE] ENGINES\n\nSHOW ENGINES displays status information about the server\'s storage\nengines. This is particularly useful for checking whether a storage\nengine is supported, or to see what the default engine is. SHOW TABLE\nTYPES is a deprecated synonym.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-engines.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-engines.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (280,17,'>=','Syntax:\n>=\n\nGreater than or equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 >= 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (281,4,'EXP','Syntax:\nEXP(X)\n\nReturns the value of e (the base of natural logarithms) raised to the\npower of X. The inverse of this function is LOG() (using a single\nargument only) or LN().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT EXP(2);\n -> 7.3890560989307\nmysql> SELECT EXP(-2);\n -> 0.13533528323661\nmysql> SELECT EXP(0);\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (282,20,'LONGBLOB','LONGBLOB\n\nA BLOB column with a maximum length of 4,294,967,295 or 4GB (232 - 1)\nbytes. The effective maximum length of LONGBLOB columns depends on the\nconfigured maximum packet size in the client/server protocol and\navailable memory. Each LONGBLOB value is stored using a four-byte\nlength prefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (283,12,'POINTN','PointN(ls,N)\n\nReturns the N-th Point in the Linestring value ls. Points are numbered\nbeginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(PointN(GeomFromText(@ls),2));\n+-------------------------------------+\n| AsText(PointN(GeomFromText(@ls),2)) |\n+-------------------------------------+\n| POINT(2 2) |\n+-------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (284,20,'YEAR DATA TYPE','YEAR[(2|4)]\n\nA year in two-digit or four-digit format. The default is four-digit\nformat. In four-digit format, the allowable values are 1901 to 2155,\nand 0000. In two-digit format, the allowable values are 70 to 69,\nrepresenting years from 1970 to 2069. MySQL displays YEAR values in\nYYYY format, but allows you to assign values to YEAR columns using\neither strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (285,16,'SUM','Syntax:\nSUM([DISTINCT] expr)\n\nReturns the sum of expr. If the return set has no rows, SUM() returns\nNULL. The DISTINCT keyword can be used in MySQL 5.1 to sum only the\ndistinct values of expr.\n\nSUM() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (286,4,'OCT','Syntax:\nOCT(N)\n\nReturns a string representation of the octal value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,8). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT OCT(12);\n -> \'14\'\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (287,30,'SYSDATE','Syntax:\nSYSDATE()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context.\n\nSYSDATE() returns the time at which it executes. This differs from the\nbehavior for NOW(), which returns a constant time that indicates the\ntime at which the statement began to execute. (Within a stored function\nor trigger, NOW() returns the time at which the function or triggering\nstatement began to execute.)\n\nmysql> SELECT NOW(), SLEEP(2), NOW();\n+---------------------+----------+---------------------+\n| NOW() | SLEEP(2) | NOW() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |\n+---------------------+----------+---------------------+\n\nmysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();\n+---------------------+----------+---------------------+\n| SYSDATE() | SLEEP(2) | SYSDATE() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |\n+---------------------+----------+---------------------+\n\nIn addition, the SET TIMESTAMP statement affects the value returned by\nNOW() but not by SYSDATE(). This means that timestamp settings in the\nbinary log have no effect on invocations of SYSDATE().\n\nBecause SYSDATE() can return different values even within the same\nstatement, and is not affected by SET TIMESTAMP, it is nondeterministic\nand therefore unsafe for replication if statement-based binary logging\nis used. If that is a problem, you can use row-based logging, or start\nthe server with the --sysdate-is-now option to cause SYSDATE() to be an\nalias for NOW(). The nondeterministic nature of SYSDATE() also means\nthat indexes cannot be used for evaluating expressions that refer to\nit.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (288,5,'UNINSTALL PLUGIN','Syntax:\nUNINSTALL PLUGIN plugin_name\n\nThis statement removes an installed plugin. You cannot uninstall a\nplugin if any table that uses it is open.\n\nplugin_name must be the name of some plugin that is listed in the\nmysql.plugin table. The server executes the plugin\'s deinitialization\nfunction and removes the row for the plugin from the mysql.plugin\ntable, so that subsequent server restarts will not load and initialize\nthe plugin. UNINSTALL PLUGIN does not remove the plugin\'s shared\nlibrary file.\n\nTo use UNINSTALL PLUGIN, you must have the DELETE privilege for the\nmysql.plugin table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/uninstall-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/uninstall-plugin.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (289,31,'ASBINARY','AsBinary(g), AsWKB(g)\n\nConverts a value in internal geometry format to its WKB representation\nand returns the binary result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…','SELECT AsBinary(g) FROM geom;\n','http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (290,35,'REPEAT FUNCTION','Syntax:\nREPEAT(str,count)\n\nReturns a string consisting of the string str repeated count times. If\ncount is less than 1, returns an empty string. Returns NULL if str or\ncount are NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT REPEAT(\'MySQL\', 3);\n -> \'MySQLMySQLMySQL\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (291,25,'SHOW TABLES','Syntax:\nSHOW [FULL] TABLES [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLES lists the non-TEMPORARY tables in a given database. You can\nalso get this list using the mysqlshow db_name command. The LIKE\nclause, if present, indicates which table names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nThis statement also lists any views in the database. The FULL modifier\nis supported such that SHOW FULL TABLES displays a second output\ncolumn. Values for the second column are BASE TABLE for a table and\nVIEW for a view.\n\nIf you have no privileges for a base table or view, it does not show up\nin the output from SHOW TABLES or mysqlshow db_name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-tables.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (292,30,'MAKEDATE','Syntax:\nMAKEDATE(year,dayofyear)\n\nReturns a date, given year and day-of-year values. dayofyear must be\ngreater than 0 or the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);\n -> \'2011-01-31\', \'2011-02-01\'\nmysql> SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);\n -> \'2011-12-31\', \'2014-12-31\'\nmysql> SELECT MAKEDATE(2011,0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (293,35,'BINARY OPERATOR','Syntax:\nBINARY\n\nThe BINARY operator casts the string following it to a binary string.\nThis is an easy way to force a column comparison to be done byte by\nbyte rather than character by character. This causes the comparison to\nbe case sensitive even if the column isn\'t defined as BINARY or BLOB.\nBINARY also causes trailing spaces to be significant.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','mysql> SELECT \'a\' = \'A\';\n -> 1\nmysql> SELECT BINARY \'a\' = \'A\';\n -> 0\nmysql> SELECT \'a\' = \'a \';\n -> 1\nmysql> SELECT BINARY \'a\' = \'a \';\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (294,6,'MBROVERLAPS','MBROverlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 overlap. The term spatially overlaps is\nused if two geometries intersect and their intersection results in a\ngeometry of the same dimension but not equal to either of the given\ngeometries.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (295,35,'SOUNDEX','Syntax:\nSOUNDEX(str)\n\nReturns a soundex string from str. Two strings that sound almost the\nsame should have identical soundex strings. A standard soundex string\nis four characters long, but the SOUNDEX() function returns an\narbitrarily long string. You can use SUBSTRING() on the result to get a\nstandard soundex string. All nonalphabetic characters in str are\nignored. All international alphabetic characters outside the A-Z range\nare treated as vowels.\n\n*Important*: When using SOUNDEX(), you should be aware of the following\nlimitations:\n\no This function, as currently implemented, is intended to work well\n with strings that are in the English language only. Strings in other\n languages may not produce reliable results.\n\no This function is not guaranteed to provide consistent results with\n strings that use multi-byte character sets, including utf-8.\n\n We hope to remove these limitations in a future release. See\n Bug#22638 (http://bugs.mysql.com/22638) for more information.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SOUNDEX(\'Hello\');\n -> \'H400\'\nmysql> SELECT SOUNDEX(\'Quadratically\');\n -> \'Q36324\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (296,6,'MBRTOUCHES','MBRTouches(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 touch. Two geometries spatially touch if\nthe interiors of the geometries do not intersect, but the boundary of\none of the geometries intersects either the boundary or the interior of\nthe other.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (297,37,'DROP EVENT','Syntax:\nDROP EVENT [IF EXISTS] event_name\n\nThis statement drops the event named event_name. The event immediately\nceases being active, and is deleted completely from the server.\n\nIf the event does not exist, the error ERROR 1517 (HY000): Unknown\nevent \'event_name\' results. You can override this and cause the\nstatement to generate a warning for nonexistent events instead using IF\nEXISTS.\n\nBeginning with MySQL 5.1.12, this statement requires the EVENT\nprivilege for the schema to which the event to be dropped belongs. (In\nMySQL 5.1.11 and earlier, an event could be dropped only by its\ndefiner, or by a user having the SUPER privilege.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-event.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (298,26,'INSERT SELECT','Syntax:\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n SELECT ...\n [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]\n\nWith INSERT ... SELECT, you can quickly insert many rows into a table\nfrom one or many tables. For example:\n\nINSERT INTO tbl_temp2 (fld_id)\n SELECT tbl_temp1.fld_order_id\n FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert-select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert-select.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (299,37,'CREATE PROCEDURE','Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n PROCEDURE sp_name ([proc_parameter[,...]])\n [characteristic ...] routine_body\n\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n FUNCTION sp_name ([func_parameter[,...]])\n RETURNS type\n [characteristic ...] routine_body\n\nproc_parameter:\n [ IN | OUT | INOUT ] param_name type\n\nfunc_parameter:\n param_name type\n\ntype:\n Any valid MySQL data type\n\ncharacteristic:\n LANGUAGE SQL\n | [NOT] DETERMINISTIC\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nroutine_body:\n Valid SQL procedure statement\n\nThese statements create stored routines. By default, a routine is\nassociated with the default database. To associate the routine\nexplicitly with a given database, specify the name as db_name.sp_name\nwhen you create it.\n\nThe CREATE FUNCTION statement is also used in MySQL to support UDFs\n(user-defined functions). See\nhttp://dev.mysql.com/doc/refman/5.1/en/adding-functions.html. A UDF can\nbe regarded as an external stored function. However, do note that\nstored functions share their namespace with UDFs. See\nhttp://dev.mysql.com/doc/refman/5.1/en/function-resolution.html, for\nthe rules describing how the server interprets references to different\nkinds of functions.\n\nTo invoke a stored procedure, use the CALL statement (see [HELP CALL]).\nTo invoke a stored function, refer to it in an expression. The function\nreturns a value during expression evaluation.\n\nTo execute the CREATE PROCEDURE or CREATE FUNCTION statement, it is\nnecessary to have the CREATE ROUTINE privilege. By default, MySQL\nautomatically grants the ALTER ROUTINE and EXECUTE privileges to the\nroutine creator. This behavior can be changed by disabling the\nautomatic_sp_privileges system variable. See\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-routines-privileges.html… binary logging is enabled, the CREATE FUNCTION statement might also\nrequire the SUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html.\n\… DEFINER and SQL SECURITY clauses specify the security context to be\nused when checking access privileges at routine execution time, as\ndescribed later.\n\nIf the routine name is the same as the name of a built-in SQL function,\na syntax error occurs unless you use a space between the name and the\nfollowing parenthesis when defining the routine or invoking it later.\nFor this reason, avoid using the names of existing SQL functions for\nyour own stored routines.\n\nThe IGNORE_SPACE SQL mode applies to built-in functions, not to stored\nroutines. It is always allowable to have spaces after a stored routine\nname, regardless of whether IGNORE_SPACE is enabled.\n\nThe parameter list enclosed within parentheses must always be present.\nIf there are no parameters, an empty parameter list of () should be\nused. Parameter names are not case sensitive.\n\nEach parameter is an IN parameter by default. To specify otherwise for\na parameter, use the keyword OUT or INOUT before the parameter name.\n\n*Note*: Specifying a parameter as IN, OUT, or INOUT is valid only for a\nPROCEDURE. (FUNCTION parameters are always regarded as IN parameters.)\n\nAn IN parameter passes a value into a procedure. The procedure might\nmodify the value, but the modification is not visible to the caller\nwhen the procedure returns. An OUT parameter passes a value from the\nprocedure back to the caller. Its initial value is NULL within the\nprocedure, and its value is visible to the caller when the procedure\nreturns. An INOUT parameter is initialized by the caller, can be\nmodified by the procedure, and any change made by the procedure is\nvisible to the caller when the procedure returns.\n\nFor each OUT or INOUT parameter, pass a user-defined variable in the\nCALL statement that invokes the procedure so that you can obtain its\nvalue when the procedure returns. If you are calling the procedure from\nwithin another stored procedure or function, you can also pass a\nroutine parameter or local routine variable as an IN or INOUT\nparameter.\n\nThe following example shows a simple stored procedure that uses an OUT\nparameter:\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE simpleproc (OUT param1 INT)\n -> BEGIN\n -> SELECT COUNT(*) INTO param1 FROM t;\n -> END//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter ;\n\nmysql> CALL simpleproc(@a);\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @a;\n+------+\n| @a |\n+------+\n| 3 |\n+------+\n1 row in set (0.00 sec)\n\nThe example uses the mysql client delimiter command to change the\nstatement delimiter from ; to // while the procedure is being defined.\nThis allows the ; delimiter used in the procedure body to be passed\nthrough to the server rather than being interpreted by mysql itself.\nSee\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-defini… RETURNS clause may be specified only for a FUNCTION, for which it\nis mandatory. It indicates the return type of the function, and the\nfunction body must contain a RETURN value statement. If the RETURN\nstatement returns a value of a different type, the value is coerced to\nthe proper type. For example, if a function specifies an ENUM or SET\nvalue in the RETURNS clause, but the RETURN statement returns an\ninteger, the value returned from the function is the string for the\ncorresponding ENUM member of set of SET members.\n\nThe following example function takes a parameter, performs an operation\nusing an SQL function, and returns the result. In this case, it is\nunnecessary to use delimiter because the function definition contains\nno internal ; statement delimiters:\n\nmysql> CREATE FUNCTION hello (s CHAR(20))\nmysql> RETURNS CHAR(50) DETERMINISTIC\n -> RETURN CONCAT(\'Hello, \',s,\'!\');\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT hello(\'world\');\n+----------------+\n| hello(\'world\') |\n+----------------+\n| Hello, world! |\n+----------------+\n1 row in set (0.00 sec)\n\nParameter types and function return types can be declared to use any\nvalid data type, except that the COLLATE attribute cannot be used.\n\nThe routine_body consists of a valid SQL procedure statement. This can\nbe a simple statement such as SELECT or INSERT, or it can be a compound\nstatement written using BEGIN and END. Compound statements can contain\ndeclarations, loops, and other control structure statements. The syntax\nfor these statements is described in\nhttp://dev.mysql.com/doc/refman/5.1/en/sql-syntax-compound-statements.h… allows routines to contain DDL statements, such as CREATE and\nDROP. MySQL also allows stored procedures (but not stored functions) to\ncontain SQL transaction statements such as COMMIT. Stored functions may\nnot contain statements that perform explicit or implicit commit or\nrollback. Support for these statements is not required by the SQL\nstandard, which states that each DBMS vendor may decide whether to\nallow them.\n\nStatements that return a result set can be used within a stored\nprocedcure but not within a stored function. This prohibition includes\nSELECT statements that do not have an INTO var_list clause and other\nstatements such as SHOW, EXPLAIN, and CHECK TABLE. For statements that\ncan be determined at function definition time to return a result set, a\nNot allowed to return a result set from a function error occurs\n(ER_SP_NO_RETSET). For statements that can be determined only at\nruntime to return a result set, a PROCEDURE %s can\'t return a result\nset in the given context error occurs (ER_SP_BADSELECT).\n\nUSE statements within stored routines are disallowed. When a routine is\ninvoked, an implicit USE db_name is performed (and undone when the\nroutine terminates). The causes the routine to have the given default\ndatabase while it executes. References to objects in databases other\nthan the routine default database should be qualified with the\nappropriate database name.\n\nFor additional information about statements that are not allowed in\nstored routines, see\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.htm… information about invoking stored procedures from within programs\nwritten in a language that has a MySQL interface, see [HELP CALL].\n\nMySQL stores the sql_mode system variable setting that is in effect at\nthe time a routine is created, and always executes the routine with\nthis setting in force, regardless of the server SQL mode in effect when\nthe routine is invoked.\n\nThe switch from the SQL mode of the invoker to that of the routine\noccurs after evaluation of arguments and assignment of the resulting\nvalues to routine parameters. If you define a routine in strict SQL\nmode but invoke it in nonstrict mode, assignment of arguments to\nroutine parameters does not take place in strict mode. If you require\nthat expressions passed to a routine be assigned in strict SQL mode,\nyou should invoke the routine with strict mode in effect.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (300,20,'VARBINARY','VARBINARY(M)\n\nThe VARBINARY type is similar to the VARCHAR type, but stores binary\nbyte strings rather than nonbinary character strings. M represents the\nmaximum column length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (301,25,'LOAD INDEX','Syntax:\nLOAD INDEX INTO CACHE\n tbl_index_list [, tbl_index_list] ...\n\ntbl_index_list:\n tbl_name\n [[INDEX|KEY] (index_name[, index_name] ...)]\n [IGNORE LEAVES]\n\nThe LOAD INDEX INTO CACHE statement preloads a table index into the key\ncache to which it has been assigned by an explicit CACHE INDEX\nstatement, or into the default key cache otherwise. LOAD INDEX INTO\nCACHE is used only for MyISAM tables. It is not supported for tables\nhaving user-defined partitioning (see\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations.html.)… IGNORE LEAVES modifier causes only blocks for the nonleaf nodes of\nthe index to be preloaded.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-index.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (302,26,'UNION','Syntax:\nSELECT ...\nUNION [ALL | DISTINCT] SELECT ...\n[UNION [ALL | DISTINCT] SELECT ...]\n\nUNION is used to combine the result from multiple SELECT statements\ninto a single result set.\n\nThe column names from the first SELECT statement are used as the column\nnames for the results returned. Selected columns listed in\ncorresponding positions of each SELECT statement should have the same\ndata type. (For example, the first column selected by the first\nstatement should have the same type as the first column selected by the\nother statements.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/union.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/union.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (303,30,'TO_DAYS','Syntax:\nTO_DAYS(date)\n\nGiven a date date, returns a day number (the number of days since year\n0).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TO_DAYS(950501);\n -> 728779\nmysql> SELECT TO_DAYS(\'2007-10-07\');\n -> 733321\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (304,35,'NOT REGEXP','Syntax:\nexpr NOT REGEXP pat, expr NOT RLIKE pat\n\nThis is the same as NOT (expr REGEXP pat).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/regexp.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/regexp.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (305,25,'SHOW INDEX','Syntax:\nSHOW {INDEX | INDEXES | KEYS}\n {FROM | IN} tbl_name\n [{FROM | IN} db_name]\n\nSHOW INDEX returns table index information. The format resembles that\nof the SQLStatistics call in ODBC.\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. These two statements are equivalent:\n\nSHOW INDEX FROM mytable FROM mydb;\nSHOW INDEX FROM mydb.mytable;\n\nYou can also list a table\'s indexes with the mysqlshow -k db_name\ntbl_name command.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-index.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (306,25,'SHOW CREATE DATABASE','Syntax:\nSHOW CREATE {DATABASE | SCHEMA} db_name\n\nShows the CREATE DATABASE statement that creates the given database.\nSHOW CREATE SCHEMA is a synonym for SHOW CREATE DATABASE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-database.html\n\n','mysql> SHOW CREATE DATABASE test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n\nmysql> SHOW CREATE SCHEMA test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-database.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (307,22,'LEAVE','Syntax:\nLEAVE label\n\nThis statement is used to exit the flow control construct that has the\ngiven label. It can be used within BEGIN ... END or loop constructs\n(LOOP, REPEAT, WHILE).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/leave-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/leave-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (308,17,'NOT IN','Syntax:\nexpr NOT IN (value,...)\n\nThis is the same as NOT (expr IN (value,...)).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (309,13,'!','Syntax:\nNOT, !\n\nLogical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is\nnonzero, and NOT NULL returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT NOT 10;\n -> 0\nmysql> SELECT NOT 0;\n -> 1\nmysql> SELECT NOT NULL;\n -> NULL\nmysql> SELECT ! (1+1);\n -> 0\nmysql> SELECT ! 1+1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (310,22,'DECLARE HANDLER','Syntax:\nDECLARE handler_type HANDLER\n FOR condition_value [, condition_value] ...\n statement\n\nhandler_type:\n CONTINUE\n | EXIT\n | UNDO\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | condition_name\n | SQLWARNING\n | NOT FOUND\n | SQLEXCEPTION\n | mysql_error_code\n\nThe DECLARE ... HANDLER statement specifies handlers that each may deal\nwith one or more conditions. If one of these conditions occurs, the\nspecified statement is executed. statement can be a simple statement\n(for example, SET var_name = value), or it can be a compound statement\nwritten using BEGIN and END (see [HELP BEGIN END]).\n\nFor a CONTINUE handler, execution of the current program continues\nafter execution of the handler statement. For an EXIT handler,\nexecution terminates for the BEGIN ... END compound statement in which\nthe handler is declared. (This is true even if the condition occurs in\nan inner block.) The UNDO handler type statement is not supported.\n\nIf a condition occurs for which no handler has been declared, the\ndefault action is EXIT.\n\nA condition_value for DECLARE ... HANDLER can be any of the following\nvalues:\n\no An SQLSTATE value (a 5-character string literal) or a MySQL error\n code (a number). You should not use SQLSTATE value \'00000\' or MySQL\n error code 0, because those indicate sucess rather than an error\n condition. For a list of SQLSTATE values and MySQL error codes, see\n http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html.\n\no A condition name previously specified with DECLARE ... CONDITION. See\n [HELP DECLARE CONDITION].\n\no SQLWARNING is shorthand for the class of SQLSTATE values that begin\n with \'01\'.\n\no NOT FOUND is shorthand for the class of SQLSTATE values that begin\n with \'02\'. This is relevant only the context of cursors and is used\n to control what happens when a cursor reaches the end of a data set.\n If no more rows are available, a No Data condition occurs with\n SQLSTATE value 02000. To detect this condition, you can set up a\n handler for it (or for a NOT FOUND condition). An example is shown in\n http://dev.mysql.com/doc/refman/5.1/en/cursors.html. This condition\n also occurs for SELECT ... INTO var_list statements that retrieve no\n rows.\n\no SQLEXCEPTION is shorthand for the class of SQLSTATE values that do\n not begin with \'00\', \'01\', or \'02\'.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html\n\n','mysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1));\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE handlerdemo ()\n -> BEGIN\n -> DECLARE CONTINUE HANDLER FOR SQLSTATE \'23000\' SET @x2 = 1;\n -> SET @x = 1;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 2;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 3;\n -> END;\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL handlerdemo()//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n +------+\n | @x |\n +------+\n | 3 |\n +------+\n 1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (311,20,'DOUBLE','DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA normal-size (double-precision) floating-point number. Allowable\nvalues are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and\n2.2250738585072014E-308 to 1.7976931348623157E+308. These are the\ntheoretical limits, based on the IEEE standard. The actual range might\nbe slightly smaller depending on your hardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits allowed by the hardware. A double-precision floating-point\nnumber is accurate to approximately 15 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (312,20,'TIME','TIME\n\nA time. The range is \'-838:59:59\' to \'838:59:59\'. MySQL displays TIME\nvalues in \'HH:MM:SS\' format, but allows assignment of values to TIME\ncolumns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (313,13,'&&','Syntax:\nAND, &&\n\nLogical AND. Evaluates to 1 if all operands are nonzero and not NULL,\nto 0 if one or more operands are 0, otherwise NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 && 1;\n -> 1\nmysql> SELECT 1 && 0;\n -> 0\nmysql> SELECT 1 && NULL;\n -> NULL\nmysql> SELECT 0 && NULL;\n -> 0\nmysql> SELECT NULL && 0;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (314,10,'X','X(p)\n\nReturns the X-coordinate value for the point p as a double-precision\nnumber.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…','mysql> SET @pt = \'Point(56.7 53.34)\';\nmysql> SELECT X(GeomFromText(@pt));\n+----------------------+\n| X(GeomFromText(@pt)) |\n+----------------------+\n| 56.7 |\n+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (315,15,'FOUND_ROWS','Syntax:\nFOUND_ROWS()\n\nA SELECT statement may include a LIMIT clause to restrict the number of\nrows the server returns to the client. In some cases, it is desirable\nto know how many rows the statement would have returned without the\nLIMIT, but without running the statement again. To obtain this row\ncount, include a SQL_CALC_FOUND_ROWS option in the SELECT statement,\nand then invoke FOUND_ROWS() afterward:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name\n -> WHERE id > 100 LIMIT 10;\nmysql> SELECT FOUND_ROWS();\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (316,15,'SYSTEM_USER','Syntax:\nSYSTEM_USER()\n\nSYSTEM_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (317,29,'CROSSES','Crosses(g1,g2)\n\nReturns 1 if g1 spatially crosses g2. Returns NULL if g1 is a Polygon\nor a MultiPolygon, or if g2 is a Point or a MultiPoint. Otherwise,\nreturns 0.\n\nThe term spatially crosses denotes a spatial relation between two given\ngeometries that has the following properties:\n\no The two geometries intersect\n\no Their intersection results in a geometry that has a dimension that is\n one less than the maximum dimension of the two given geometries\n\no Their intersection is not equal to either of the two given geometries\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (318,26,'TRUNCATE TABLE','Syntax:\nTRUNCATE [TABLE] tbl_name\n\nTRUNCATE TABLE empties a table completely. Logically, this is\nequivalent to a DELETE statement that deletes all rows, but there are\npractical differences under some circumstances.\n\nFor an InnoDB table, InnoDB processes TRUNCATE TABLE by deleting rows\none by one if there are any FOREIGN KEY constraints that reference the\ntable. If there are no FOREIGN KEY constraints, InnoDB performs fast\ntruncation by dropping the original table and creating an empty one\nwith the same definition, which is much faster than deleting rows one\nby one. The AUTO_INCREMENT counter is reset by TRUNCATE TABLE,\nregardless of whether there is a FOREIGN KEY constraint.\n\nIn the case that FOREIGN KEY constraints reference the table, InnoDB\ndeletes rows one by one and processes the constraints on each one. If\nthe FOREIGN KEY constraint specifies DELETE CASCADE, rows from the\nchild (referenced) table are deleted, and the truncated table becomes\nempty. If the FOREIGN KEY constraint does not specify CASCADE, the\nTRUNCATE statement deletes rows one by one and stops if it encounters a\nparent row that is referenced by the child, returning this error:\n\nERROR 1451 (23000): Cannot delete or update a parent row: a foreign\nkey constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1`\nFOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))\n\nThis is the same as a DELETE statement with no WHERE clause.\n\nBeginning with MySQL 5.1.32, TRUNCATE is treated for purposes of binary\nlogging and replication as DROP TABLE followed by CREATE TABLE --- that\nis, as DDL rather than DML. This is due to the fact that, when using\nInnoDB and other transactional storage engines where the transaction\nisolation level does not allow for statement-based logging (READ\nCOMMITTED or READ UNCOMMITTED), the statement was not logged and\nreplicated when using STATEMENT or MIXED logging mode. (Bug#36763\n(http://bugs.mysql.com/36763)) However, it is still applied on\nreplication slaves using InnoDB in the manner described previously.\n\nThe count of rows affected by TRUNCATE TABLE is accurate only when it\nis mapped to a DELETE statement.\n\nFor other storage engines, TRUNCATE TABLE differs from DELETE in the\nfollowing ways in MySQL 5.1:\n\no Truncate operations drop and re-create the table, which is much\n faster than deleting rows one by one, particularly for large tables.\n\no Truncate operations cause an implicit commit.\n\no Truncation operations cannot be performed if the session holds an\n active table lock.\n\no Truncation operations do not return a meaningful value for the number\n of deleted rows. The usual result is "0 rows affected," which should\n be interpreted as "no information."\n\no As long as the table format file tbl_name.frm is valid, the table can\n be re-created as an empty table with TRUNCATE TABLE, even if the data\n or index files have become corrupted.\n\no The table handler does not remember the last used AUTO_INCREMENT\n value, but starts counting from the beginning. This is true even for\n MyISAM and InnoDB, which normally do not reuse sequence values.\n\no When used with partitioned tables, TRUNCATE TABLE preserves the\n partitioning; that is, the data and index files are dropped and\n re-created, while the partition definitions (.par) file is\n unaffected.\n\no Since truncation of a table does not make any use of DELETE, the\n TRUNCATE statement does not invoke ON DELETE triggers.\n\nTRUNCATE TABLE requires the DROP privilege as of MySQL 5.1.16. (Before\n5.1.16, it requires the DELETE privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/truncate.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/truncate.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (319,16,'BIT_XOR','Syntax:\nBIT_XOR(expr)\n\nReturns the bitwise XOR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (320,30,'CURRENT_DATE','Syntax:\nCURRENT_DATE, CURRENT_DATE()\n\nCURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (321,25,'START SLAVE','Syntax:\nSTART SLAVE [thread_type [, thread_type] ... ]\nSTART SLAVE [SQL_THREAD] UNTIL\n MASTER_LOG_FILE = \'log_name\', MASTER_LOG_POS = log_pos\nSTART SLAVE [SQL_THREAD] UNTIL\n RELAY_LOG_FILE = \'log_name\', RELAY_LOG_POS = log_pos\n\nthread_type: IO_THREAD | SQL_THREAD\n\nSTART SLAVE with no thread_type options starts both of the slave\nthreads. The I/O thread reads queries from the master server and stores\nthem in the relay log. The SQL thread reads the relay log and executes\nthe queries. START SLAVE requires the SUPER privilege.\n\nIf START SLAVE succeeds in starting the slave threads, it returns\nwithout any error. However, even in that case, it might be that the\nslave threads start and then later stop (for example, because they do\nnot manage to connect to the master or read its binary logs, or some\nother problem). START SLAVE does not warn you about this. You must\ncheck the slave\'s error log for error messages generated by the slave\nthreads, or check that they are running satisfactorily with SHOW SLAVE\nSTATUS.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/start-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/start-slave.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (322,2,'AREA','Area(poly)\n\nReturns as a double-precision number the area of the Polygon value\npoly, as measured in its spatial reference system.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly = \'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))\';\nmysql> SELECT Area(GeomFromText(@poly));\n+---------------------------+\n| Area(GeomFromText(@poly)) |\n+---------------------------+\n| 4 |\n+---------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (323,22,'BEGIN END','Syntax:\n[begin_label:] BEGIN\n [statement_list]\nEND [end_label]\n\nBEGIN ... END syntax is used for writing compound statements, which can\nappear within stored programs. A compound statement can contain\nmultiple statements, enclosed by the BEGIN and END keywords.\nstatement_list represents a list of one or more statements, each\nterminated by a semicolon (;) statement delimiter. statement_list is\noptional, which means that the empty compound statement (BEGIN END) is\nlegal.\n\nUse of multiple statements requires that a client is able to send\nstatement strings containing the ; statement delimiter. This is handled\nin the mysql command-line client with the delimiter command. Changing\nthe ; end-of-statement delimiter (for example, to //) allows ; to be\nused in a program body. For an example, see\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html.\… compound statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/begin-end.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/begin-end.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (324,25,'FLUSH','Syntax:\nFLUSH [NO_WRITE_TO_BINLOG | LOCAL]\n flush_option [, flush_option] ...\n\nThe FLUSH statement clears or reloads various internal caches used by\nMySQL. To execute FLUSH, you must have the RELOAD privilege.\n\nThe RESET statement is similar to FLUSH. See [HELP RESET].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/flush.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/flush.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (325,25,'SHOW PROCEDURE STATUS','Syntax:\nSHOW PROCEDURE STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is a MySQL extension. It returns characteristics of a\nstored procedure, such as the database, name, type, creator, creation\nand modification dates, and character set information. A similar\nstatement, SHOW FUNCTION STATUS, displays information about stored\nfunctions (see [HELP SHOW FUNCTION STATUS]).\n\nThe LIKE clause, if present, indicates which procedure or function\nnames to match. The WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-procedure-status.html\n\n','mysql> SHOW PROCEDURE STATUS LIKE \'sp1\'\\G\n*************************** 1. row ***************************\n Db: test\n Name: sp1\n Type: PROCEDURE\n Definer: testuser@localhost\n Modified: 2004-08-03 15:29:37\n Created: 2004-08-03 15:29:37\n Security_type: DEFINER\n Comment:\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-procedure-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (326,25,'SHOW WARNINGS','Syntax:\nSHOW WARNINGS [LIMIT [offset,] row_count]\nSHOW COUNT(*) WARNINGS\n\nSHOW WARNINGS shows the error, warning, and note messages that resulted\nfrom the last statement that generated messages in the current session.\nIt shows nothing if the last statement used a table and generated no\nmessages. (That is, a statement that uses a table but generates no\nmessages clears the message list.) Statements that do not use tables\nand do not generate messages have no effect on the message list.\n\nWarnings are generated for DML statements such as INSERT, UPDATE, and\nLOAD DATA INFILE as well as DDL statements such as CREATE TABLE and\nALTER TABLE.\n\nA related statement, SHOW ERRORS, shows only the errors. See [HELP SHOW\nERRORS].\n\nThe SHOW COUNT(*) WARNINGS statement displays the total number of\nerrors, warnings, and notes. You can also retrieve this number from the\nwarning_count variable:\n\nSHOW COUNT(*) WARNINGS;\nSELECT @@warning_count;\n\nThe value of warning_count might be greater than the number of messages\ndisplayed by SHOW WARNINGS if the max_error_count system variable is\nset so low that not all messages are stored. An example shown later in\nthis section demonstrates how this can happen.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-warnings.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-warnings.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (327,27,'DESCRIBE','Syntax:\n{DESCRIBE | DESC} tbl_name [col_name | wild]\n\nDESCRIBE provides information about the columns in a table. It is a\nshortcut for SHOW COLUMNS FROM. These statements also display\ninformation for views. (See [HELP SHOW COLUMNS].)\n\ncol_name can be a column name, or a string containing the SQL "%" and\n"_" wildcard characters to obtain output only for the columns with\nnames matching the string. There is no need to enclose the string\nwithin quotes unless it contains spaces or other special characters.\n\nmysql> DESCRIBE City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n5 rows in set (0.00 sec)\n\nThe description for SHOW COLUMNS provides more information about the\noutput columns (see [HELP SHOW COLUMNS]).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/describe.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/describe.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (328,9,'DROP USER','Syntax:\nDROP USER user [, user] ...\n\nThe DROP USER statement removes one or more MySQL accounts. It removes\nprivilege rows for the account from all grant tables. To use this\nstatement, you must have the global CREATE USER privilege or the DELETE\nprivilege for the mysql database. Each account is named using the same\nformat as for the GRANT statement; for example, \'jeffrey\'@\'localhost\'.\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used. For additional information about specifying\naccount names, see [HELP GRANT].\n\nWith DROP USER, you can remove an account and its privileges as\nfollows:\n\nDROP USER user;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-user.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (329,16,'STDDEV_POP','Syntax:\nSTDDEV_POP(expr)\n\nReturns the population standard deviation of expr (the square root of\nVAR_POP()). You can also use STD() or STDDEV(), which are equivalent\nbut not standard SQL.\n\nSTDDEV_POP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (330,25,'SHOW CHARACTER SET','Syntax:\nSHOW CHARACTER SET\n [LIKE \'pattern\' | WHERE expr]\n\nThe SHOW CHARACTER SET statement shows all available character sets.\nThe LIKE clause, if present, indicates which character set names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. For example:\n\nmysql> SHOW CHARACTER SET LIKE \'latin%\';\n+---------+-----------------------------+-------------------+--------+\n| Charset | Description | Default collation | Maxlen |\n+---------+-----------------------------+-------------------+--------+\n| latin1 | cp1252 West European | latin1_swedish_ci | 1 |\n| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |\n| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |\n| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |\n+---------+-----------------------------+-------------------+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-character-set.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-character-set.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (331,35,'SUBSTRING','Syntax:\nSUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len),\nSUBSTRING(str FROM pos FOR len)\n\nThe forms without a len argument return a substring from string str\nstarting at position pos. The forms with a len argument return a\nsubstring len characters long from string str, starting at position\npos. The forms that use FROM are standard SQL syntax. It is also\npossible to use a negative value for pos. In this case, the beginning\nof the substring is pos characters from the end of the string, rather\nthan the beginning. A negative value may be used for pos in any of the\nforms of this function.\n\nFor all forms of SUBSTRING(), the position of the first character in\nthe string from which the substring is to be extracted is reckoned as\n1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SUBSTRING(\'Quadratically\',5);\n -> \'ratically\'\nmysql> SELECT SUBSTRING(\'foobarbar\' FROM 4);\n -> \'barbar\'\nmysql> SELECT SUBSTRING(\'Quadratically\',5,6);\n -> \'ratica\'\nmysql> SELECT SUBSTRING(\'Sakila\', -3);\n -> \'ila\'\nmysql> SELECT SUBSTRING(\'Sakila\', -5, 3);\n -> \'aki\'\nmysql> SELECT SUBSTRING(\'Sakila\' FROM -4 FOR 2);\n -> \'ki\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (332,34,'ISEMPTY','IsEmpty(g)\n\nReturns 1 if the geometry value g is the empty geometry, 0 if it is not\nempty, and -1 if the argument is NULL. If the geometry is empty, it\nrepresents the empty point set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (333,25,'SHOW FUNCTION STATUS','Syntax:\nSHOW FUNCTION STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is similar to SHOW PROCEDURE STATUS but for stored\nfunctions. See [HELP SHOW PROCEDURE STATUS].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-function-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-function-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (334,35,'LTRIM','Syntax:\nLTRIM(str)\n\nReturns the string str with leading space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LTRIM(\' barbar\');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (335,29,'INTERSECTS','Intersects(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially intersects g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (336,26,'CALL','Syntax:\nCALL sp_name([parameter[,...]])\nCALL sp_name[()]\n\nThe CALL statement invokes a stored procedure that was defined\npreviously with CREATE PROCEDURE.\n\nAs of MySQL 5.1.13, stored procedures that take no arguments can be\ninvoked without parentheses. That is, CALL p() and CALL p are\nequivalent.\n\nCALL can pass back values to its caller using parameters that are\ndeclared as OUT or INOUT parameters. When the procedure returns, a\nclient program can also obtain the number of rows affected for the\nfinal statement executed within the routine: At the SQL level, call the\nROW_COUNT() function; from the C API, call the mysql_affected_rows()\nfunction.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/call.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/call.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (337,6,'MBRDISJOINT','MBRDisjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 are disjoint (do not intersect).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (338,14,'VALUES','Syntax:\nVALUES(col_name)\n\nIn an INSERT ... ON DUPLICATE KEY UPDATE statement, you can use the\nVALUES(col_name) function in the UPDATE clause to refer to column\nvalues from the INSERT portion of the statement. In other words,\nVALUES(col_name) in the UPDATE clause refers to the value of col_name\nthat would be inserted, had no duplicate-key conflict occurred. This\nfunction is especially useful in multiple-row inserts. The VALUES()\nfunction is meaningful only in INSERT ... ON DUPLICATE KEY UPDATE\nstatements and returns NULL otherwise.\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html…: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)\n -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (339,35,'SUBSTRING_INDEX','Syntax:\nSUBSTRING_INDEX(str,delim,count)\n\nReturns the substring from string str before count occurrences of the\ndelimiter delim. If count is positive, everything to the left of the\nfinal delimiter (counting from the left) is returned. If count is\nnegative, everything to the right of the final delimiter (counting from\nthe right) is returned. SUBSTRING_INDEX() performs a case-sensitive\nmatch when searching for delim.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', 2);\n -> \'www.mysql\'\nmysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', -2);\n -> \'mysql.com\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (340,11,'ENCODE','Syntax:\nENCODE(str,pass_str)\n\nEncrypt str using pass_str as the password. To decrypt the result, use\nDECODE().\n\nThe result is a binary string of the same length as str.\n\nThe strength of the encryption is based on how good the random\ngenerator is. It should suffice for short strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (341,22,'LOOP','Syntax:\n[begin_label:] LOOP\n statement_list\nEND LOOP [end_label]\n\nLOOP implements a simple loop construct, enabling repeated execution of\nthe statement list, which consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter. The statements\nwithin the loop are repeated until the loop is exited; usually this is\naccomplished with a LEAVE statement.\n\nA LOOP statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/loop-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/loop-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (342,4,'TRUNCATE','Syntax:\nTRUNCATE(X,D)\n\nReturns the number X, truncated to D decimal places. If D is 0, the\nresult has no decimal point or fractional part. D can be negative to\ncause D digits left of the decimal point of the value X to become zero.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT TRUNCATE(1.223,1);\n -> 1.2\nmysql> SELECT TRUNCATE(1.999,1);\n -> 1.9\nmysql> SELECT TRUNCATE(1.999,0);\n -> 1\nmysql> SELECT TRUNCATE(-1.999,1);\n -> -1.9\nmysql> SELECT TRUNCATE(122,-2);\n -> 100\nmysql> SELECT TRUNCATE(10.28*100,0);\n -> 1028\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (343,30,'TIMESTAMPADD','Syntax:\nTIMESTAMPADD(unit,interval,datetime_expr)\n\nAdds the integer expression interval to the date or datetime expression\ndatetime_expr. The unit for interval is given by the unit argument,\nwhich should be one of the following values: FRAC_SECOND\n(microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or\nYEAR.\n\nBeginning with MySQL 5.1.24, it is possible to use MICROSECOND in place\nof FRAC_SECOND with this function, and FRAC_SECOND is deprecated.\n\nThe unit value may be specified using one of keywords as shown, or with\na prefix of SQL_TSI_. For example, DAY and SQL_TSI_DAY both are legal.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPADD(MINUTE,1,\'2003-01-02\');\n -> \'2003-01-02 00:01:00\'\nmysql> SELECT TIMESTAMPADD(WEEK,1,\'2003-01-02\');\n -> \'2003-01-09\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (344,25,'SHOW','SHOW has many forms that provide information about databases, tables,\ncolumns, or status information about the server. This section describes\nthose following:\n\nSHOW AUTHORS\nSHOW CHARACTER SET [like_or_where]\nSHOW COLLATION [like_or_where]\nSHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]\nSHOW CONTRIBUTORS\nSHOW CREATE DATABASE db_name\nSHOW CREATE EVENT event_name\nSHOW CREATE FUNCTION func_name\nSHOW CREATE PROCEDURE proc_name\nSHOW CREATE TABLE tbl_name\nSHOW CREATE TRIGGER trigger_name\nSHOW CREATE VIEW view_name\nSHOW DATABASES [like_or_where]\nSHOW ENGINE engine_name {STATUS | MUTEX}\nSHOW [STORAGE] ENGINES\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW [FULL] EVENTS\nSHOW FUNCTION CODE func_name\nSHOW FUNCTION STATUS [like_or_where]\nSHOW GRANTS FOR user\nSHOW INDEX FROM tbl_name [FROM db_name]\nSHOW INNODB STATUS\nSHOW OPEN TABLES [FROM db_name] [like_or_where]\nSHOW PLUGINS\nSHOW PROCEDURE CODE proc_name\nSHOW PROCEDURE STATUS [like_or_where]\nSHOW PRIVILEGES\nSHOW [FULL] PROCESSLIST\nSHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]\nSHOW PROFILES\nSHOW SCHEDULER STATUS\nSHOW [GLOBAL | SESSION] STATUS [like_or_where]\nSHOW TABLE STATUS [FROM db_name] [like_or_where]\nSHOW TABLES [FROM db_name] [like_or_where]\nSHOW TRIGGERS [FROM db_name] [like_or_where]\nSHOW [GLOBAL | SESSION] VARIABLES [like_or_where]\nSHOW WARNINGS [LIMIT [offset,] row_count]\n\nlike_or_where:\n LIKE \'pattern\'\n | WHERE expr\n\nIf the syntax for a given SHOW statement includes a LIKE \'pattern\'\npart, \'pattern\' is a string that can contain the SQL "%" and "_"\nwildcard characters. The pattern is useful for restricting statement\noutput to matching values.\n\nSeveral SHOW statements also accept a WHERE clause that provides more\nflexibility in specifying which rows to display. See\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (345,17,'GREATEST','Syntax:\nGREATEST(value1,value2,...)\n\nWith two or more arguments, returns the largest (maximum-valued)\nargument. The arguments are compared using the same rules as for\nLEAST().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT GREATEST(2,0);\n -> 2\nmysql> SELECT GREATEST(34.0,3.0,5.0,767.0);\n -> 767.0\nmysql> SELECT GREATEST(\'B\',\'A\',\'C\');\n -> \'C\'\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (346,25,'SHOW VARIABLES','Syntax:\nSHOW [GLOBAL | SESSION] VARIABLES\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW VARIABLES shows the values of MySQL system variables. This\ninformation also can be obtained using the mysqladmin variables\ncommand. The LIKE clause, if present, indicates which variable names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. This\nstatement does not require any privilege. It requires only the ability\nto connect to the server.\n\nWith the GLOBAL modifier, SHOW VARIABLES displays the values that are\nused for new connections to MySQL. With SESSION, it displays the values\nthat are in effect for the current connection. If no modifier is\npresent, the default is SESSION. LOCAL is a synonym for SESSION.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern. To obtain the row for a\nspecific variable, use a LIKE clause as shown:\n\nSHOW VARIABLES LIKE \'max_join_size\';\nSHOW SESSION VARIABLES LIKE \'max_join_size\';\n\nTo get a list of variables whose name match a pattern, use the "%"\nwildcard character in a LIKE clause:\n\nSHOW VARIABLES LIKE \'%size%\';\nSHOW GLOBAL VARIABLES LIKE \'%size%\';\n\nWildcard characters can be used in any position within the pattern to\nbe matched. Strictly speaking, because "_" is a wildcard that matches\nany single character, you should escape it as "\\_" to match it\nliterally. In practice, this is rarely necessary.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-variables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-variables.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (347,25,'BINLOG','Syntax:\nBINLOG \'str\'\n\nBINLOG is an internal-use statement. It is generated by the mysqlbinlog\nprogram as the printable representation of certain events in binary log\nfiles. (See http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html.)\nThe \'str\' value is a base 64-encoded string the that server decodes to\ndetermine the data change indicated by the corresponding event. This\nstatement requires the SUPER privilege. It was added in MySQL 5.1.5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/binlog.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/binlog.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (348,16,'BIT_AND','Syntax:\nBIT_AND(expr)\n\nReturns the bitwise AND of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (349,30,'SECOND','Syntax:\nSECOND(time)\n\nReturns the second for time, in the range 0 to 59.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SECOND(\'10:05:03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (350,4,'ATAN2','Syntax:\nATAN(Y,X), ATAN2(Y,X)\n\nReturns the arc tangent of the two variables X and Y. It is similar to\ncalculating the arc tangent of Y / X, except that the signs of both\narguments are used to determine the quadrant of the result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(-2,2);\n -> -0.78539816339745\nmysql> SELECT ATAN2(PI(),0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (351,6,'MBRCONTAINS','MBRContains(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1\ncontains the Minimum Bounding Rectangle of g2. This tests the opposite\nrelationship as MBRWithin().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Point(1 1)\');\nmysql> SELECT MBRContains(@g1,@g2), MBRContains(@g2,@g1);\n----------------------+----------------------+\n| MBRContains(@g1,@g2) | MBRContains(@g2,@g1) |\n+----------------------+----------------------+\n| 1 | 0 |\n+----------------------+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (352,30,'HOUR','Syntax:\nHOUR(time)\n\nReturns the hour for time. The range of the return value is 0 to 23 for\ntime-of-day values. However, the range of TIME values actually is much\nlarger, so HOUR can return values greater than 23.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT HOUR(\'10:05:03\');\n -> 10\nmysql> SELECT HOUR(\'272:59:59\');\n -> 272\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (353,26,'SELECT','Syntax:\nSELECT\n [ALL | DISTINCT | DISTINCTROW ]\n [HIGH_PRIORITY]\n [STRAIGHT_JOIN]\n [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]\n [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]\n select_expr [, select_expr ...]\n [FROM table_references\n [WHERE where_condition]\n [GROUP BY {col_name | expr | position}\n [ASC | DESC], ... [WITH ROLLUP]]\n [HAVING where_condition]\n [ORDER BY {col_name | expr | position}\n [ASC | DESC], ...]\n [LIMIT {[offset,] row_count | row_count OFFSET offset}]\n [PROCEDURE procedure_name(argument_list)]\n [INTO OUTFILE \'file_name\' export_options\n | INTO DUMPFILE \'file_name\'\n | INTO var_name [, var_name]]\n [FOR UPDATE | LOCK IN SHARE MODE]]\n\nSELECT is used to retrieve rows selected from one or more tables, and\ncan include UNION statements and subqueries. See [HELP UNION], and\nhttp://dev.mysql.com/doc/refman/5.1/en/subqueries.html.\n\nThe most commonly used clauses of SELECT statements are these:\n\no Each select_expr indicates a column that you want to retrieve. There\n must be at least one select_expr.\n\no table_references indicates the table or tables from which to retrieve\n rows. Its syntax is described in [HELP JOIN].\n\no The WHERE clause, if given, indicates the condition or conditions\n that rows must satisfy to be selected. where_condition is an\n expression that evaluates to true for each row to be selected. The\n statement selects all rows if there is no WHERE clause.\n\n In the WHERE clause, you can use any of the functions and operators\n that MySQL supports, except for aggregate (summary) functions. See\n http://dev.mysql.com/doc/refman/5.1/en/functions.html.\n\nSELECT can also be used to retrieve rows computed without reference to\nany table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/select.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (354,4,'COT','Syntax:\nCOT(X)\n\nReturns the cotangent of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT COT(12);\n -> -1.5726734063977\nmysql> SELECT COT(0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (355,25,'SHOW CREATE EVENT','Syntax:\nSHOW CREATE EVENT event_name\n\nThis statement displays the CREATE EVENT statement needed to re-create\na given event. For example (using the same event e_daily defined and\nthen altered in [HELP SHOW EVENTS]):\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-event.html\n\n','mysql> SHOW CREATE EVENT test.e_daily\\G\n*************************** 1. row ***************************\n Event: e_daily\n sql_mode:\n time_zone: SYSTEM\n Create Event: CREATE EVENT `e_daily`\n ON SCHEDULE EVERY 1 DAY\n STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR\n ON COMPLETION NOT PRESERVE\n ENABLE\n COMMENT \'Saves total number of sessions then\n clears the table each day\'\n DO BEGIN\n INSERT INTO site_activity.totals (time, total)\n SELECT CURRENT_TIMESTAMP, COUNT(*)\n FROM site_activity.sessions;\n DELETE FROM site_activity.sessions;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-event.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (356,19,'BACKUP TABLE','Syntax:\nBACKUP TABLE tbl_name [, tbl_name] ... TO \'/path/to/backup/directory\'\n\n*Note*: This statement is deprecated. We are working on a better\nreplacement for it that will provide online backup capabilities. In the\nmeantime, the mysqlhotcopy script can be used instead.\n\nBACKUP TABLE copies to the backup directory the minimum number of table\nfiles needed to restore the table, after flushing any buffered changes\nto disk. The statement works only for MyISAM tables. It copies the .frm\ndefinition and .MYD data files. The .MYI index file can be rebuilt from\nthose two files. The directory should be specified as a full path name.\nTo restore the table, use RESTORE TABLE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/backup-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/backup-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (357,35,'LOAD_FILE','Syntax:\nLOAD_FILE(file_name)\n\nReads the file and returns the file contents as a string. To use this\nfunction, the file must be located on the server host, you must specify\nthe full path name to the file, and you must have the FILE privilege.\nThe file must be readable by all and its size less than\nmax_allowed_packet bytes. If the secure_file_priv system variable is\nset to a nonempty directory name, the file to be loaded must be located\nin that directory.\n\nIf the file does not exist or cannot be read because one of the\npreceding conditions is not satisfied, the function returns NULL.\n\nAs of MySQL 5.1.6, the character_set_filesystem system variable\ncontrols interpretation of file names that are given as literal\nstrings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> UPDATE t\n SET blob_col=LOAD_FILE(\'/tmp/picture\')\n WHERE id=1;\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (358,25,'LOAD TABLE FROM MASTER','Syntax:\nLOAD TABLE tbl_name FROM MASTER\n\nThis feature is deprecated and should be avoided. It is subject to\nremoval in a future version of MySQL.\n\nSince the current implementation of LOAD DATA FROM MASTER and LOAD\nTABLE FROM MASTER is very limited, these statements are deprecated in\nversions 4.1 of MySQL and above. We will introduce a more advanced\ntechnique (called "online backup") in a future version. That technique\nwill have the additional advantage of working with more storage\nengines.\n\nFor MySQL 5.1 and earlier, the recommended alternative solution to\nusing LOAD DATA FROM MASTER or LOAD TABLE FROM MASTER is using\nmysqldump or mysqlhotcopy. The latter requires Perl and two Perl\nmodules (DBI and DBD:mysql) and works for MyISAM and ARCHIVE tables\nonly. With mysqldump, you can create SQL dumps on the master and pipe\n(or copy) these to a mysql client on the slave. This has the advantage\nof working for all storage engines, but can be quite slow, since it\nworks using SELECT.\n\nTransfers a copy of the table from the master to the slave. This\nstatement is implemented mainly debugging LOAD DATA FROM MASTER\noperations. To use LOAD TABLE, the account used for connecting to the\nmaster server must have the RELOAD and SUPER privileges on the master\nand the SELECT privilege for the master table to load. On the slave\nside, the user that issues LOAD TABLE FROM MASTER must have privileges\nfor dropping and creating the table.\n\nThe conditions for LOAD DATA FROM MASTER apply here as well. For\nexample, LOAD TABLE FROM MASTER works only for MyISAM tables. The\ntimeout notes for LOAD DATA FROM MASTER apply as well.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-table-from-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-table-from-master.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (359,3,'POINTFROMTEXT','PointFromText(wkt[,srid])\n\nConstructs a POINT value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (360,16,'GROUP_CONCAT','Syntax:\nGROUP_CONCAT(expr)\n\nThis function returns a string result with the concatenated non-NULL\nvalues from a group. It returns NULL if there are no non-NULL values.\nThe full syntax is as follows:\n\nGROUP_CONCAT([DISTINCT] expr [,expr ...]\n [ORDER BY {unsigned_integer | col_name | expr}\n [ASC | DESC] [,col_name ...]]\n [SEPARATOR str_val])\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name,\n -> GROUP_CONCAT(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (361,30,'DATE_FORMAT','Syntax:\nDATE_FORMAT(date,format)\n\nFormats the date value according to the format string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2009-10-04 22:23:00\', \'%W %M %Y\');\n -> \'Sunday October 2009\'\nmysql> SELECT DATE_FORMAT(\'2007-10-04 22:23:00\', \'%H:%i:%s\');\n -> \'22:23:00\'\nmysql> SELECT DATE_FORMAT(\'1900-10-04 22:23:00\',\n -> \'%D %y %a %d %m %b %j\');\n -> \'4th 00 Thu 04 10 Oct 277\'\nmysql> SELECT DATE_FORMAT(\'1997-10-04 22:23:00\',\n -> \'%H %k %I %r %T %S %w\');\n -> \'22 22 10 10:23:00 PM 22:23:00 00 6\'\nmysql> SELECT DATE_FORMAT(\'1999-01-01\', \'%X %V\');\n -> \'1998 52\'\nmysql> SELECT DATE_FORMAT(\'2006-06-00\', \'%d\');\n -> \'00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (362,15,'BENCHMARK','Syntax:\nBENCHMARK(count,expr)\n\nThe BENCHMARK() function executes the expression expr repeatedly count\ntimes. It may be used to time how quickly MySQL processes the\nexpression. The result value is always 0. The intended use is from\nwithin the mysql client, which reports query execution times:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\'));\n+----------------------------------------------+\n| BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\')) |\n+----------------------------------------------+\n| 0 |\n+----------------------------------------------+\n1 row in set (4.74 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (363,30,'YEAR','Syntax:\nYEAR(date)\n\nReturns the year for date, in the range 1000 to 9999, or 0 for the\n"zero" date.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT YEAR(\'1987-01-01\');\n -> 1987\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (364,25,'SHOW ENGINE','Syntax:\nSHOW ENGINE engine_name {STATUS | MUTEX}\n\nSHOW ENGINE displays operational information about a storage engine.\nThe following statements currently are supported:\n\nSHOW ENGINE INNODB STATUS\nSHOW ENGINE INNODB MUTEX\nSHOW ENGINE {NDB | NDBCLUSTER} STATUS\n\nOlder (and now deprecated) synonyms are SHOW INNODB STATUS for SHOW\nENGINE INNODB STATUS and SHOW MUTEX STATUS for SHOW ENGINE INNODB\nMUTEX.\n\nIn MySQL 5.0, SHOW ENGINE INNODB MUTEX is invoked as SHOW MUTEX STATUS.\nThe latter statement displays similar information but in a somewhat\ndifferent output format.\n\nSHOW ENGINE BDB LOGS formerly displayed status information about BDB\nlog files. As of MySQL 5.1.12, the BDB storage engine is not supported,\nand this statement produces a warning.\n\nSHOW ENGINE INNODB STATUS displays extensive information from the\nstandard InnoDB Monitor about the state of the InnoDB storage engine.\nFor information about the standard monitor and other InnoDB Monitors\nthat provide information about InnoDB processing, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-monitors.html.\n\nSHOW ENGINE INNODB MUTEX displays InnoDB mutex statistics. From MySQL\n5.1.2 to 5.1.14, the statement displays the following output fields:\n\no Type\n\n Always InnoDB.\n\no Name\n\n The mutex name and the source file where it is implemented. Example:\n &pool->mutex:mem0pool.c\n\n The mutex name indicates its purpose. For example, the log_sys mutex\n is used by the InnoDB logging subsystem and indicates how intensive\n logging activity is. The buf_pool mutex protects the InnoDB buffer\n pool.\n\no Status\n\n The mutex status. The fields contains several values:\n\n o count indicates how many times the mutex was requested.\n\n o spin_waits indicates how many times the spinlock had to run.\n\n o spin_rounds indicates the number of spinlock rounds. (spin_rounds\n divided by spin_waits provides the average round count.)\n\n o os_waits indicates the number of operating system waits. This\n occurs when the spinlock did not work (the mutex was not locked\n during the spinlock and it was necessary to yield to the operating\n system and wait).\n\n o os_yields indicates the number of times a the thread trying to lock\n a mutex gave up its timeslice and yielded to the operating system\n (on the presumption that allowing other threads to run will free\n the mutex so that it can be locked).\n\n o os_wait_times indicates the amount of time (in ms) spent in\n operating system waits, if the timed_mutexes system variable is 1\n (ON). If timed_mutexes is 0 (OFF), timing is disabled, so\n os_wait_times is 0. timed_mutexes is off by default.\n\nFrom MySQL 5.1.15 on, the statement displays the following output\nfields:\n\no Type\n\n Always InnoDB.\n\no Name\n\n The source file where the mutex is implemented, and the line number\n in the file where the mutex is created. The line number may change\n depending on your version of MySQL.\n\no Status\n\n This field displays the same values as previously described (count,\n spin_waits, spin_rounds, os_waits, os_yields, os_wait_times), but\n only if UNIV_DEBUG was defined at MySQL compilation time (for\n example, in include/univ.h in the InnoDB part of the MySQL source\n tree). If UNIV_DEBUG was not defined, the statement displays only the\n os_waits value. In the latter case (without UNIV_DEBUG), the\n information on which the output is based is insufficient to\n distinguish regular mutexes and mutexes that protect rw-locks (which\n allow multiple readers or a single writer). Consequently, the output\n may appear to contain multiple rows for the same mutex.\n\nInformation from this statement can be used to diagnose system\nproblems. For example, large values of spin_waits and spin_rounds may\nindicate scalability problems.\n\nIf the server has the NDBCLUSTER storage engine enabled, SHOW ENGINE\nNDB STATUS displays cluster status information such as the number of\nconnected data nodes, the cluster connectstring, and cluster binlog\nepochs, as well as counts of various Cluster API objects created by the\nMySQL Server when connected to the cluster. Sample output from this\nstatement is shown here:\n\nmysql> SHOW ENGINE NDB STATUS;\n+------------+-----------------------+--------------------------------------------------+\n| Type | Name | Status |\n+------------+-----------------------+--------------------------------------------------+\n| ndbcluster | connection | cluster_node_id=7,\n connected_host=192.168.0.103, connected_port=1186, number_of_data_nodes=4,\n number_of_ready_data_nodes=3, connect_count=0 |\n| ndbcluster | NdbTransaction | created=6, free=0, sizeof=212 |\n| ndbcluster | NdbOperation | created=8, free=8, sizeof=660 |\n| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744 |\n| ndbcluster | NdbIndexOperation | created=0, free=0, sizeof=664 |\n| ndbcluster | NdbRecAttr | created=1285, free=1285, sizeof=60 |\n| ndbcluster | NdbApiSignal | created=16, free=16, sizeof=136 |\n| ndbcluster | NdbLabel | created=0, free=0, sizeof=196 |\n| ndbcluster | NdbBranch | created=0, free=0, sizeof=24 |\n| ndbcluster | NdbSubroutine | created=0, free=0, sizeof=68 |\n| ndbcluster | NdbCall | created=0, free=0, sizeof=16 |\n| ndbcluster | NdbBlob | created=1, free=1, sizeof=264 |\n| ndbcluster | NdbReceiver | created=4, free=0, sizeof=68 |\n| ndbcluster | binlog | latest_epoch=155467, latest_trans_epoch=148126,\n latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0,\n latest_applied_binlog_epoch=0 |\n+------------+-----------------------+--------------------------------------------------+\n\nThe rows with connection and binlog in the Name column were added to\nthe output of this statement in MySQL 5.1. The Status column in each of\nthese rows provides information about the MySQL server\'s connection to\nthe cluster and about the cluster binary log\'s status, respectively.\nThe Status information is in the form of comma-delimited set of\nname/value pairs.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-engine.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-engine.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (365,14,'NAME_CONST','Syntax:\nNAME_CONST(name,value)\n\nReturns the given value. When used to produce a result set column,\nNAME_CONST() causes the column to have the given name. The arguments\nshould be constants.\n\nmysql> SELECT NAME_CONST(\'myname\', 14);\n+--------+\n| myname |\n+--------+\n| 14 |\n+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (366,14,'RELEASE_LOCK','Syntax:\nRELEASE_LOCK(str)\n\nReleases the lock named by the string str that was obtained with\nGET_LOCK(). Returns 1 if the lock was released, 0 if the lock was not\nestablished by this thread (in which case the lock is not released),\nand NULL if the named lock did not exist. The lock does not exist if it\nwas never obtained by a call to GET_LOCK() or if it has previously been\nreleased.\n\nThe DO statement is convenient to use with RELEASE_LOCK(). See [HELP\nDO].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (367,17,'IS NULL','Syntax:\nIS NULL\n\nTests whether a value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;\n -> 0, 0, 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (368,30,'CONVERT_TZ','Syntax:\nCONVERT_TZ(dt,from_tz,to_tz)\n\nCONVERT_TZ() converts a datetime value dt from the time zone given by\nfrom_tz to the time zone given by to_tz and returns the resulting\nvalue. Time zones are specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html. This\nfunction returns NULL if the arguments are invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'GMT\',\'MET\');\n -> \'2004-01-01 13:00:00\'\nmysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'+00:00\',\'+10:00\');\n -> \'2004-01-01 22:00:00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (369,30,'TIME_TO_SEC','Syntax:\nTIME_TO_SEC(time)\n\nReturns the time argument, converted to seconds.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_TO_SEC(\'22:23:00\');\n -> 80580\nmysql> SELECT TIME_TO_SEC(\'00:39:38\');\n -> 2378\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (370,30,'WEEKDAY','Syntax:\nWEEKDAY(date)\n\nReturns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 =\nSunday).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKDAY(\'2008-02-03 22:23:00\');\n -> 6\nmysql> SELECT WEEKDAY(\'2007-11-06\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (371,35,'EXPORT_SET','Syntax:\nEXPORT_SET(bits,on,off[,separator[,number_of_bits]])\n\nReturns a string such that for every bit set in the value bits, you get\nan on string and for every bit not set in the value, you get an off\nstring. Bits in bits are examined from right to left (from low-order to\nhigh-order bits). Strings are added to the result from left to right,\nseparated by the separator string (the default being the comma\ncharacter ","). The number of bits examined is given by number_of_bits\n(defaults to 64).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT EXPORT_SET(5,\'Y\',\'N\',\',\',4);\n -> \'Y,N,Y,N\'\nmysql> SELECT EXPORT_SET(6,\'1\',\'0\',\',\',10);\n -> \'0,1,1,0,0,0,0,0,0,0\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (372,37,'ALTER SERVER','Syntax:\nALTER SERVER server_name\n OPTIONS (option [, option] ...)\n\nAlters the server information for server_name, adjusting the specified\noptions as per the CREATE SERVER command. See [HELP CREATE SERVER]. The\ncorresponding fields in the mysql.servers table are updated\naccordingly. This statement requires the SUPER privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-server.html\n\n','ALTER SERVER s OPTIONS (USER \'sally\');\n','http://dev.mysql.com/doc/refman/5.1/en/alter-server.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (373,30,'TIME FUNCTION','Syntax:\nTIME(expr)\n\nExtracts the time part of the time or datetime expression expr and\nreturns it as a string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME(\'2003-12-31 01:02:03\');\n -> \'01:02:03\'\nmysql> SELECT TIME(\'2003-12-31 01:02:03.000123\');\n -> \'01:02:03.000123\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (374,30,'DATE_ADD','Syntax:\nDATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)\n\nThese functions perform date arithmetic. The date argument specifies\nthe starting date or datetime value. expr is an expression specifying\nthe interval value to be added or subtracted from the starting date.\nexpr is a string; it may start with a "-" for negative intervals. unit\nis a keyword indicating the units in which the expression should be\ninterpreted.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT \'2008-12-31 23:59:59\' + INTERVAL 1 SECOND;\n -> \'2009-01-01 00:00:00\'\nmysql> SELECT INTERVAL 1 DAY + \'2008-12-31\';\n -> \'2009-01-01\'\nmysql> SELECT \'2005-01-01\' - INTERVAL 1 SECOND;\n -> \'2004-12-31 23:59:59\'\nmysql> SELECT DATE_ADD(\'2000-12-31 23:59:59\',\n -> INTERVAL 1 SECOND);\n -> \'2001-01-01 00:00:00\'\nmysql> SELECT DATE_ADD(\'2010-12-31 23:59:59\',\n -> INTERVAL 1 DAY);\n -> \'2011-01-01 23:59:59\'\nmysql> SELECT DATE_ADD(\'2100-12-31 23:59:59\',\n -> INTERVAL \'1:1\' MINUTE_SECOND);\n -> \'2101-01-01 00:01:00\'\nmysql> SELECT DATE_SUB(\'2005-01-01 00:00:00\',\n -> INTERVAL \'1 1:1:1\' DAY_SECOND);\n -> \'2004-12-30 22:58:59\'\nmysql> SELECT DATE_ADD(\'1900-01-01 00:00:00\',\n -> INTERVAL \'-1 10\' DAY_HOUR);\n -> \'1899-12-30 14:00:00\'\nmysql> SELECT DATE_SUB(\'1998-01-02\', INTERVAL 31 DAY);\n -> \'1997-12-02\'\nmysql> SELECT DATE_ADD(\'1992-12-31 23:59:59.000002\',\n -> INTERVAL \'1.999999\' SECOND_MICROSECOND);\n -> \'1993-01-01 00:00:01.000001\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (375,35,'CAST','Syntax:\nCAST(expr AS type)\n\nThe CAST() function takes a value of one type and produce a value of\nanother type, similar to CONVERT(). See the description of CONVERT()\nfor more information.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (376,35,'SOUNDS LIKE','Syntax:\nexpr1 SOUNDS LIKE expr2\n\nThis is the same as SOUNDEX(expr1) = SOUNDEX(expr2).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (377,30,'PERIOD_DIFF','Syntax:\nPERIOD_DIFF(P1,P2)\n\nReturns the number of months between periods P1 and P2. P1 and P2\nshould be in the format YYMM or YYYYMM. Note that the period arguments\nP1 and P2 are not date values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_DIFF(200802,200703);\n -> 11\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (378,35,'LIKE','Syntax:\nexpr LIKE pat [ESCAPE \'escape_char\']\n\nPattern matching using SQL simple regular expression comparison.\nReturns 1 (TRUE) or 0 (FALSE). If either expr or pat is NULL, the\nresult is NULL.\n\nThe pattern need not be a literal string. For example, it can be\nspecified as a string expression or table column.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','mysql> SELECT \'David!\' LIKE \'David_\';\n -> 1\nmysql> SELECT \'David!\' LIKE \'%D%v%\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (379,23,'MULTIPOINT','MultiPoint(pt1,pt2,...)\n\nConstructs a MultiPoint value using Point or WKB Point arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (380,18,'>>','Syntax:\n>>\n\nShifts a longlong (BIGINT) number to the right.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 4 >> 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (381,22,'FETCH','Syntax:\nFETCH cursor_name INTO var_name [, var_name] ...\n\nThis statement fetches the next row (if a row exists) using the\nspecified open cursor, and advances the cursor pointer.\n\nIf no more rows are available, a No Data condition occurs with SQLSTATE\nvalue 02000. To detect this condition, you can set up a handler for it\n(or for a NOT FOUND condition). An example is shown in\nhttp://dev.mysql.com/doc/refman/5.1/en/cursors.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/fetch.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/fetch.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (382,16,'AVG','Syntax:\nAVG([DISTINCT] expr)\n\nReturns the average value of expr. The DISTINCT option can be used to\nreturn the average of the distinct values of expr.\n\nAVG() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name, AVG(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (383,28,'TRUE FALSE','The constants TRUE and FALSE evaluate to 1 and 0, respectively. The\nconstant names can be written in any lettercase.\n\nmysql> SELECT TRUE, true, FALSE, false;\n -> 1, 1, 0, 0\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/boolean-values.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/boolean-values.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (384,6,'MBRWITHIN','MBRWithin(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1\nis within the Minimum Bounding Rectangle of g2. This tests the opposite\nrelationship as MBRContains().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Polygon((0 0,0 5,5 5,5 0,0 0))\');\nmysql> SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1);\n+--------------------+--------------------+\n| MBRWithin(@g1,@g2) | MBRWithin(@g2,@g1) |\n+--------------------+--------------------+\n| 1 | 0 |\n+--------------------+--------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (385,17,'IN','Syntax:\nexpr IN (value,...)\n\nReturns 1 if expr is equal to any of the values in the IN list, else\nreturns 0. If all values are constants, they are evaluated according to\nthe type of expr and sorted. The search for the item then is done using\na binary search. This means IN is very quick if the IN value list\nconsists entirely of constants. Otherwise, type conversion takes place\naccording to the rules described in\nhttp://dev.mysql.com/doc/refman/5.1/en/type-conversion.html, but\napplied to all the arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 IN (0,3,5,7);\n -> 0\nmysql> SELECT \'wefwf\' IN (\'wee\',\'wefwf\',\'weg\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (386,35,'QUOTE','Syntax:\nQUOTE(str)\n\nQuotes a string to produce a result that can be used as a properly\nescaped data value in an SQL statement. The string is returned enclosed\nby single quotes and with each instance of single quote ("\'"),\nbackslash ("\\"), ASCII NUL, and Control-Z preceded by a backslash. If\nthe argument is NULL, the return value is the word "NULL" without\nenclosing single quotes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT QUOTE(\'Don\\\'t!\');\n -> \'Don\\\'t!\'\nmysql> SELECT QUOTE(NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (387,15,'SESSION_USER','Syntax:\nSESSION_USER()\n\nSESSION_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (388,25,'HELP COMMAND','Syntax:\nmysql> help search_string\n\nIf you provide an argument to the help command, mysql uses it as a\nsearch string to access server-side help from the contents of the MySQL\nReference Manual. The proper operation of this command requires that\nthe help tables in the mysql database be initialized with help topic\ninformation (see\nhttp://dev.mysql.com/doc/refman/5.1/en/server-side-help-support.html).… there is no match for the search string, the search fails:\n\nmysql> help me\n\nNothing found\nPlease try to run \'help contents\' for a list of all accessible topics\n\nUse help contents to see a list of the help categories:\n\nmysql> help contents\nYou asked for help about help category: "Contents"\nFor more information, type \'help <item>\', where <item> is one of the\nfollowing categories:\n Account Management\n Administration\n Data Definition\n Data Manipulation\n Data Types\n Functions\n Functions and Modifiers for Use with GROUP BY\n Geographic Features\n Language Structure\n Plugins\n Storage Engines\n Stored Routines\n Table Maintenance\n Transactions\n Triggers\n\nIf the search string matches multiple items, mysql shows a list of\nmatching topics:\n\nmysql> help logs\nMany help items for your request exist.\nTo make a more specific request, please type \'help <item>\',\nwhere <item> is one of the following topics:\n SHOW\n SHOW BINARY LOGS\n SHOW ENGINE\n SHOW LOGS\n\nUse a topic as the search string to see the help entry for that topic:\n\nmysql> help show binary logs\nName: \'SHOW BINARY LOGS\'\nDescription:\nSyntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [purge-binary-logs], that shows how\nto determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mysql-server-side-help.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mysql-server-side-help.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (389,30,'QUARTER','Syntax:\nQUARTER(date)\n\nReturns the quarter of the year for date, in the range 1 to 4.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT QUARTER(\'2008-04-01\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (390,35,'POSITION','Syntax:\nPOSITION(substr IN str)\n\nPOSITION(substr IN str) is a synonym for LOCATE(substr,str).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (391,25,'SHOW CREATE FUNCTION','Syntax:\nSHOW CREATE FUNCTION func_name\n\nThis statement is similar to SHOW CREATE PROCEDURE but for stored\nfunctions. See [HELP SHOW CREATE PROCEDURE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-function.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (392,14,'IS_USED_LOCK','Syntax:\nIS_USED_LOCK(str)\n\nChecks whether the lock named str is in use (that is, locked). If so,\nit returns the connection identifier of the client that holds the lock.\nOtherwise, it returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (393,3,'POLYFROMTEXT','PolyFromText(wkt[,srid]), PolygonFromText(wkt[,srid])\n\nConstructs a POLYGON value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (394,11,'DES_ENCRYPT','Syntax:\nDES_ENCRYPT(str[,{key_num|key_str}])\n\nEncrypts the string with the given key using the Triple-DES algorithm.\n\nThis function works only if MySQL has been configured with SSL support.\nSee http://dev.mysql.com/doc/refman/5.1/en/secure-connections.html.\n\nThe encryption key to use is chosen based on the second argument to\nDES_ENCRYPT(), if one was given. With no argument, the first key from\nthe DES key file is used. With a key_num argument, the given key number\n(0-9) from the DES key file is used. With a key_str argument, the given\nkey string is used to encrypt str.\n\nThe key file can be specified with the --des-key-file server option.\n\nThe return string is a binary string where the first character is\nCHAR(128 | key_num). If an error occurs, DES_ENCRYPT() returns NULL.\n\nThe 128 is added to make it easier to recognize an encrypted key. If\nyou use a string key, key_num is 127.\n\nThe string length for the result is given by this formula:\n\nnew_len = orig_len + (8 - (orig_len % 8)) + 1\n\nEach line in the DES key file has the following format:\n\nkey_num des_key_str\n\nEach key_num value must be a number in the range from 0 to 9. Lines in\nthe file may be in any order. des_key_str is the string that is used to\nencrypt the message. There should be at least one space between the\nnumber and the key. The first key is the default key that is used if\nyou do not specify any key argument to DES_ENCRYPT().\n\nYou can tell MySQL to read new key values from the key file with the\nFLUSH DES_KEY_FILE statement. This requires the RELOAD privilege.\n\nOne benefit of having a set of default keys is that it gives\napplications a way to check for the existence of encrypted column\nvalues, without giving the end user the right to decrypt those values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT customer_address FROM customer_table \n > WHERE crypted_credit_card = DES_ENCRYPT(\'credit_card_number\');\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (395,4,'CEIL','Syntax:\nCEIL(X)\n\nCEIL() is a synonym for CEILING().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (396,35,'LENGTH','Syntax:\nLENGTH(str)\n\nReturns the length of the string str, measured in bytes. A multi-byte\ncharacter counts as multiple bytes. This means that for a string\ncontaining five two-byte characters, LENGTH() returns 10, whereas\nCHAR_LENGTH() returns 5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LENGTH(\'text\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (397,30,'STR_TO_DATE','Syntax:\nSTR_TO_DATE(str,format)\n\nThis is the inverse of the DATE_FORMAT() function. It takes a string\nstr and a format string format. STR_TO_DATE() returns a DATETIME value\nif the format string contains both date and time parts, or a DATE or\nTIME value if the string contains only date or time parts. If the date,\ntime, or datetime value extracted from str is illegal, STR_TO_DATE()\nreturns NULL and produces a warning.\n\nThe server scans str attempting to match format to it. The format\nstring can contain literal characters and format specifiers beginning\nwith %. Literal characters in format must match literally in str.\nFormat specifiers in format must match a date or time part in str. For\nthe specifiers that can be used in format, see the DATE_FORMAT()\nfunction description.\n\nmysql> SELECT STR_TO_DATE(\'01,5,2013\',\'%d,%m,%Y\');\n -> \'2013-05-01\'\nmysql> SELECT STR_TO_DATE(\'May 1, 2013\',\'%M %d,%Y\');\n -> \'2013-05-01\'\n\nScanning starts at the beginning of str and fails if format is found\nnot to match. Extra characters at the end of str are ignored.\n\nmysql> SELECT STR_TO_DATE(\'a09:30:17\',\'a%h:%i:%s\');\n -> \'09:30:17\'\nmysql> SELECT STR_TO_DATE(\'a09:30:17\',\'%h:%i:%s\');\n -> NULL\nmysql> SELECT STR_TO_DATE(\'09:30:17a\',\'%h:%i:%s\');\n -> \'09:30:17\'\n\nUnspecified date or time parts have a value of 0, so incompletely\nspecified values in str produce a result with some or all parts set to\n0:\n\nmysql> SELECT STR_TO_DATE(\'abc\',\'abc\');\n -> \'0000-00-00\'\nmysql> SELECT STR_TO_DATE(\'9\',\'%m\');\n -> \'0000-09-00\'\nmysql> SELECT STR_TO_DATE(\'9\',\'%s\');\n -> \'00:00:09\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (398,10,'Y','Y(p)\n\nReturns the Y-coordinate value for the point p as a double-precision\nnumber.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…','mysql> SET @pt = \'Point(56.7 53.34)\';\nmysql> SELECT Y(GeomFromText(@pt));\n+----------------------+\n| Y(GeomFromText(@pt)) |\n+----------------------+\n| 53.34 |\n+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (399,25,'SHOW INNODB STATUS','Syntax:\nSHOW INNODB STATUS\n\nIn MySQL 5.1, this is a deprecated synonym for SHOW ENGINE INNODB\nSTATUS. See [HELP SHOW ENGINE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-innodb-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-innodb-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (400,19,'CHECKSUM TABLE','Syntax:\nCHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]\n\nCHECKSUM TABLE reports a table checksum.\n\nWith QUICK, the live table checksum is reported if it is available, or\nNULL otherwise. This is very fast. A live checksum is enabled by\nspecifying the CHECKSUM=1 table option when you create the table;\ncurrently, this is supported only for MyISAM tables. See [HELP CREATE\nTABLE].\n\nWith EXTENDED, the entire table is read row by row and the checksum is\ncalculated. This can be very slow for large tables.\n\nIf neither QUICK nor EXTENDED is specified, MySQL returns a live\nchecksum if the table storage engine supports it and scans the table\notherwise.\n\nFor a nonexistent table, CHECKSUM TABLE returns NULL and generates a\nwarning.\n\nThe checksum value depends on the table row format. If the row format\nchanges, the checksum also changes. For example, the storage format for\nVARCHAR changed between MySQL 4.1 and 5.0, so if a 4.1 table is\nupgraded to MySQL 5.0, the checksum value may change.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/checksum-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/checksum-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (401,2,'NUMINTERIORRINGS','NumInteriorRings(poly)\n\nReturns the number of interior rings in the Polygon value poly.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT NumInteriorRings(GeomFromText(@poly));\n+---------------------------------------+\n| NumInteriorRings(GeomFromText(@poly)) |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (402,2,'INTERIORRINGN','InteriorRingN(poly,N)\n\nReturns the N-th interior ring for the Polygon value poly as a\nLineString. Rings are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT AsText(InteriorRingN(GeomFromText(@poly),1));\n+----------------------------------------------+\n| AsText(InteriorRingN(GeomFromText(@poly),1)) |\n+----------------------------------------------+\n| LINESTRING(1 1,1 2,2 2,2 1,1 1) |\n+----------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (403,30,'UTC_TIME','Syntax:\nUTC_TIME, UTC_TIME()\n\nReturns the current UTC time as a value in \'HH:MM:SS\' or HHMMSS.uuuuuu\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIME(), UTC_TIME() + 0;\n -> \'18:07:53\', 180753.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (404,37,'DROP FUNCTION','The DROP FUNCTION statement is used to drop stored functions and\nuser-defined functions (UDFs):\n\no For information about dropping stored functions, see [HELP DROP\n PROCEDURE].\n\no For information about dropping user-defined functions, see [HELP DROP\n FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-function.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (405,37,'ALTER EVENT','Syntax:\nALTER\n [DEFINER = { user | CURRENT_USER }]\n EVENT event_name\n [ON SCHEDULE schedule]\n [ON COMPLETION [NOT] PRESERVE]\n [RENAME TO new_event_name]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n [DO sql_statement]\n\nThe ALTER EVENT statement is used to change one or more of the\ncharacteristics of an existing event without the need to drop and\nrecreate it. The syntax for each of the DEFINER, ON SCHEDULE, ON\nCOMPLETION, COMMENT, ENABLE / DISABLE, and DO clauses is exactly the\nsame as when used with CREATE EVENT. (See [HELP CREATE EVENT].)\n\nSupport for the DEFINER clause was added in MySQL 5.1.17.\n\nBeginning with MySQL 5.1.12, this statement requires the EVENT\nprivilege. When a user executes a successful ALTER EVENT statement,\nthat user becomes the definer for the affected event.\n\n(In MySQL 5.1.11 and earlier, an event could be altered only by its\ndefiner, or by a user having the SUPER privilege.)\n\nALTER EVENT works only with an existing event:\n\nmysql> ALTER EVENT no_such_event \n > ON SCHEDULE \n > EVERY \'2:3\' DAY_HOUR;\nERROR 1517 (HY000): Unknown event \'no_such_event\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-event.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (406,16,'STDDEV','Syntax:\nSTDDEV(expr)\n\nReturns the population standard deviation of expr. This function is\nprovided for compatibility with Oracle. The standard SQL function\nSTDDEV_POP() can be used instead.\n\nThis function returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (407,30,'DATE_SUB','Syntax:\nDATE_SUB(date,INTERVAL expr unit)\n\nSee the description for DATE_ADD().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (408,30,'PERIOD_ADD','Syntax:\nPERIOD_ADD(P,N)\n\nAdds N months to period P (in the format YYMM or YYYYMM). Returns a\nvalue in the format YYYYMM. Note that the period argument P is not a\ndate value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_ADD(200801,2);\n -> 200803\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (409,18,'|','Syntax:\n|\n\nBitwise OR:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 29 | 15;\n -> 31\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (410,3,'GEOMFROMTEXT','GeomFromText(wkt[,srid]), GeometryFromText(wkt[,srid])\n\nConstructs a geometry value of any type using its WKT representation\nand SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (411,14,'UUID_SHORT','Syntax:\nUUID_SHORT()\n\nReturns a "short" universal identifier as a 64-bit unsigned integer\n(rather than a string-form 128-bit identifier as returned by the UUID()\nfunction).\n\nThe value of UUID_SHORT() is guaranteed to be unique if the following\nconditions hold:\n\no The server_id of the current host is unique among your set of master\n and slave servers\n\no server_id is between 0 and 255\n\no You don\'t set back your system time for your server between mysqld\n restarts\n\no You do not invoke UUID_SHORT() on average more than 16 million times\n per second between mysqld restarts\n\nThe UUID_SHORT() return value is constructed this way:\n\n (server_id & 255) << 56\n+ (server_startup_time_in_seconds << 24)\n+ incremented_variable++;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID_SHORT();\n -> 92395783831158784\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (412,35,'RIGHT','Syntax:\nRIGHT(str,len)\n\nReturns the rightmost len characters from the string str, or NULL if\nany argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RIGHT(\'foobarbar\', 4);\n -> \'rbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (413,30,'DATEDIFF','Syntax:\nDATEDIFF(expr1,expr2)\n\nDATEDIFF() returns expr1 - expr2 expressed as a value in days from one\ndate to the other. expr1 and expr2 are date or date-and-time\nexpressions. Only the date parts of the values are used in the\ncalculation.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATEDIFF(\'2007-12-31 23:59:59\',\'2007-12-30\');\n -> 1\nmysql> SELECT DATEDIFF(\'2010-11-30 23:59:59\',\'2010-12-31\');\n -> -31\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (414,37,'DROP TABLESPACE','Syntax:\nDROP TABLESPACE tablespace_name\n ENGINE [=] engine_name\n\nThis statement drops a tablespace that was previously created using\nCREATE TABLESPACE (see [HELP CREATE TABLESPACE]).\n\n*Important*: The tablespace to be dropped must not contain any data\nfiles; in other words, before you can drop a tablespace, you must first\ndrop each of its data files using ALTER TABLESPACE ... DROP DATAFILE\n(see [HELP ALTER TABLESPACE]).\n\nThe ENGINE clause (required) specifies the storage engine used by the\ntablespace. In MySQL 5.1, the only accepted values for engine_name are\nNDB and NDBCLUSTER.\n\nDROP TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/drop-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-tablespace.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (415,37,'DROP PROCEDURE','Syntax:\nDROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name\n\nThis statement is used to drop a stored procedure or function. That is,\nthe specified routine is removed from the server. You must have the\nALTER ROUTINE privilege for the routine. (That privilege is granted\nautomatically to the routine creator.)\n\nThe IF EXISTS clause is a MySQL extension. It prevents an error from\noccurring if the procedure or function does not exist. A warning is\nproduced that can be viewed with SHOW WARNINGS.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-procedure.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (416,19,'CHECK TABLE','Syntax:\nCHECK TABLE tbl_name [, tbl_name] ... [option] ...\n\noption = {FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED}\n\nCHECK TABLE checks a table or tables for errors. CHECK TABLE works for\nMyISAM, InnoDB, and ARCHIVE tables. Starting with MySQL 5.1.9, CHECK\nTABLE is also valid for CSV tables, see\nhttp://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html. For\nMyISAM tables, the key statistics are updated as well.\n\nCHECK TABLE can also check views for problems, such as tables that are\nreferenced in the view definition that no longer exist.\n\nBeginning with MySQL 5.1.27, CHECK TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... CHECK PARTITION to check one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/check-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/check-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (417,35,'BIN','Syntax:\nBIN(N)\n\nReturns a string representation of the binary value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,2). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT BIN(12);\n -> \'1100\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (418,5,'INSTALL PLUGIN','Syntax:\nINSTALL PLUGIN plugin_name SONAME \'plugin_library\'\n\nThis statement installs a plugin.\n\nplugin_name is the name of the plugin as defined in the plugin\ndeclaration structure contained in the library file. Plugin names are\nnot case sensitive. For maximal compatibility, plugin names should be\nlimited to ASCII letters, digits, and underscore, because they are used\nin C source files, shell command lines, M4 and Bourne shell scripts,\nand SQL environments.\n\nplugin_library is the name of the shared library that contains the\nplugin code. The name includes the file name extension (for example,\nlibmyplugin.so or libmyplugin.dylib).\n\nThe shared library must be located in the plugin directory (that is,\nthe directory named by the plugin_dir system variable). The library\nmust be in the plugin directory itself, not in a subdirectory. By\ndefault, plugin_dir is plugin directory under the directory named by\nthe pkglibdir configuration variable, but it can be changed by setting\nthe value of plugin_dir at server startup. For example, set its value\nin a my.cnf file:\n\n[mysqld]\nplugin_dir=/path/to/plugin/directory\n\nIf the value of plugin_dir is a relative path name, it is taken to be\nrelative to the MySQL base directory (the value of the basedir system\nvariable).\n\nINSTALL PLUGIN adds a line to the mysql.plugin table that describes the\nplugin. This table contains the plugin name and library file name.\n\nAs of MySQL 5.1.33, INSTALL PLUGIN causes the server to read option\n(my.cnf) files just as during server startup. This enables the plugin\nto pick up any relevant options from those files. It is possible to add\nplugin options to an option file even before loading a plugin (if the\nloose prefix is used). It is also possible to uninstall a plugin, edit\nmy.cnf, and install the plugin again. Restarting the plugin this way\nenables it to the new option values without a server restart.\n\nBefore MySQL 5.1.33, a plugin is started with each option set to its\ndefault value.\n\nINSTALL PLUGIN also loads and initializes the plugin code to make the\nplugin available for use. A plugin is initialized by executing its\ninitialization function, which handles any setup that the plugin must\nperform before it can be used.\n\nTo use INSTALL PLUGIN, you must have the INSERT privilege for the\nmysql.plugin table.\n\nAt server startup, the server loads and initializes any plugin that is\nlisted in the mysql.plugin table. This means that a plugin is installed\nwith INSTALL PLUGIN only once, not every time the server starts. Plugin\nloading at startup does not occur if the server is started with the\n--skip-grant-tables option.\n\nWhen the server shuts down, it executes the deinitialization function\nfor each plugin that is loaded so that the plugin has a change to\nperform any final cleanup.\n\nFor options that control individual plugin loading at server startup,\nsee http://dev.mysql.com/doc/refman/5.1/en/server-plugin-options.html.\nIf you need to load plugins for a single server startup when the\n--skip-grant-tables option is given (which tells the server not to read\nsystem tables), use the --plugin-load option. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-options.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/install-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/install-plugin.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (419,22,'DECLARE CURSOR','Syntax:\nDECLARE cursor_name CURSOR FOR select_statement\n\nThis statement declares a cursor. Multiple cursors may be declared in a\nstored program, but each cursor in a given block must have a unique\nname.\n\nThe SELECT statement cannot have an INTO clause.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-cursor.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-cursor.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (420,26,'LOAD DATA','Syntax:\nLOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE \'file_name\'\n [REPLACE | IGNORE]\n INTO TABLE tbl_name\n [CHARACTER SET charset_name]\n [{FIELDS | COLUMNS}\n [TERMINATED BY \'string\']\n [[OPTIONALLY] ENCLOSED BY \'char\']\n [ESCAPED BY \'char\']\n ]\n [LINES\n [STARTING BY \'string\']\n [TERMINATED BY \'string\']\n ]\n [IGNORE number LINES]\n [(col_name_or_user_var,...)]\n [SET col_name = expr,...]\n\nThe LOAD DATA INFILE statement reads rows from a text file into a table\nat a very high speed. The file name must be given as a literal string.\n\nLOAD DATA INFILE is the complement of SELECT ... INTO OUTFILE. (See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.) To write data from\na table to a file, use SELECT ... INTO OUTFILE. To read the file back\ninto a table, use LOAD DATA INFILE. The syntax of the FIELDS and LINES\nclauses is the same for both statements. Both clauses are optional, but\nFIELDS must precede LINES if both are specified.\n\nFor more information about the efficiency of INSERT versus LOAD DATA\nINFILE and speeding up LOAD DATA INFILE, see\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-speed.html.\n\nThe character set indicated by the character_set_database system\nvariable is used to interpret the information in the file. SET NAMES\nand the setting of character_set_client do not affect interpretation of\ninput. If the contents of the input file use a character set that\ndiffers from the default, it is usually preferable to specify the\ncharacter set of the file by using the CHARACTER SET clause, which is\navailable as of MySQL 5.1.17. A character set of binary specifies "no\nconversion."\n\nLOAD DATA INFILE interprets all fields in the file as having the same\ncharacter set, regardless of the data types of the columns into which\nfield values are loaded. For proper interpretation of file contents,\nyou must ensure that it was written with the correct character set. For\nexample, if you write a data file with mysqldump -T or by issuing a\nSELECT ... INTO OUTFILE statement in mysql, be sure to use a\n--default-character-set option with mysqldump or mysql so that output\nis written in the character set to be used when the file is loaded with\nLOAD DATA INFILE.\n\nNote that it is currently not possible to load data files that use the\nucs2, utf16, or utf32 character set.\n\nAs of MySQL 5.1.6, the character_set_filesystem system variable\ncontrols the interpretation of the file name.\n\nYou can also load data files by using the mysqlimport utility; it\noperates by sending a LOAD DATA INFILE statement to the server. The\n--local option causes mysqlimport to read data files from the client\nhost. You can specify the --compress option to get better performance\nover slow networks if the client and server support the compressed\nprotocol. See http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html.\n\nIf you use LOW_PRIORITY, execution of the LOAD DATA statement is\ndelayed until no other clients are reading from the table. This affects\nonly storage engines that use only table-level locking (MyISAM, MEMORY,\nMERGE).\n\nIf you specify CONCURRENT with a MyISAM table that satisfies the\ncondition for concurrent inserts (that is, it contains no free blocks\nin the middle), other threads can retrieve data from the table while\nLOAD DATA is executing. Using this option affects the performance of\nLOAD DATA a bit, even if no other thread is using the table at the same\ntime.\n\nCONCURRENT is not replicated when using statement-based replication;\nhowever, it is replicated when using row-based replication. See\nhttp://dev.mysql.com/doc/refman/5.1/en/replication-features-load-data.…, for more information.\n\n*Note*: Prior to MySQL 5.1.23, LOAD DATA performed very poorly when\nimporting into partitioned tables. The statement now uses buffering to\nimprove performance; however, the buffer uses 130 KB memory per\npartition to achieve this. (Bug#26527 (http://bugs.mysql.com/26527))\n\nThe LOCAL keyword, if specified, is interpreted with respect to the\nclient end of the connection:\n\no If LOCAL is specified, the file is read by the client program on the\n client host and sent to the server. The file can be given as a full\n path name to specify its exact location. If given as a relative path\n name, the name is interpreted relative to the directory in which the\n client program was started.\n\no If LOCAL is not specified, the file must be located on the server\n host and is read directly by the server. The server uses the\n following rules to locate the file:\n\n o If the file name is an absolute path name, the server uses it as\n given.\n\n o If the file name is a relative path name with one or more leading\n components, the server searches for the file relative to the\n server\'s data directory.\n\n o If a file name with no leading components is given, the server\n looks for the file in the database directory of the default\n database.\n\nNote that, in the non-LOCAL case, these rules mean that a file named as\n./myfile.txt is read from the server\'s data directory, whereas the file\nnamed as myfile.txt is read from the database directory of the default\ndatabase. For example, if db1 is the default database, the following\nLOAD DATA statement reads the file data.txt from the database directory\nfor db1, even though the statement explicitly loads the file into a\ntable in the db2 database:\n\nLOAD DATA INFILE \'data.txt\' INTO TABLE db2.my_table;\n\nWindows path names are specified using forward slashes rather than\nbackslashes. If you do use backslashes, you must double them.\n\nFor security reasons, when reading text files located on the server,\nthe files must either reside in the database directory or be readable\nby all. Also, to use LOAD DATA INFILE on server files, you must have\nthe FILE privilege. See\nhttp://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html. For\nnon-LOCAL load operations, if the secure_file_priv system variable is\nset to a nonempty directory name, the file to be loaded must be located\nin that directory.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-data.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-data.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (421,23,'MULTILINESTRING','MultiLineString(ls1,ls2,...)\n\nConstructs a MultiLineString value using LineString or WKB LineString\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (422,30,'LOCALTIME','Syntax:\nLOCALTIME, LOCALTIME()\n\nLOCALTIME and LOCALTIME() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (423,3,'MPOINTFROMTEXT','MPointFromText(wkt[,srid]), MultiPointFromText(wkt[,srid])\n\nConstructs a MULTIPOINT value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (424,20,'BLOB','BLOB[(M)]\n\nA BLOB column with a maximum length of 65,535 (216 - 1) bytes. Each\nBLOB value is stored using a two-byte length prefix that indicates the\nnumber of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest BLOB type large enough to hold\nvalues M bytes long.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (425,11,'SHA1','Syntax:\nSHA1(str), SHA(str)\n\nCalculates an SHA-1 160-bit checksum for the string, as described in\nRFC 3174 (Secure Hash Algorithm). The value is returned as a binary\nstring of 40 hex digits, or NULL if the argument was NULL. One of the\npossible uses for this function is as a hash key. You can also use it\nas a cryptographic function for storing passwords. SHA() is synonymous\nwith SHA1().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT SHA1(\'abc\');\n -> \'a9993e364706816aba3e25717850c26c9cd0d89d\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (426,35,'SUBSTR','Syntax:\nSUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str\nFROM pos FOR len)\n\nSUBSTR() is a synonym for SUBSTRING().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (427,11,'PASSWORD','Syntax:\nPASSWORD(str)\n\nCalculates and returns a password string from the plaintext password\nstr and returns a binary string, or NULL if the argument was NULL. This\nis the function that is used for encrypting MySQL passwords for storage\nin the Password column of the user grant table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT PASSWORD(\'badpwd\');\n -> \'*AAB3E285149C0135D51A520E1940DD3263DC008C\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (428,20,'CHAR','[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA fixed-length string that is always right-padded with spaces to the\nspecified length when stored. M represents the column length in\ncharacters. The range of M is 0 to 255. If M is omitted, the length is\n1.\n\n*Note*: Trailing spaces are removed when CHAR values are retrieved\nunless the PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (429,30,'UTC_DATE','Syntax:\nUTC_DATE, UTC_DATE()\n\nReturns the current UTC date as a value in \'YYYY-MM-DD\' or YYYYMMDD\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_DATE(), UTC_DATE() + 0;\n -> \'2003-08-14\', 20030814\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (430,34,'DIMENSION','Dimension(g)\n\nReturns the inherent dimension of the geometry value g. The result can\nbe -1, 0, 1, or 2. The meaning of these values is given in\nhttp://dev.mysql.com/doc/refman/5.1/en/gis-class-geometry.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT Dimension(GeomFromText(\'LineString(1 1,2 2)\'));\n+------------------------------------------------+\n| Dimension(GeomFromText(\'LineString(1 1,2 2)\')) |\n+------------------------------------------------+\n| 1 |\n+------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (431,16,'COUNT DISTINCT','Syntax:\nCOUNT(DISTINCT expr,[expr...])\n\nReturns a count of the number of different non-NULL values.\n\nCOUNT(DISTINCT) returns 0 if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT COUNT(DISTINCT results) FROM student;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (432,20,'BIT','BIT[(M)]\n\nA bit-field type. M indicates the number of bits per value, from 1 to\n64. The default is 1 if M is omitted.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (433,29,'EQUALS','Equals(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially equal to g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (434,25,'SHOW CREATE VIEW','Syntax:\nSHOW CREATE VIEW view_name\n\nThis statement shows a CREATE VIEW statement that creates the given\nview.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (435,17,'INTERVAL','Syntax:\nINTERVAL(N,N1,N2,N3,...)\n\nReturns 0 if N < N1, 1 if N < N2 and so on or -1 if N is NULL. All\narguments are treated as integers. It is required that N1 < N2 < N3 <\n... < Nn for this function to work correctly. This is because a binary\nsearch is used (very fast).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);\n -> 3\nmysql> SELECT INTERVAL(10, 1, 10, 100, 1000);\n -> 2\nmysql> SELECT INTERVAL(22, 23, 30, 44, 200);\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (436,30,'FROM_DAYS','Syntax:\nFROM_DAYS(N)\n\nGiven a day number N, returns a DATE value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_DAYS(730669);\n -> \'2007-07-03\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (437,37,'ALTER PROCEDURE','Syntax:\nALTER PROCEDURE proc_name [characteristic ...]\n\ncharacteristic:\n { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nThis statement can be used to change the characteristics of a stored\nprocedure. More than one change may be specified in an ALTER PROCEDURE\nstatement. However, you cannot change the parameters or body of a\nstored procedure using this statement; to make such changes, you must\ndrop and re-create the procedure using DROP PROCEDURE and CREATE\nPROCEDURE.\n\nYou must have the ALTER ROUTINE privilege for the procedure. (That\nprivilege is granted automatically to the procedure creator.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-procedure.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (438,18,'BIT_COUNT','Syntax:\nBIT_COUNT(N)\n\nReturns the number of bits that are set in the argument N.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT BIT_COUNT(29), BIT_COUNT(b\'101010\');\n -> 4, 3\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (439,35,'OCTET_LENGTH','Syntax:\nOCTET_LENGTH(str)\n\nOCTET_LENGTH() is a synonym for LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (440,30,'UTC_TIMESTAMP','Syntax:\nUTC_TIMESTAMP, UTC_TIMESTAMP()\n\nReturns the current UTC date and time as a value in \'YYYY-MM-DD\nHH:MM:SS\' or YYYYMMDDHHMMSS.uuuuuu format, depending on whether the\nfunction is used in a string or numeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;\n -> \'2003-08-14 18:08:04\', 20030814180804.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (441,11,'AES_ENCRYPT','Syntax:\nAES_ENCRYPT(str,key_str)\n\nAES_ENCRYPT() and AES_DECRYPT() allow encryption and decryption of data\nusing the official AES (Advanced Encryption Standard) algorithm,\npreviously known as "Rijndael." Encoding with a 128-bit key length is\nused, but you can extend it up to 256 bits by modifying the source. We\nchose 128 bits because it is much faster and it is secure enough for\nmost purposes.\n\nAES_ENCRYPT() encrypts a string and returns a binary string.\nAES_DECRYPT() decrypts the encrypted string and returns the original\nstring. The input arguments may be any length. If either argument is\nNULL, the result of this function is also NULL.\n\nBecause AES is a block-level algorithm, padding is used to encode\nuneven length strings and so the result string length may be calculated\nusing this formula:\n\n16 x (trunc(string_length / 16) + 1)\n\nIf AES_DECRYPT() detects invalid data or incorrect padding, it returns\nNULL. However, it is possible for AES_DECRYPT() to return a non-NULL\nvalue (possibly garbage) if the input data or the key is invalid.\n\nYou can use the AES functions to store data in an encrypted form by\nmodifying your queries:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','INSERT INTO t VALUES (1,AES_ENCRYPT(\'text\',\'password\'));\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (442,4,'+','Syntax:\n+\n\nAddition:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3+5;\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (443,14,'INET_NTOA','Syntax:\nINET_NTOA(expr)\n\nGiven a numeric network address in network byte order (4 or 8 byte),\nreturns the dotted-quad representation of the address as a string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_NTOA(3520061480);\n -> \'209.207.224.40\'\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (444,4,'ACOS','Syntax:\nACOS(X)\n\nReturns the arc cosine of X, that is, the value whose cosine is X.\nReturns NULL if X is not in the range -1 to 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ACOS(1);\n -> 0\nmysql> SELECT ACOS(1.0001);\n -> NULL\nmysql> SELECT ACOS(0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (445,8,'ISOLATION','Syntax:\nSET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL\n {\n READ UNCOMMITTED\n | READ COMMITTED\n | REPEATABLE READ\n | SERIALIZABLE\n }\n\nThis statement sets the transaction isolation level globally, for the\ncurrent session, or for the next transaction:\n\no With the GLOBAL keyword, the statement sets the default transaction\n level globally for all subsequent sessions. Existing sessions are\n unaffected.\n\no With the SESSION keyword, the statement sets the default transaction\n level for all subsequent transactions performed within the current\n session.\n\no Without any SESSION or GLOBAL keyword, the statement sets the\n isolation level for the next (not started) transaction performed\n within the current session.\n\nA change to the global default isolation level requires the SUPER\nprivilege. Any session is free to change its session isolation level\n(even in the middle of a transaction), or the isolation level for its\nnext transaction.\n\nTo set the global default isolation level at server startup, use the\n--transaction-isolation=level option to mysqld on the command line or\nin an option file. Values of level for this option use dashes rather\nthan spaces, so the allowable values are READ-UNCOMMITTED,\nREAD-COMMITTED, REPEATABLE-READ, or SERIALIZABLE. For example, to set\nthe default isolation level to REPEATABLE READ, use these lines in the\n[mysqld] section of an option file:\n\n[mysqld]\ntransaction-isolation = REPEATABLE-READ\n\nTo determine the global and session transaction isolation levels at\nruntime, check the value of the tx_isolation system variable:\n\nSELECT @@GLOBAL.tx_isolation, @@tx_isolation;\n\nInnoDB supports each of the translation isolation levels described here\nusing different locking strategies. The default level is REPEATABLE\nREAD. For additional information about InnoDB record-level locks and\nhow it uses them to execute various types of statements, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-record-level-locks.html,… http://dev.mysql.com/doc/refman/5.1/en/innodb-locks-set.html.\n\nThe following list describes how MySQL supports the different\ntransaction levels:\n\no READ UNCOMMITTED\n\n SELECT statements are performed in a nonlocking fashion, but a\n possible earlier version of a row might be used. Thus, using this\n isolation level, such reads are not consistent. This is also called a\n "dirty read." Otherwise, this isolation level works like READ\n COMMITTED.\n\no READ COMMITTED\n\n A somewhat Oracle-like isolation level with respect to consistent\n (nonlocking) reads: Each consistent read, even within the same\n transaction, sets and reads its own fresh snapshot. See\n http://dev.mysql.com/doc/refman/5.1/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n InnoDB locks only index records, not the gaps before them, and thus\n allows the free insertion of new records next to locked records. For\n UPDATE and DELETE statements, locking depends on whether the\n statement uses a unique index with a unique search condition (such as\n WHERE id = 100), or a range-type search condition (such as WHERE id >\n 100). For a unique index with a unique search condition, InnoDB locks\n only the index record found, not the gap before it. For range-type\n searches, InnoDB locks the index range scanned, using gap locks or\n next-key (gap plus index-record) locks to block insertions by other\n sessions into the gaps covered by the range. This is necessary\n because "phantom rows" must be blocked for MySQL replication and\n recovery to work.\n\n *Note*: In MySQL 5.1, if the READ COMMITTED isolation level is used\n or the innodb_locks_unsafe_for_binlog system variable is enabled,\n there is no InnoDB gap locking except for foreign-key constraint\n checking and duplicate-key checking. Also, record locks for\n nonmatching rows are released after MySQL has evaluated the WHERE\n condition. As of MySQL 5.1, if you use READ COMMITTED or enable\n innodb_locks_unsafe_for_binlog, you must use row-based binary\n logging.\n\no REPEATABLE READ\n\n This is the default isolation level for InnoDB. For consistent reads,\n there is an important difference from the READ COMMITTED isolation\n level: All consistent reads within the same transaction read the\n snapshot established by the first read. This convention means that if\n you issue several plain (nonlocking) SELECT statements within the\n same transaction, these SELECT statements are consistent also with\n respect to each other. See\n http://dev.mysql.com/doc/refman/5.1/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n UPDATE, and DELETE statements, locking depends on whether the\n statement uses a unique index with a unique search condition, or a\n range-type search condition. For a unique index with a unique search\n condition, InnoDB locks only the index record found, not the gap\n before it. For other search conditions, InnoDB locks the index range\n scanned, using gap locks or next-key (gap plus index-record) locks to\n block insertions by other sessions into the gaps covered by the\n range.\n\no SERIALIZABLE\n\n This level is like REPEATABLE READ, but InnoDB implicitly converts\n all plain SELECT statements to SELECT ... LOCK IN SHARE MODE if\n autocommit is disabled. If autocommit is enabled, the SELECT is its\n own transaction. It therefore is known to be read only and can be\n serialized if performed as a consistent (nonlocking) read and need\n not block for other transactions. (This means that to force a plain\n SELECT to block if other transactions have modified the selected\n rows, you should disable autocommit.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (446,4,'CEILING','Syntax:\nCEILING(X)\n\nReturns the smallest integer value not less than X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CEILING(1.23);\n -> 2\nmysql> SELECT CEILING(-1.23);\n -> -1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (447,4,'SIN','Syntax:\nSIN(X)\n\nReturns the sine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT SIN(PI());\n -> 1.2246063538224e-16\nmysql> SELECT ROUND(SIN(PI()));\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (448,30,'DAYOFWEEK','Syntax:\nDAYOFWEEK(date)\n\nReturns the weekday index for date (1 = Sunday, 2 = Monday, ..., 7 =\nSaturday). These index values correspond to the ODBC standard.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFWEEK(\'2007-02-03\');\n -> 7\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (449,25,'SHOW PROCESSLIST','Syntax:\nSHOW [FULL] PROCESSLIST\n\nSHOW PROCESSLIST shows you which threads are running. You can also get\nthis information from the INFORMATION_SCHEMA PROCESSLIST table or the\nmysqladmin processlist command. If you have the PROCESS privilege, you\ncan see all threads. Otherwise, you can see only your own threads (that\nis, threads associated with the MySQL account that you are using). If\nyou do not use the FULL keyword, only the first 100 characters of each\nstatement are shown in the Info field.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (450,31,'LINEFROMWKB','LineFromWKB(wkb[,srid]), LineStringFromWKB(wkb[,srid])\n\nConstructs a LINESTRING value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (451,34,'GEOMETRYTYPE','GeometryType(g)\n\nReturns as a string the name of the geometry type of which the geometry\ninstance g is a member. The name corresponds to one of the instantiable\nGeometry subclasses.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT GeometryType(GeomFromText(\'POINT(1 1)\'));\n+------------------------------------------+\n| GeometryType(GeomFromText(\'POINT(1 1)\')) |\n+------------------------------------------+\n| POINT |\n+------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (452,37,'CREATE VIEW','Syntax:\nCREATE\n [OR REPLACE]\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = { user | CURRENT_USER }]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThe CREATE VIEW statement creates a new view, or replaces an existing\none if the OR REPLACE clause is given. If the view does not exist,\nCREATE OR REPLACE VIEW is the same as CREATE VIEW. If the view does\nexist, CREATE OR REPLACE VIEW is the same as ALTER VIEW.\n\nThe select_statement is a SELECT statement that provides the definition\nof the view. (When you select from the view, you select in effect using\nthe SELECT statement.) select_statement can select from base tables or\nother views.\n\nThe view definition is "frozen" at creation time, so changes to the\nunderlying tables afterward do not affect the view definition. For\nexample, if a view is defined as SELECT * on a table, new columns added\nto the table later do not become part of the view.\n\nThe ALGORITHM clause affects how MySQL processes the view. The DEFINER\nand SQL SECURITY clauses specify the security context to be used when\nchecking access privileges at view invocation time. The WITH CHECK\nOPTION clause can be given to constrain inserts or updates to rows in\ntables referenced by the view. These clauses are described later in\nthis section.\n\nThe CREATE VIEW statement requires the CREATE VIEW privilege for the\nview, and some privilege for each column selected by the SELECT\nstatement. For columns used elsewhere in the SELECT statement you must\nhave the SELECT privilege. If the OR REPLACE clause is present, you\nmust also have the DROP privilege for the view.\n\nA view belongs to a database. By default, a new view is created in the\ndefault database. To create the view explicitly in a given database,\nspecify the name as db_name.view_name when you create it.\n\nmysql> CREATE VIEW test.v AS SELECT * FROM t;\n\nBase tables and views share the same namespace within a database, so a\ndatabase cannot contain a base table and a view that have the same\nname.\n\nViews must have unique column names with no duplicates, just like base\ntables. By default, the names of the columns retrieved by the SELECT\nstatement are used for the view column names. To define explicit names\nfor the view columns, the optional column_list clause can be given as a\nlist of comma-separated identifiers. The number of names in column_list\nmust be the same as the number of columns retrieved by the SELECT\nstatement.\n\n*Note*: Prior to MySQL 5.1.29, when you modify an existing view, the\ncurrent view definition is backed up and saved. It is stored in that\ntable\'s database directory, in a subdirectory named arc. The backup\nfile for a view v is named v.frm-00001. If you alter the view again,\nthe next backup is named v.frm-00002. The three latest view backup\ndefinitions are stored. Backed up view definitions are not preserved by\nmysqldump, or any other such programs, but you can retain them using a\nfile copy operation. However, they are not needed for anything but to\nprovide you with a backup of your previous view definition. It is safe\nto remove these backup definitions, but only while mysqld is not\nrunning. If you delete the arc subdirectory or its files while mysqld\nis running, you will receive an error the next time you try to alter\nthe view: mysql> ALTER VIEW v AS SELECT * FROM t; ERROR 6 (HY000):\nError on delete of \'.\\test\\arc/v.frm-0004\' (Errcode: 2)\n\nColumns retrieved by the SELECT statement can be simple references to\ntable columns. They can also be expressions that use functions,\nconstant values, operators, and so forth.\n\nUnqualified table or view names in the SELECT statement are interpreted\nwith respect to the default database. A view can refer to tables or\nviews in other databases by qualifying the table or view name with the\nproper database name.\n\nA view can be created from many kinds of SELECT statements. It can\nrefer to base tables or other views. It can use joins, UNION, and\nsubqueries. The SELECT need not even refer to any tables. The following\nexample defines a view that selects two columns from another table, as\nwell as an expression calculated from those columns:\n\nmysql> CREATE TABLE t (qty INT, price INT);\nmysql> INSERT INTO t VALUES(3, 50);\nmysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;\nmysql> SELECT * FROM v;\n+------+-------+-------+\n| qty | price | value |\n+------+-------+-------+\n| 3 | 50 | 150 |\n+------+-------+-------+\n\nA view definition is subject to the following restrictions:\n\no The SELECT statement cannot contain a subquery in the FROM clause.\n\no The SELECT statement cannot refer to system or user variables.\n\no Within a stored program, the definition cannot refer to program\n parameters or local variables.\n\no The SELECT statement cannot refer to prepared statement parameters.\n\no Any table or view referred to in the definition must exist. However,\n after a view has been created, it is possible to drop a table or view\n that the definition refers to. In this case, use of the view results\n in an error. To check a view definition for problems of this kind,\n use the CHECK TABLE statement.\n\no The definition cannot refer to a TEMPORARY table, and you cannot\n create a TEMPORARY view.\n\no Any tables named in the view definition must exist at definition\n time.\n\no You cannot associate a trigger with a view.\n\no As of MySQL 5.1.23, aliases for column names in the SELECT statement\n are checked against the maximum column length of 64 characters (not\n the maximum alias length of 256 characters).\n\nORDER BY is allowed in a view definition, but it is ignored if you\nselect from a view using a statement that has its own ORDER BY.\n\nFor other options or clauses in the definition, they are added to the\noptions or clauses of the statement that references the view, but the\neffect is undefined. For example, if a view definition includes a LIMIT\nclause, and you select from the view using a statement that has its own\nLIMIT clause, it is undefined which limit applies. This same principle\napplies to options such as ALL, DISTINCT, or SQL_SMALL_RESULT that\nfollow the SELECT keyword, and to clauses such as INTO, FOR UPDATE,\nLOCK IN SHARE MODE, and PROCEDURE.\n\nIf you create a view and then change the query processing environment\nby changing system variables, that may affect the results that you get\nfrom the view:\n\nmysql> CREATE VIEW v (mycol) AS SELECT \'abc\';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SET sql_mode = \'\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT "mycol" FROM v;\n+-------+\n| mycol |\n+-------+\n| mycol |\n+-------+\n1 row in set (0.01 sec)\n\nmysql> SET sql_mode = \'ANSI_QUOTES\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT "mycol" FROM v;\n+-------+\n| mycol |\n+-------+\n| abc |\n+-------+\n1 row in set (0.00 sec)\n\nThe DEFINER and SQL SECURITY clauses determine which MySQL account to\nuse when checking access privileges for the view when a statement is\nexecuted that references the view. They were addded in MySQL 5.1.2. The\nlegal SQL SECURITY characteristic values are DEFINER and INVOKER. These\nindicate that the required privileges must be held by the user who\ndefined or invoked the view, respectively. The default SQL SECURITY\nvalue is DEFINER.\n\nIf a user value is given for the DEFINER clause, it should be a MySQL\naccount in \'user_name\'@\'host_name\' format (the same format used in the\nGRANT statement). The user_name and host_name values both are required.\nThe definer can also be given as CURRENT_USER or CURRENT_USER(). The\ndefault DEFINER value is the user who executes the CREATE VIEW\nstatement. This is the same as specifying DEFINER = CURRENT_USER\nexplicitly.\n\nIf you specify the DEFINER clause, these rules determine the legal\nDEFINER user values:\n\no If you do not have the SUPER privilege, the only legal user value is\n your own account, either specified literally or by using\n CURRENT_USER. You cannot set the definer to some other account.\n\no If you have the SUPER privilege, you can specify any syntactically\n legal account name. If the account does not actually exist, a warning\n is generated.\n\no If the SQL SECURITY value is DEFINER but the definer account does not\n exist when the view is referenced, an error occurs.\n\nWithin a view definition, CURRENT_USER returns the view\'s DEFINER value\nby default as of MySQL 5.1.12. For older versions, and for views\ndefined with the SQL SECURITY INVOKER characteristic, CURRENT_USER\nreturns the account for the view\'s invoker. For information about user\nauditing within views, see\nhttp://dev.mysql.com/doc/refman/5.1/en/account-activity-auditing.html.… a stored routine that is defined with the SQL SECURITY DEFINER\ncharacteristic, CURRENT_USER returns the routine\'s DEFINER value. This\nalso affects a view defined within such a program, if the view\ndefinition contains a DEFINER value of CURRENT_USER.\n\nAs of MySQL 5.1.2 (when the DEFINER and SQL SECURITY clauses were\nimplemented), view privileges are checked like this:\n\no At view definition time, the view creator must have the privileges\n needed to use the top-level objects accessed by the view. For\n example, if the view definition refers to table columns, the creator\n must have privileges for the columns, as described previously. If the\n definition refers to a stored function, only the privileges needed to\n invoke the function can be checked. The privileges required when the\n function runs can be checked only as it executes: For different\n invocations of the function, different execution paths within the\n function might be taken.\n\no When a view is referenced, privileges for objects accessed by the\n view are checked against the privileges held by the view creator or\n invoker, depending on whether the SQL SECURITY characteristic is\n DEFINER or INVOKER, respectively.\n\no If reference to a view causes execution of a stored function,\n privilege checking for statements executed within the function depend\n on whether the function is defined with a SQL SECURITY characteristic\n of DEFINER or INVOKER. If the security characteristic is DEFINER, the\n function runs with the privileges of its creator. If the\n characteristic is INVOKER, the function runs with the privileges\n determined by the view\'s SQL SECURITY characteristic.\n\nPrior to MySQL 5.1.2 (before the DEFINER and SQL SECURITY clauses were\nimplemented), privileges required for objects used in a view are\nchecked at view creation time.\n\nExample: A view might depend on a stored function, and that function\nmight invoke other stored routines. For example, the following view\ninvokes a stored function f():\n\nCREATE VIEW v AS SELECT * FROM t WHERE t.id = f(t.name);\n\nSuppose that f() contains a statement such as this:\n\nIF name IS NULL then\n CALL p1();\nELSE\n CALL p2();\nEND IF;\n\nThe privileges required for executing statements within f() need to be\nchecked when f() executes. This might mean that privileges are needed\nfor p1() or p2(), depending on the execution path within f(). Those\nprivileges must be checked at runtime, and the user who must possess\nthe privileges is determined by the SQL SECURITY values of the view v\nand the function f().\n\nThe DEFINER and SQL SECURITY clauses for views are extensions to\nstandard SQL. In standard SQL, views are handled using the rules for\nSQL SECURITY INVOKER.\n\nIf you invoke a view that was created before MySQL 5.1.2, it is treated\nas though it was created with a SQL SECURITY DEFINER clause and with a\nDEFINER value that is the same as your account. However, because the\nactual definer is unknown, MySQL issues a warning. To make the warning\ngo away, it is sufficient to re-create the view so that the view\ndefinition includes a DEFINER clause.\n\nThe optional ALGORITHM clause is a MySQL extension to standard SQL. It\naffects how MySQL processes the view. ALGORITHM takes three values:\nMERGE, TEMPTABLE, or UNDEFINED. The default algorithm is UNDEFINED if\nno ALGORITHM clause is present. For more information, see\nhttp://dev.mysql.com/doc/refman/5.1/en/view-algorithms.html.\n\nSome views are updatable. That is, you can use them in statements such\nas UPDATE, DELETE, or INSERT to update the contents of the underlying\ntable. For a view to be updatable, there must be a one-to-one\nrelationship between the rows in the view and the rows in the\nunderlying table. There are also certain other constructs that make a\nview nonupdatable.\n\nThe WITH CHECK OPTION clause can be given for an updatable view to\nprevent inserts or updates to rows except those for which the WHERE\nclause in the select_statement is true.\n\nIn a WITH CHECK OPTION clause for an updatable view, the LOCAL and\nCASCADED keywords determine the scope of check testing when the view is\ndefined in terms of another view. The LOCAL keyword restricts the CHECK\nOPTION only to the view being defined. CASCADED causes the checks for\nunderlying views to be evaluated as well. When neither keyword is\ngiven, the default is CASCADED.\n\nFor more information about updatable views and the WITH CHECK OPTION\nclause, see\nhttp://dev.mysql.com/doc/refman/5.1/en/view-updatability.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-view.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (453,35,'TRIM','Syntax:\nTRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr\nFROM] str)\n\nReturns the string str with all remstr prefixes or suffixes removed. If\nnone of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is\nassumed. remstr is optional and, if not specified, spaces are removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT TRIM(\' bar \');\n -> \'bar\'\nmysql> SELECT TRIM(LEADING \'x\' FROM \'xxxbarxxx\');\n -> \'barxxx\'\nmysql> SELECT TRIM(BOTH \'x\' FROM \'xxxbarxxx\');\n -> \'bar\'\nmysql> SELECT TRIM(TRAILING \'xyz\' FROM \'barxxyz\');\n -> \'barx\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (454,17,'IS','Syntax:\nIS boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;\n -> 1, 1, 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (455,30,'GET_FORMAT','Syntax:\nGET_FORMAT({DATE|TIME|DATETIME}, {\'EUR\'|\'USA\'|\'JIS\'|\'ISO\'|\'INTERNAL\'})\n\nReturns a format string. This function is useful in combination with\nthe DATE_FORMAT() and the STR_TO_DATE() functions.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2003-10-03\',GET_FORMAT(DATE,\'EUR\'));\n -> \'03.10.2003\'\nmysql> SELECT STR_TO_DATE(\'10.31.2003\',GET_FORMAT(DATE,\'USA\'));\n -> \'2003-10-31\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (456,20,'TINYBLOB','TINYBLOB\n\nA BLOB column with a maximum length of 255 (28 - 1) bytes. Each\nTINYBLOB value is stored using a one-byte length prefix that indicates\nthe number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (457,8,'SAVEPOINT','Syntax:\nSAVEPOINT identifier\nROLLBACK [WORK] TO [SAVEPOINT] identifier\nRELEASE SAVEPOINT identifier\n\nInnoDB supports the SQL statements SAVEPOINT, ROLLBACK TO SAVEPOINT,\nRELEASE SAVEPOINT and the optional WORK keyword for ROLLBACK.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/savepoint.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/savepoint.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (458,15,'USER','Syntax:\nUSER()\n\nReturns the current MySQL user name and host name as a string in the\nutf8 character set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (459,37,'ALTER TABLE','Syntax:\nALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name\n alter_specification [, alter_specification] ...\n\nalter_specification:\n table_options\n | ADD [COLUMN] col_name column_definition\n [FIRST | AFTER col_name ]\n | ADD [COLUMN] (col_name column_definition,...)\n | ADD {INDEX|KEY} [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]] PRIMARY KEY\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n UNIQUE [INDEX|KEY] [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD FULLTEXT [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD SPATIAL [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n FOREIGN KEY [index_name] (index_col_name,...)\n reference_definition\n | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}\n | CHANGE [COLUMN] old_col_name new_col_name column_definition\n [FIRST|AFTER col_name]\n | MODIFY [COLUMN] col_name column_definition\n [FIRST | AFTER col_name]\n | DROP [COLUMN] col_name\n | DROP PRIMARY KEY\n | DROP {INDEX|KEY} index_name\n | DROP FOREIGN KEY fk_symbol\n | DISABLE KEYS\n | ENABLE KEYS\n | RENAME [TO] new_tbl_name\n | ORDER BY col_name [, col_name] ...\n | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]\n | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]\n | DISCARD TABLESPACE\n | IMPORT TABLESPACE\n | partition_options\n | ADD PARTITION (partition_definition)\n | DROP PARTITION partition_names\n | COALESCE PARTITION number\n | REORGANIZE PARTITION [partition_names INTO (partition_definitions)]\n | ANALYZE PARTITION partition_names\n | CHECK PARTITION partition_names\n | OPTIMIZE PARTITION partition_names\n | REBUILD PARTITION partition_names\n | REPAIR PARTITION partition_names\n | REMOVE PARTITIONING\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n\ntable_options:\n table_option [[,] table_option] ...\n\nALTER TABLE enables you to change the structure of an existing table.\nFor example, you can add or delete columns, create or destroy indexes,\nchange the type of existing columns, or rename columns or the table\nitself. You can also change the comment for the table and type of the\ntable.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (460,31,'MPOINTFROMWKB','MPointFromWKB(wkb[,srid]), MultiPointFromWKB(wkb[,srid])\n\nConstructs a MULTIPOINT value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (461,20,'CHAR BYTE','The CHAR BYTE data type is an alias for the BINARY data type. This is a\ncompatibility feature.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (462,19,'REPAIR TABLE','Syntax:\nREPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n [QUICK] [EXTENDED] [USE_FRM]\n\nREPAIR TABLE repairs a possibly corrupted table. By default, it has the\nsame effect as myisamchk --recover tbl_name. REPAIR TABLE works for\nMyISAM and for ARCHIVE tables. Starting with MySQL 5.1.9, REPAIR is\nalso valid for CSV tables. See\nhttp://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html, and\nhttp://dev.mysql.com/doc/refman/5.1/en/archive-storage-engine.html, and\nhttp://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, REPAIR TABLE is also supported for\npartitioned tables. However, the USE_FRM option cannot be used with\nthis statement on a partitioned table.\n\nAlso beginning with MySQL 5.1.27, you can use ALTER TABLE ... REPAIR\nPARTITION to repair one or more partitions; for more information, see\n[HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/repair-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/repair-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (463,37,'MERGE','The MERGE storage engine, also known as the MRG_MyISAM engine, is a\ncollection of identical MyISAM tables that can be used as one.\n"Identical" means that all tables have identical column and index\ninformation. You cannot merge MyISAM tables in which the columns are\nlisted in a different order, do not have exactly the same columns, or\nhave the indexes in different order. However, any or all of the MyISAM\ntables can be compressed with myisampack. See\nhttp://dev.mysql.com/doc/refman/5.1/en/myisampack.html. Differences in\ntable options such as AVG_ROW_LENGTH, MAX_ROWS, or PACK_KEYS do not\nmatter.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html\n\n','mysql> CREATE TABLE t1 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> CREATE TABLE t2 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> INSERT INTO t1 (message) VALUES (\'Testing\'),(\'table\'),(\'t1\');\nmysql> INSERT INTO t2 (message) VALUES (\'Testing\'),(\'table\'),(\'t2\');\nmysql> CREATE TABLE total (\n -> a INT NOT NULL AUTO_INCREMENT,\n -> message CHAR(20), INDEX(a))\n -> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;\n','http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (464,37,'CREATE TABLE','Syntax:\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n (create_definition,...)\n [table_options]\n [partition_options]\n\nOr:\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n [(create_definition,...)]\n [table_options]\n [partition_options]\n select_statement\n\nOr:\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n { LIKE old_tbl_name | (LIKE old_tbl_name) }\n\ncreate_definition:\n col_name column_definition\n | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)\n [index_option] ...\n | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]\n [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name,...) reference_definition\n | CHECK (expr)\n\ncolumn_definition:\n data_type [NOT NULL | NULL] [DEFAULT default_value]\n [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]\n [COMMENT \'string\']\n [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]\n [STORAGE {DISK|MEMORY|DEFAULT}]\n [reference_definition]\n\ndata_type:\n BIT[(length)]\n | TINYINT[(length)] [UNSIGNED] [ZEROFILL]\n | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]\n | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]\n | INT[(length)] [UNSIGNED] [ZEROFILL]\n | INTEGER[(length)] [UNSIGNED] [ZEROFILL]\n | BIGINT[(length)] [UNSIGNED] [ZEROFILL]\n | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | DATE\n | TIME\n | TIMESTAMP\n | DATETIME\n | YEAR\n | CHAR[(length)]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | VARCHAR(length)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | BINARY[(length)]\n | VARBINARY(length)\n | TINYBLOB\n | BLOB\n | MEDIUMBLOB\n | LONGBLOB\n | TINYTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | TEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | MEDIUMTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | LONGTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | ENUM(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | SET(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | spatial_type\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n\nreference_definition:\n REFERENCES tbl_name (index_col_name,...)\n [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\ntable_options:\n table_option [[,] table_option] ...\n\ntable_option:\n ENGINE [=] engine_name\n | AUTO_INCREMENT [=] value\n | AVG_ROW_LENGTH [=] value\n | [DEFAULT] CHARACTER SET [=] charset_name\n | CHECKSUM [=] {0 | 1}\n | [DEFAULT] COLLATE [=] collation_name\n | COMMENT [=] \'string\'\n | CONNECTION [=] \'connect_string\'\n | DATA DIRECTORY [=] \'absolute path to directory\'\n | DELAY_KEY_WRITE [=] {0 | 1}\n | INDEX DIRECTORY [=] \'absolute path to directory\'\n | INSERT_METHOD [=] { NO | FIRST | LAST }\n | KEY_BLOCK_SIZE [=] value\n | MAX_ROWS [=] value\n | MIN_ROWS [=] value\n | PACK_KEYS [=] {0 | 1 | DEFAULT}\n | PASSWORD [=] \'string\'\n | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}\n | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}]\n | UNION [=] (tbl_name[,tbl_name]...)\n\npartition_options:\n PARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY(column_list)\n | RANGE(expr)\n | LIST(expr) }\n [PARTITIONS num]\n [SUBPARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY(column_list) }\n [SUBPARTITIONS num]\n ]\n [(partition_definition [, partition_definition] ...)]\n\npartition_definition:\n PARTITION partition_name\n [VALUES {LESS THAN {(expr) | MAXVALUE} | IN (value_list)}]\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n [(subpartition_definition [, subpartition_definition] ...)]\n\nsubpartition_definition:\n SUBPARTITION logical_name\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n\nselect_statement:\n [IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)\n\nCREATE TABLE creates a table with the given name. You must have the\nCREATE privilege for the table.\n\nRules for allowable table names are given in\nhttp://dev.mysql.com/doc/refman/5.1/en/identifiers.html. By default,\nthe table is created in the default database. An error occurs if the\ntable exists, if there is no default database, or if the database does\nnot exist.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (465,17,'>','Syntax:\n>\n\nGreater than:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 > 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (466,19,'ANALYZE TABLE','Syntax:\nANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n\nANALYZE TABLE analyzes and stores the key distribution for a table.\nDuring the analysis, the table is locked with a read lock for MyISAM.\nFor InnoDB the table is locked with a write lock. This statement works\nwith MyISAM, and InnoDB tables. For MyISAM tables, this statement is\nequivalent to using myisamchk --analyze.\n\nFor more information on how the analysis works within InnoDB, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html.\n\nMy… uses the stored key distribution to decide the order in which\ntables should be joined when you perform a join on something other than\na constant. In addition, key distributions can be used when deciding\nwhich indexes to use for a specific table within a query.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, ANALYZE TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... ANALYZE PARTITION to analyze one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (467,30,'MICROSECOND','Syntax:\nMICROSECOND(expr)\n\nReturns the microseconds from the time or datetime expression expr as a\nnumber in the range from 0 to 999999.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MICROSECOND(\'12:00:00.123456\');\n -> 123456\nmysql> SELECT MICROSECOND(\'2009-12-31 23:59:59.000010\');\n -> 10\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (468,37,'CONSTRAINT','InnoDB supports foreign key constraints. The syntax for a foreign key\nconstraint definition in InnoDB looks like this:\n\n[CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name, ...)\n REFERENCES tbl_name (index_col_name,...)\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html\…','CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,\n price DECIMAL,\n PRIMARY KEY(category, id)) ENGINE=INNODB;\nCREATE TABLE customer (id INT NOT NULL,\n PRIMARY KEY (id)) ENGINE=INNODB;\nCREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,\n product_category INT NOT NULL,\n product_id INT NOT NULL,\n customer_id INT NOT NULL,\n PRIMARY KEY(no),\n INDEX (product_category, product_id),\n FOREIGN KEY (product_category, product_id)\n REFERENCES product(category, id)\n ON UPDATE CASCADE ON DELETE RESTRICT,\n INDEX (customer_id),\n FOREIGN KEY (customer_id)\n REFERENCES customer(id)) ENGINE=INNODB;\n','http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (469,37,'CREATE SERVER','Syntax:\nCREATE SERVER server_name\n FOREIGN DATA WRAPPER wrapper_name\n OPTIONS (option [, option] ...)\n\noption:\n { HOST character-literal\n | DATABASE character-literal\n | USER character-literal\n | PASSWORD character-literal\n | SOCKET character-literal\n | OWNER character-literal\n | PORT numeric-literal }\n\nThis statement creates the definition of a server for use with the\nFEDERATED storage engine. The CREATE SERVER statement creates a new row\nwithin the servers table within the mysql database. This statement\nrequires the SUPER privilege.\n\nThe server_name should be a unique reference to the server. Server\ndefinitions are global within the scope of the server, it is not\npossible to qualify the server definition to a specific database.\nserver_name has a maximum length of 64 characters (names longer than 64\ncharacters are silently truncated), and is case insensitive. You may\nspecify the name as a quoted string.\n\nThe wrapper_name should be mysql, and may be quoted with single quotes.\nOther values for wrapper_name are not currently supported.\n\nFor each option you must specify either a character literal or numeric\nliteral. Character literals are UTF-8, support a maximum length of 64\ncharacters and default to a blank (empty) string. String literals are\nsilently truncated to 64 characters. Numeric literals must be a number\nbetween 0 and 9999, default value is 0.\n\n*Note*: Note that the OWNER option is currently not applied, and has no\neffect on the ownership or operation of the server connection that is\ncreated.\n\nThe CREATE SERVER statement creates an entry in the mysql.server table\nthat can later be used with the CREATE TABLE statement when creating a\nFEDERATED table. The options that you specify will be used to populate\nthe columns in the mysql.server table. The table columns are\nServer_name, Host, Db, Username, Password, Port and Socket.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-server.html\n\n','CREATE SERVER s\nFOREIGN DATA WRAPPER mysql\nOPTIONS (USER \'Remote\', HOST \'192.168.1.106\', DATABASE \'test\');\n','http://dev.mysql.com/doc/refman/5.1/en/create-server.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (470,35,'FIELD','Syntax:\nFIELD(str,str1,str2,str3,...)\n\nReturns the index (position) of str in the str1, str2, str3, ... list.\nReturns 0 if str is not found.\n\nIf all arguments to FIELD() are strings, all arguments are compared as\nstrings. If all arguments are numbers, they are compared as numbers.\nOtherwise, the arguments are compared as double.\n\nIf str is NULL, the return value is 0 because NULL fails equality\ncomparison with any value. FIELD() is the complement of ELT().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FIELD(\'ej\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 2\nmysql> SELECT FIELD(\'fo\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (471,30,'MAKETIME','Syntax:\nMAKETIME(hour,minute,second)\n\nReturns a time value calculated from the hour, minute, and second\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MAKETIME(12,15,30);\n -> \'12:15:30\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (472,30,'CURDATE','Syntax:\nCURDATE()\n\nReturns the current date as a value in \'YYYY-MM-DD\' or YYYYMMDD format,\ndepending on whether the function is used in a string or numeric\ncontext.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CURDATE();\n -> \'2008-06-13\'\nmysql> SELECT CURDATE() + 0;\n -> 20080613\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (473,9,'SET PASSWORD','Syntax:\nSET PASSWORD [FOR user] =\n {\n PASSWORD(\'some password\')\n | OLD_PASSWORD(\'some password\')\n | \'encrypted password\'\n }\n\nThe SET PASSWORD statement assigns a password to an existing MySQL user\naccount.\n\nIf the password is specified using the PASSWORD() or OLD_PASSWORD()\nfunction, the literal text of the password should be given. If the\npassword is specified without using either function, the password\nshould be the already-encrypted password value as returned by\nPASSWORD().\n\nWith no FOR clause, this statement sets the password for the current\nuser. Any client that has connected to the server using a nonanonymous\naccount can change the password for that account.\n\nWith a FOR clause, this statement sets the password for a specific\naccount on the current server host. Only clients that have the UPDATE\nprivilege for the mysql database can do this. The user value should be\ngiven in user_name@host_name format, where user_name and host_name are\nexactly as they are listed in the User and Host columns of the\nmysql.user table entry. For example, if you had an entry with User and\nHost column values of \'bob\' and \'%.loc.gov\', you would write the\nstatement like this:\n\nSET PASSWORD FOR \'bob\'@\'%.loc.gov\' = PASSWORD(\'newpass\');\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-password.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-password.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (474,37,'ALTER TABLESPACE','Syntax:\nALTER TABLESPACE tablespace_name\n {ADD|DROP} DATAFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement can be used either to add a new data file, or to drop a\ndata file from a tablespace.\n\nThe ADD DATAFILE variant allows you to specify an initial size using an\nINITIAL_SIZE clause, where size is measured in bytes; the default value\nis 128M (128 megabytes). You may optionally follow this integer value\nwith a one-letter abbreviation for an order of magnitude, similar to\nthose used in my.cnf. Generally, this is one of the letters M (for\nmegabytes) or G (for gigabytes).\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an data file with the same name, or an undo log\nfile and a with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for data files could not be longer than 128 characters.\n(Bug#31770 (http://bugs.mysql.com/31770))\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nOnce a data file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using additional ALTER\nTABLESPACE ... ADD DATAFILE statements.\n\nUsing DROP DATAFILE with ALTER TABLESPACE drops the data file\n\'file_name\' from the tablespace. This file must already have been added\nto the tablespace using CREATE TABLESPACE or ALTER TABLESPACE;\notherwise an error will result.\n\nBoth ALTER TABLESPACE ... ADD DATAFILE and ALTER TABLESPACE ... DROP\nDATAFILE require an ENGINE clause which specifies the storage engine\nused by the tablespace. In MySQL 5.1, the only accepted values for\nengine_name are NDB and NDBCLUSTER.\n\nWAIT is parsed but otherwise ignored, and so has no effect in MySQL\n5.1. It is intended for future expansion.\n\nWhen ALTER TABLESPACE ... ADD DATAFILE is used with ENGINE = NDB, a\ndata file is created on each Cluster data node. You can verify that the\ndata files were created and obtain information about them by querying\nthe INFORMATION_SCHEMA.FILES table. For example, the following query\nshows all data files belonging to the tablespace named newts:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA\n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+--------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+--------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=4 |\n+--------------------+--------------+----------------+\n2 rows in set (0.03 sec)\n\nSee http://dev.mysql.com/doc/refman/5.1/en/files-table.html.\n\nALTER TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (475,20,'ENUM','ENUM(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nAn enumeration. A string object that can have only one value, chosen\nfrom the list of values \'value1\', \'value2\', ..., NULL or the special \'\'\nerror value. An ENUM column can have a maximum of 65,535 distinct\nvalues. ENUM values are represented internally as integers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (476,7,'IF FUNCTION','Syntax:\nIF(expr1,expr2,expr3)\n\nIf expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns\nexpr2; otherwise it returns expr3. IF() returns a numeric or string\nvalue, depending on the context in which it is used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT IF(1>2,2,3);\n -> 3\nmysql> SELECT IF(1<2,\'yes\',\'no\');\n -> \'yes\'\nmysql> SELECT IF(STRCMP(\'test\',\'test1\'),\'no\',\'yes\');\n -> \'no\'\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (477,15,'DATABASE','Syntax:\nDATABASE()\n\nReturns the default (current) database name as a string in the utf8\ncharacter set. If there is no default database, DATABASE() returns\nNULL. Within a stored routine, the default database is the database\nthat the routine is associated with, which is not necessarily the same\nas the database that is the default in the calling context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT DATABASE();\n -> \'test\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (478,31,'POINTFROMWKB','PointFromWKB(wkb[,srid])\n\nConstructs a POINT value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (479,4,'POWER','Syntax:\nPOWER(X,Y)\n\nThis is a synonym for POW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (480,4,'ATAN','Syntax:\nATAN(X)\n\nReturns the arc tangent of X, that is, the value whose tangent is X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(2);\n -> 1.1071487177941\nmysql> SELECT ATAN(-2);\n -> -1.1071487177941\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (481,35,'STRCMP','Syntax:\nSTRCMP(expr1,expr2)\n\nSTRCMP() returns 0 if the strings are the same, -1 if the first\nargument is smaller than the second according to the current sort\norder, and 1 otherwise.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','mysql> SELECT STRCMP(\'text\', \'text2\');\n -> -1\nmysql> SELECT STRCMP(\'text2\', \'text\');\n -> 1\nmysql> SELECT STRCMP(\'text\', \'text\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (482,26,'INSERT DELAYED','Syntax:\nINSERT DELAYED ...\n\nThe DELAYED option for the INSERT statement is a MySQL extension to\nstandard SQL that is very useful if you have clients that cannot or\nneed not wait for the INSERT to complete. This is a common situation\nwhen you use MySQL for logging and you also periodically run SELECT and\nUPDATE statements that take a long time to complete.\n\nWhen a client uses INSERT DELAYED, it gets an okay from the server at\nonce, and the row is queued to be inserted when the table is not in use\nby any other thread.\n\nAnother major benefit of using INSERT DELAYED is that inserts from many\nclients are bundled together and written in one block. This is much\nfaster than performing many separate inserts.\n\nNote that INSERT DELAYED is slower than a normal INSERT if the table is\nnot otherwise in use. There is also the additional overhead for the\nserver to handle a separate thread for each table for which there are\ndelayed rows. This means that you should use INSERT DELAYED only when\nyou are really sure that you need it.\n\nThe queued rows are held only in memory until they are inserted into\nthe table. This means that if you terminate mysqld forcibly (for\nexample, with kill -9) or if mysqld dies unexpectedly, any queued rows\nthat have not been written to disk are lost.\n\nThere are some constraints on the use of DELAYED:\n\no INSERT DELAYED works only with MyISAM, MEMORY, ARCHIVE, and (as of\n MySQL 5.1.19) BLACKHOLE tables. For engines that do not support\n DELAYED, an error occurs.\n\no An error occurs for INSERT DELAYED if used with a table that has been\n locked with LOCK TABLES because the insert must be handled by a\n separate thread, not by the session that holds the lock.\n\no For MyISAM tables, if there are no free blocks in the middle of the\n data file, concurrent SELECT and INSERT statements are supported.\n Under these circumstances, you very seldom need to use INSERT DELAYED\n with MyISAM.\n\no INSERT DELAYED should be used only for INSERT statements that specify\n value lists. The server ignores DELAYED for INSERT ... SELECT or\n INSERT ... ON DUPLICATE KEY UPDATE statements.\n\no Because the INSERT DELAYED statement returns immediately, before the\n rows are inserted, you cannot use LAST_INSERT_ID() to get the\n AUTO_INCREMENT value that the statement might generate.\n\no DELAYED rows are not visible to SELECT statements until they actually\n have been inserted.\n\no INSERT DELAYED is treated as a normal INSERT if the statement inserts\n multiple rows and binary logging is enabled and the global logging\n format is to use statement-based logging (binlog_format is set to\n STATEMENT). This restriction does not apply to row-based binary\n logging.\n\no DELAYED is ignored on slave replication servers, so that INSERT\n DELAYED is treated as a normal INSERT on slaves. This is because\n DELAYED could cause the slave to have different data than the master.\n\no Pending INSERT DELAYED statements are lost if a table is write locked\n and ALTER TABLE is used to modify the table structure.\n\no INSERT DELAYED is not supported for views.\n\no INSERT DELAYED is not supported for partitioned tables.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (483,25,'SHOW PROFILE','Syntax:\nSHOW PROFILES\n\nThe SHOW PROFILE statement display profiling information that indicates\nresource usage for statements executed during the course of the current\nsession. It is used together with SHOW PROFILES; see [HELP SHOW\nPROFILES].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-profile.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-profile.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (484,25,'SHOW PROCEDURE CODE','Syntax:\nSHOW PROCEDURE CODE proc_name\n\nThis statement is a MySQL extension that is available only for servers\nthat have been built with debugging support. It displays a\nrepresentation of the internal implementation of the named stored\nprocedure. A similar statement, SHOW FUNCTION CODE, displays\ninformation about stored functions (see [HELP SHOW FUNCTION CODE]).\n\nBoth statements require that you be the owner of the routine or have\nSELECT access to the mysql.proc table.\n\nIf the named routine is available, each statement produces a result\nset. Each row in the result set corresponds to one "instruction" in the\nroutine. The first column is Pos, which is an ordinal number beginning\nwith 0. The second column is Instruction, which contains an SQL\nstatement (usually changed from the original source), or a directive\nwhich has meaning only to the stored-routine handler.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-procedure-code.html\n\n','mysql> DELIMITER //\nmysql> CREATE PROCEDURE p1 ()\n -> BEGIN\n -> DECLARE fanta INT DEFAULT 55;\n -> DROP TABLE t2;\n -> LOOP\n -> INSERT INTO t3 VALUES (fanta);\n -> END LOOP;\n -> END//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SHOW PROCEDURE CODE p1//\n+-----+----------------------------------------+\n| Pos | Instruction |\n+-----+----------------------------------------+\n| 0 | set fanta@0 55 |\n| 1 | stmt 9 "DROP TABLE t2" |\n| 2 | stmt 5 "INSERT INTO t3 VALUES (fanta)" |\n| 3 | jump 2 |\n+-----+----------------------------------------+\n4 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/show-procedure-code.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (485,20,'MEDIUMTEXT','MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 16,777,215 (224 - 1) characters.\nThe effective maximum length is less if the value contains multi-byte\ncharacters. Each MEDIUMTEXT value is stored using a three-byte length\nprefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (486,4,'LN','Syntax:\nLN(X)\n\nReturns the natural logarithm of X; that is, the base-e logarithm of X.\nIf X is less than or equal to 0, then NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LN(2);\n -> 0.69314718055995\nmysql> SELECT LN(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (487,22,'RETURN','Syntax:\nRETURN expr\n\nThe RETURN statement terminates execution of a stored function and\nreturns the value expr to the function caller. There must be at least\none RETURN statement in a stored function. There may be more than one\nif the function has multiple exit points.\n\nThis statement is not used in stored procedures, triggers, or events.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/return.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/return.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (488,25,'SHOW COLLATION','Syntax:\nSHOW COLLATION\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement lists collations supported by the server. By default,\nthe output from SHOW COLLATION includes all available collations. The\nLIKE clause, if present, indicates which collation names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. For example:\n\nmysql> SHOW COLLATION LIKE \'latin1%\';\n+-------------------+---------+----+---------+----------+---------+\n| Collation | Charset | Id | Default | Compiled | Sortlen |\n+-------------------+---------+----+---------+----------+---------+\n| latin1_german1_ci | latin1 | 5 | | | 0 |\n| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 0 |\n| latin1_danish_ci | latin1 | 15 | | | 0 |\n| latin1_german2_ci | latin1 | 31 | | Yes | 2 |\n| latin1_bin | latin1 | 47 | | Yes | 0 |\n| latin1_general_ci | latin1 | 48 | | | 0 |\n| latin1_general_cs | latin1 | 49 | | | 0 |\n| latin1_spanish_ci | latin1 | 94 | | | 0 |\n+-------------------+---------+----+---------+----------+---------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-collation.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-collation.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (489,4,'LOG','Syntax:\nLOG(X), LOG(B,X)\n\nIf called with one parameter, this function returns the natural\nlogarithm of X. If X is less than or equal to 0, then NULL is returned.\n\nThe inverse of this function (when called with a single argument) is\nthe EXP() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG(2);\n -> 0.69314718055995\nmysql> SELECT LOG(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (490,25,'SET SQL_LOG_BIN','Syntax:\nSET sql_log_bin = {0|1}\n\nDisables or enables binary logging for the current connection\n(sql_log_bin is a session variable) if the client has the SUPER\nprivilege. The statement is refused with an error if the client does\nnot have that privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-sql-log-bin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-sql-log-bin.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (491,17,'!=','Syntax:\n<>, !=\n\nNot equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT \'.01\' <> \'0.01\';\n -> 1\nmysql> SELECT .01 <> \'0.01\';\n -> 0\nmysql> SELECT \'zapp\' <> \'zappp\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (492,22,'WHILE','Syntax:\n[begin_label:] WHILE search_condition DO\n statement_list\nEND WHILE [end_label]\n\nThe statement list within a WHILE statement is repeated as long as the\nsearch_condition is true. statement_list consists of one or more\nstatements.\n\nA WHILE statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/while-statement.html\n\n','CREATE PROCEDURE dowhile()\nBEGIN\n DECLARE v1 INT DEFAULT 5;\n\n WHILE v1 > 0 DO\n ...\n SET v1 = v1 - 1;\n END WHILE;\nEND\n','http://dev.mysql.com/doc/refman/5.1/en/while-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (493,11,'AES_DECRYPT','Syntax:\nAES_DECRYPT(crypt_str,key_str)\n\nThis function allows decryption of data using the official AES\n(Advanced Encryption Standard) algorithm. For more information, see the\ndescription of AES_ENCRYPT().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (494,30,'DAYNAME','Syntax:\nDAYNAME(date)\n\nReturns the name of the weekday for date. As of MySQL 5.1.12, the\nlanguage used for the name is controlled by the value of the\nlc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.1/en/locale-support.html).\n\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYNAME(\'2007-02-03\');\n -> \'Saturday\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (495,15,'COERCIBILITY','Syntax:\nCOERCIBILITY(str)\n\nReturns the collation coercibility value of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT COERCIBILITY(\'abc\' COLLATE latin1_swedish_ci);\n -> 0\nmysql> SELECT COERCIBILITY(USER());\n -> 3\nmysql> SELECT COERCIBILITY(\'abc\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (496,20,'INT','INT[(M)] [UNSIGNED] [ZEROFILL]\n\nA normal-size integer. The signed range is -2147483648 to 2147483647.\nThe unsigned range is 0 to 4294967295.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (497,12,'GLENGTH','GLength(ls)\n\nReturns as a double-precision number the length of the LineString value\nls in its associated spatial reference.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT GLength(GeomFromText(@ls));\n+----------------------------+\n| GLength(GeomFromText(@ls)) |\n+----------------------------+\n| 2.8284271247462 |\n+----------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (498,4,'RADIANS','Syntax:\nRADIANS(X)\n\nReturns the argument X, converted from degrees to radians. (Note that\nπ radians equals 180 degrees.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT RADIANS(90);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (499,15,'COLLATION','Syntax:\nCOLLATION(str)\n\nReturns the collation of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT COLLATION(\'abc\');\n -> \'latin1_swedish_ci\'\nmysql> SELECT COLLATION(_utf8\'abc\');\n -> \'utf8_general_ci\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (500,17,'COALESCE','Syntax:\nCOALESCE(value,...)\n\nReturns the first non-NULL value in the list, or NULL if there are no\nnon-NULL values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT COALESCE(NULL,1);\n -> 1\nmysql> SELECT COALESCE(NULL,NULL,NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (501,15,'VERSION','Syntax:\nVERSION()\n\nReturns a string that indicates the MySQL server version. The string\nuses the utf8 character set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT VERSION();\n -> \'5.1.39-standard\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (502,35,'MAKE_SET','Syntax:\nMAKE_SET(bits,str1,str2,...)\n\nReturns a set value (a string containing substrings separated by ","\ncharacters) consisting of the strings that have the corresponding bit\nin bits set. str1 corresponds to bit 0, str2 to bit 1, and so on. NULL\nvalues in str1, str2, ... are not appended to the result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT MAKE_SET(1,\'a\',\'b\',\'c\');\n -> \'a\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',\'world\');\n -> \'hello,world\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',NULL,\'world\');\n -> \'hello\'\nmysql> SELECT MAKE_SET(0,\'a\',\'b\',\'c\');\n -> \'\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (503,35,'FIND_IN_SET','Syntax:\nFIND_IN_SET(str,strlist)\n\nReturns a value in the range of 1 to N if the string str is in the\nstring list strlist consisting of N substrings. A string list is a\nstring composed of substrings separated by "," characters. If the first\nargument is a constant string and the second is a column of type SET,\nthe FIND_IN_SET() function is optimized to use bit arithmetic. Returns\n0 if str is not in strlist or if strlist is the empty string. Returns\nNULL if either argument is NULL. This function does not work properly\nif the first argument contains a comma (",") character.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FIND_IN_SET(\'b\',\'a,b,c,d\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_keyword (help_keyword_id,name) values (0,'JOIN');
insert into help_keyword (help_keyword_id,name) values (1,'HOST');
@@ -1022,989 +1023,991 @@ insert into help_keyword (help_keyword_i
insert into help_keyword (help_keyword_id,name) values (449,'ROW_FORMAT');
insert into help_relation (help_topic_id,help_keyword_id) values (1,0);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,0);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,1);
-insert into help_relation (help_topic_id,help_keyword_id) values (227,2);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,3);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,0);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,1);
+insert into help_relation (help_topic_id,help_keyword_id) values (228,2);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,3);
insert into help_relation (help_topic_id,help_keyword_id) values (3,4);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,4);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,4);
insert into help_relation (help_topic_id,help_keyword_id) values (87,5);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,6);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,6);
insert into help_relation (help_topic_id,help_keyword_id) values (87,6);
insert into help_relation (help_topic_id,help_keyword_id) values (95,7);
insert into help_relation (help_topic_id,help_keyword_id) values (87,8);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,9);
-insert into help_relation (help_topic_id,help_keyword_id) values (427,10);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,11);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,9);
+insert into help_relation (help_topic_id,help_keyword_id) values (428,10);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,11);
insert into help_relation (help_topic_id,help_keyword_id) values (21,11);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,11);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,12);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,11);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,12);
insert into help_relation (help_topic_id,help_keyword_id) values (87,12);
insert into help_relation (help_topic_id,help_keyword_id) values (143,13);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,14);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,14);
insert into help_relation (help_topic_id,help_keyword_id) values (86,15);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,15);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,15);
insert into help_relation (help_topic_id,help_keyword_id) values (16,16);
insert into help_relation (help_topic_id,help_keyword_id) values (130,16);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,16);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,16);
insert into help_relation (help_topic_id,help_keyword_id) values (104,16);
-insert into help_relation (help_topic_id,help_keyword_id) values (495,17);
+insert into help_relation (help_topic_id,help_keyword_id) values (496,17);
insert into help_relation (help_topic_id,help_keyword_id) values (95,17);
-insert into help_relation (help_topic_id,help_keyword_id) values (377,18);
+insert into help_relation (help_topic_id,help_keyword_id) values (378,18);
insert into help_relation (help_topic_id,help_keyword_id) values (3,19);
insert into help_relation (help_topic_id,help_keyword_id) values (102,19);
-insert into help_relation (help_topic_id,help_keyword_id) values (238,19);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,20);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,21);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (239,19);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,20);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,21);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,22);
insert into help_relation (help_topic_id,help_keyword_id) values (34,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (232,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (296,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (233,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (297,22);
insert into help_relation (help_topic_id,help_keyword_id) values (9,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (413,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,22);
insert into help_relation (help_topic_id,help_keyword_id) values (414,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (415,22);
insert into help_relation (help_topic_id,help_keyword_id) values (30,22);
insert into help_relation (help_topic_id,help_keyword_id) values (85,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (259,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (403,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (327,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (260,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (404,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (328,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,22);
insert into help_relation (help_topic_id,help_keyword_id) values (106,23);
insert into help_relation (help_topic_id,help_keyword_id) values (120,24);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,25);
-insert into help_relation (help_topic_id,help_keyword_id) values (255,26);
+insert into help_relation (help_topic_id,help_keyword_id) values (167,24);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,25);
+insert into help_relation (help_topic_id,help_keyword_id) values (256,26);
insert into help_relation (help_topic_id,help_keyword_id) values (80,27);
insert into help_relation (help_topic_id,help_keyword_id) values (102,28);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,29);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,29);
insert into help_relation (help_topic_id,help_keyword_id) values (36,30);
-insert into help_relation (help_topic_id,help_keyword_id) values (398,31);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,31);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,31);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,32);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,33);
+insert into help_relation (help_topic_id,help_keyword_id) values (399,31);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,31);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,31);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,32);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,33);
insert into help_relation (help_topic_id,help_keyword_id) values (35,34);
-insert into help_relation (help_topic_id,help_keyword_id) values (232,34);
+insert into help_relation (help_topic_id,help_keyword_id) values (233,34);
insert into help_relation (help_topic_id,help_keyword_id) values (36,35);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,35);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,36);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,37);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,37);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,37);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,38);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,35);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,36);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,37);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,37);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,37);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,38);
insert into help_relation (help_topic_id,help_keyword_id) values (21,38);
-insert into help_relation (help_topic_id,help_keyword_id) values (290,38);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,38);
-insert into help_relation (help_topic_id,help_keyword_id) values (448,38);
-insert into help_relation (help_topic_id,help_keyword_id) values (495,39);
+insert into help_relation (help_topic_id,help_keyword_id) values (291,38);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,38);
+insert into help_relation (help_topic_id,help_keyword_id) values (449,38);
+insert into help_relation (help_topic_id,help_keyword_id) values (496,39);
insert into help_relation (help_topic_id,help_keyword_id) values (48,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,40);
insert into help_relation (help_topic_id,help_keyword_id) values (81,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,40);
insert into help_relation (help_topic_id,help_keyword_id) values (75,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,41);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,41);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,42);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,43);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,43);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,44);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,41);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,41);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,42);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,43);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,43);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,44);
insert into help_relation (help_topic_id,help_keyword_id) values (115,44);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,44);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,44);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,44);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,45);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,46);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,47);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,44);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,44);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,44);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,45);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,46);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,47);
insert into help_relation (help_topic_id,help_keyword_id) values (95,47);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,48);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,49);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,50);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,48);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,49);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,50);
insert into help_relation (help_topic_id,help_keyword_id) values (48,50);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,50);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,51);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,51);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,50);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,51);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,51);
insert into help_relation (help_topic_id,help_keyword_id) values (1,51);
insert into help_relation (help_topic_id,help_keyword_id) values (87,51);
-insert into help_relation (help_topic_id,help_keyword_id) values (172,52);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,52);
+insert into help_relation (help_topic_id,help_keyword_id) values (173,52);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,52);
insert into help_relation (help_topic_id,help_keyword_id) values (51,53);
insert into help_relation (help_topic_id,help_keyword_id) values (104,53);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,54);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,55);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,54);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,55);
insert into help_relation (help_topic_id,help_keyword_id) values (55,55);
insert into help_relation (help_topic_id,help_keyword_id) values (1,55);
insert into help_relation (help_topic_id,help_keyword_id) values (48,56);
insert into help_relation (help_topic_id,help_keyword_id) values (81,56);
insert into help_relation (help_topic_id,help_keyword_id) values (104,56);
-insert into help_relation (help_topic_id,help_keyword_id) values (189,57);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,57);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,57);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,58);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,58);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,59);
+insert into help_relation (help_topic_id,help_keyword_id) values (190,57);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,57);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,57);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,58);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,58);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,59);
insert into help_relation (help_topic_id,help_keyword_id) values (87,59);
-insert into help_relation (help_topic_id,help_keyword_id) values (296,59);
-insert into help_relation (help_topic_id,help_keyword_id) values (354,59);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,60);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,61);
+insert into help_relation (help_topic_id,help_keyword_id) values (297,59);
+insert into help_relation (help_topic_id,help_keyword_id) values (355,59);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,60);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,61);
insert into help_relation (help_topic_id,help_keyword_id) values (1,62);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,62);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,62);
insert into help_relation (help_topic_id,help_keyword_id) values (102,62);
insert into help_relation (help_topic_id,help_keyword_id) values (81,62);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,62);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,62);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,63);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,63);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,62);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,62);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,63);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,63);
insert into help_relation (help_topic_id,help_keyword_id) values (48,63);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,64);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,64);
insert into help_relation (help_topic_id,help_keyword_id) values (85,65);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,65);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,65);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,66);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,67);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,68);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,65);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,65);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,66);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,67);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,68);
insert into help_relation (help_topic_id,help_keyword_id) values (89,69);
-insert into help_relation (help_topic_id,help_keyword_id) values (477,69);
-insert into help_relation (help_topic_id,help_keyword_id) values (382,70);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,71);
+insert into help_relation (help_topic_id,help_keyword_id) values (478,69);
+insert into help_relation (help_topic_id,help_keyword_id) values (383,70);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,71);
insert into help_relation (help_topic_id,help_keyword_id) values (1,72);
insert into help_relation (help_topic_id,help_keyword_id) values (39,73);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,73);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,73);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,74);
-insert into help_relation (help_topic_id,help_keyword_id) values (456,74);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,74);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,75);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,75);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,76);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,73);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,73);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,74);
+insert into help_relation (help_topic_id,help_keyword_id) values (457,74);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,74);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,75);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,75);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,76);
insert into help_relation (help_topic_id,help_keyword_id) values (87,76);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,77);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,78);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,78);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,77);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,78);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,78);
insert into help_relation (help_topic_id,help_keyword_id) values (102,78);
insert into help_relation (help_topic_id,help_keyword_id) values (81,78);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,79);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,79);
insert into help_relation (help_topic_id,help_keyword_id) values (87,79);
-insert into help_relation (help_topic_id,help_keyword_id) values (300,80);
+insert into help_relation (help_topic_id,help_keyword_id) values (301,80);
insert into help_relation (help_topic_id,help_keyword_id) values (3,80);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,80);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,80);
insert into help_relation (help_topic_id,help_keyword_id) values (102,80);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,81);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,82);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,83);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,84);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,81);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,82);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,83);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,84);
insert into help_relation (help_topic_id,help_keyword_id) values (127,85);
insert into help_relation (help_topic_id,help_keyword_id) values (143,86);
-insert into help_relation (help_topic_id,help_keyword_id) values (456,86);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,87);
+insert into help_relation (help_topic_id,help_keyword_id) values (457,86);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,87);
insert into help_relation (help_topic_id,help_keyword_id) values (18,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (436,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (298,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (483,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (414,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (324,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (182,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (186,89);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (437,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (299,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (484,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (415,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (325,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (183,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (187,89);
insert into help_relation (help_topic_id,help_keyword_id) values (97,89);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,90);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,90);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,90);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,90);
insert into help_relation (help_topic_id,help_keyword_id) values (86,91);
-insert into help_relation (help_topic_id,help_keyword_id) values (399,92);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,92);
+insert into help_relation (help_topic_id,help_keyword_id) values (400,92);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,92);
insert into help_relation (help_topic_id,help_keyword_id) values (67,93);
-insert into help_relation (help_topic_id,help_keyword_id) values (430,93);
-insert into help_relation (help_topic_id,help_keyword_id) values (325,93);
-insert into help_relation (help_topic_id,help_keyword_id) values (281,94);
+insert into help_relation (help_topic_id,help_keyword_id) values (431,93);
+insert into help_relation (help_topic_id,help_keyword_id) values (326,93);
+insert into help_relation (help_topic_id,help_keyword_id) values (282,94);
insert into help_relation (help_topic_id,help_keyword_id) values (83,95);
insert into help_relation (help_topic_id,help_keyword_id) values (57,95);
insert into help_relation (help_topic_id,help_keyword_id) values (28,95);
-insert into help_relation (help_topic_id,help_keyword_id) values (191,96);
+insert into help_relation (help_topic_id,help_keyword_id) values (192,96);
insert into help_relation (help_topic_id,help_keyword_id) values (102,96);
-insert into help_relation (help_topic_id,help_keyword_id) values (481,96);
-insert into help_relation (help_topic_id,help_keyword_id) values (297,96);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,97);
-insert into help_relation (help_topic_id,help_keyword_id) values (278,97);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,98);
+insert into help_relation (help_topic_id,help_keyword_id) values (482,96);
+insert into help_relation (help_topic_id,help_keyword_id) values (298,96);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,97);
+insert into help_relation (help_topic_id,help_keyword_id) values (279,97);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,98);
insert into help_relation (help_topic_id,help_keyword_id) values (104,98);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,99);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,100);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,99);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,100);
insert into help_relation (help_topic_id,help_keyword_id) values (152,101);
insert into help_relation (help_topic_id,help_keyword_id) values (30,101);
insert into help_relation (help_topic_id,help_keyword_id) values (87,101);
-insert into help_relation (help_topic_id,help_keyword_id) values (296,101);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,101);
+insert into help_relation (help_topic_id,help_keyword_id) values (297,101);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,101);
insert into help_relation (help_topic_id,help_keyword_id) values (9,101);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,101);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,102);
-insert into help_relation (help_topic_id,help_keyword_id) values (363,102);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,101);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,102);
+insert into help_relation (help_topic_id,help_keyword_id) values (364,102);
insert into help_relation (help_topic_id,help_keyword_id) values (143,103);
-insert into help_relation (help_topic_id,help_keyword_id) values (456,103);
+insert into help_relation (help_topic_id,help_keyword_id) values (457,103);
insert into help_relation (help_topic_id,help_keyword_id) values (86,104);
insert into help_relation (help_topic_id,help_keyword_id) values (24,104);
insert into help_relation (help_topic_id,help_keyword_id) values (110,105);
-insert into help_relation (help_topic_id,help_keyword_id) values (171,105);
+insert into help_relation (help_topic_id,help_keyword_id) values (172,105);
insert into help_relation (help_topic_id,help_keyword_id) values (3,106);
insert into help_relation (help_topic_id,help_keyword_id) values (152,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (195,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (196,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,106);
insert into help_relation (help_topic_id,help_keyword_id) values (102,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (238,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,107);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,108);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,108);
+insert into help_relation (help_topic_id,help_keyword_id) values (239,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,107);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,108);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,108);
insert into help_relation (help_topic_id,help_keyword_id) values (112,108);
-insert into help_relation (help_topic_id,help_keyword_id) values (465,108);
+insert into help_relation (help_topic_id,help_keyword_id) values (466,108);
insert into help_relation (help_topic_id,help_keyword_id) values (112,109);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,109);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,109);
insert into help_relation (help_topic_id,help_keyword_id) values (38,110);
insert into help_relation (help_topic_id,help_keyword_id) values (116,110);
-insert into help_relation (help_topic_id,help_keyword_id) values (260,110);
+insert into help_relation (help_topic_id,help_keyword_id) values (261,110);
insert into help_relation (help_topic_id,help_keyword_id) values (148,110);
insert into help_relation (help_topic_id,help_keyword_id) values (122,111);
-insert into help_relation (help_topic_id,help_keyword_id) values (417,112);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,113);
+insert into help_relation (help_topic_id,help_keyword_id) values (418,112);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,113);
insert into help_relation (help_topic_id,help_keyword_id) values (87,113);
insert into help_relation (help_topic_id,help_keyword_id) values (123,113);
-insert into help_relation (help_topic_id,help_keyword_id) values (491,113);
-insert into help_relation (help_topic_id,help_keyword_id) values (217,114);
-insert into help_relation (help_topic_id,help_keyword_id) values (329,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (492,113);
+insert into help_relation (help_topic_id,help_keyword_id) values (218,114);
+insert into help_relation (help_topic_id,help_keyword_id) values (330,115);
insert into help_relation (help_topic_id,help_keyword_id) values (127,115);
insert into help_relation (help_topic_id,help_keyword_id) values (3,115);
insert into help_relation (help_topic_id,help_keyword_id) values (152,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (489,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (490,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,115);
insert into help_relation (help_topic_id,help_keyword_id) values (102,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,115);
insert into help_relation (help_topic_id,help_keyword_id) values (136,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,115);
insert into help_relation (help_topic_id,help_keyword_id) values (81,115);
insert into help_relation (help_topic_id,help_keyword_id) values (143,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (179,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (472,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,116);
-insert into help_relation (help_topic_id,help_keyword_id) values (258,117);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (180,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (473,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,116);
+insert into help_relation (help_topic_id,help_keyword_id) values (259,117);
insert into help_relation (help_topic_id,help_keyword_id) values (129,117);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,117);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,117);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (332,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (363,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (219,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (398,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,117);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,117);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (333,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (364,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (220,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (399,118);
insert into help_relation (help_topic_id,help_keyword_id) values (58,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (324,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (325,118);
insert into help_relation (help_topic_id,help_keyword_id) values (133,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (211,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,119);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,119);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,119);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,120);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,120);
+insert into help_relation (help_topic_id,help_keyword_id) values (212,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,119);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,119);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,119);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,120);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,120);
insert into help_relation (help_topic_id,help_keyword_id) values (87,120);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,120);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,121);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,120);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,121);
insert into help_relation (help_topic_id,help_keyword_id) values (1,122);
insert into help_relation (help_topic_id,help_keyword_id) values (52,123);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,124);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,125);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,126);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,127);
-insert into help_relation (help_topic_id,help_keyword_id) values (452,128);
-insert into help_relation (help_topic_id,help_keyword_id) values (250,129);
-insert into help_relation (help_topic_id,help_keyword_id) values (281,130);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,131);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,131);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,132);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,124);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,125);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,126);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,127);
+insert into help_relation (help_topic_id,help_keyword_id) values (453,128);
+insert into help_relation (help_topic_id,help_keyword_id) values (251,129);
+insert into help_relation (help_topic_id,help_keyword_id) values (282,130);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,131);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,131);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,132);
insert into help_relation (help_topic_id,help_keyword_id) values (83,133);
insert into help_relation (help_topic_id,help_keyword_id) values (57,133);
-insert into help_relation (help_topic_id,help_keyword_id) values (232,134);
+insert into help_relation (help_topic_id,help_keyword_id) values (233,134);
insert into help_relation (help_topic_id,help_keyword_id) values (52,135);
-insert into help_relation (help_topic_id,help_keyword_id) values (320,135);
+insert into help_relation (help_topic_id,help_keyword_id) values (321,135);
insert into help_relation (help_topic_id,help_keyword_id) values (83,136);
insert into help_relation (help_topic_id,help_keyword_id) values (57,136);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,137);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,138);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,139);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,137);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,138);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,139);
insert into help_relation (help_topic_id,help_keyword_id) values (115,139);
-insert into help_relation (help_topic_id,help_keyword_id) values (452,139);
+insert into help_relation (help_topic_id,help_keyword_id) values (453,139);
insert into help_relation (help_topic_id,help_keyword_id) values (48,139);
insert into help_relation (help_topic_id,help_keyword_id) values (120,139);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,139);
-insert into help_relation (help_topic_id,help_keyword_id) values (357,139);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,140);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,139);
+insert into help_relation (help_topic_id,help_keyword_id) values (358,139);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,140);
insert into help_relation (help_topic_id,help_keyword_id) values (36,140);
insert into help_relation (help_topic_id,help_keyword_id) values (104,140);
insert into help_relation (help_topic_id,help_keyword_id) values (1,141);
insert into help_relation (help_topic_id,help_keyword_id) values (28,142);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,143);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,144);
-insert into help_relation (help_topic_id,help_keyword_id) values (176,145);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,146);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (177,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (418,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,148);
-insert into help_relation (help_topic_id,help_keyword_id) values (325,148);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,149);
-insert into help_relation (help_topic_id,help_keyword_id) values (177,150);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,143);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,144);
+insert into help_relation (help_topic_id,help_keyword_id) values (177,145);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,146);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (178,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (419,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,148);
+insert into help_relation (help_topic_id,help_keyword_id) values (326,148);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,149);
+insert into help_relation (help_topic_id,help_keyword_id) values (178,150);
insert into help_relation (help_topic_id,help_keyword_id) values (95,151);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,152);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,152);
insert into help_relation (help_topic_id,help_keyword_id) values (66,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (332,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (333,153);
insert into help_relation (help_topic_id,help_keyword_id) values (34,153);
insert into help_relation (help_topic_id,help_keyword_id) values (95,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (298,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (414,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (390,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (207,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (403,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (228,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (299,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (415,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (391,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (208,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (404,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (229,153);
insert into help_relation (help_topic_id,help_keyword_id) values (95,154);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,155);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,155);
-insert into help_relation (help_topic_id,help_keyword_id) values (247,156);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,157);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,158);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,158);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,159);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,159);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,155);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,155);
+insert into help_relation (help_topic_id,help_keyword_id) values (248,156);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,157);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,158);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,158);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,159);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,159);
insert into help_relation (help_topic_id,help_keyword_id) values (60,159);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,159);
-insert into help_relation (help_topic_id,help_keyword_id) values (172,160);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,159);
+insert into help_relation (help_topic_id,help_keyword_id) values (173,160);
insert into help_relation (help_topic_id,help_keyword_id) values (165,161);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,162);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,162);
-insert into help_relation (help_topic_id,help_keyword_id) values (413,162);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,162);
-insert into help_relation (help_topic_id,help_keyword_id) values (451,163);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,162);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,162);
+insert into help_relation (help_topic_id,help_keyword_id) values (414,162);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,162);
+insert into help_relation (help_topic_id,help_keyword_id) values (452,163);
insert into help_relation (help_topic_id,help_keyword_id) values (30,163);
insert into help_relation (help_topic_id,help_keyword_id) values (156,163);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,164);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,165);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,164);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,165);
insert into help_relation (help_topic_id,help_keyword_id) values (48,166);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,166);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,166);
insert into help_relation (help_topic_id,help_keyword_id) values (81,166);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,166);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,166);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,166);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,166);
insert into help_relation (help_topic_id,help_keyword_id) values (1,167);
insert into help_relation (help_topic_id,help_keyword_id) values (84,167);
insert into help_relation (help_topic_id,help_keyword_id) values (48,167);
-insert into help_relation (help_topic_id,help_keyword_id) values (247,168);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,169);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,169);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,170);
-insert into help_relation (help_topic_id,help_keyword_id) values (495,170);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,170);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,170);
+insert into help_relation (help_topic_id,help_keyword_id) values (248,168);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,169);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,169);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,170);
+insert into help_relation (help_topic_id,help_keyword_id) values (496,170);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,170);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,170);
insert into help_relation (help_topic_id,help_keyword_id) values (24,170);
insert into help_relation (help_topic_id,help_keyword_id) values (165,170);
insert into help_relation (help_topic_id,help_keyword_id) values (126,170);
insert into help_relation (help_topic_id,help_keyword_id) values (153,171);
insert into help_relation (help_topic_id,help_keyword_id) values (95,171);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,171);
-insert into help_relation (help_topic_id,help_keyword_id) values (409,172);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,173);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,174);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,171);
+insert into help_relation (help_topic_id,help_keyword_id) values (410,172);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,173);
insert into help_relation (help_topic_id,help_keyword_id) values (468,174);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,174);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,174);
-insert into help_relation (help_topic_id,help_keyword_id) values (300,175);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,174);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,174);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,174);
+insert into help_relation (help_topic_id,help_keyword_id) values (301,175);
insert into help_relation (help_topic_id,help_keyword_id) values (99,175);
insert into help_relation (help_topic_id,help_keyword_id) values (148,175);
insert into help_relation (help_topic_id,help_keyword_id) values (142,176);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,176);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,176);
insert into help_relation (help_topic_id,help_keyword_id) values (143,177);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,178);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,178);
insert into help_relation (help_topic_id,help_keyword_id) values (157,178);
-insert into help_relation (help_topic_id,help_keyword_id) values (452,179);
+insert into help_relation (help_topic_id,help_keyword_id) values (453,179);
insert into help_relation (help_topic_id,help_keyword_id) values (143,180);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,181);
-insert into help_relation (help_topic_id,help_keyword_id) values (177,181);
-insert into help_relation (help_topic_id,help_keyword_id) values (418,181);
-insert into help_relation (help_topic_id,help_keyword_id) values (195,181);
-insert into help_relation (help_topic_id,help_keyword_id) values (300,182);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,181);
+insert into help_relation (help_topic_id,help_keyword_id) values (178,181);
+insert into help_relation (help_topic_id,help_keyword_id) values (419,181);
+insert into help_relation (help_topic_id,help_keyword_id) values (196,181);
+insert into help_relation (help_topic_id,help_keyword_id) values (301,182);
insert into help_relation (help_topic_id,help_keyword_id) values (115,182);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,182);
-insert into help_relation (help_topic_id,help_keyword_id) values (357,182);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,183);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,184);
-insert into help_relation (help_topic_id,help_keyword_id) values (374,184);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,185);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,182);
+insert into help_relation (help_topic_id,help_keyword_id) values (358,182);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,183);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,184);
+insert into help_relation (help_topic_id,help_keyword_id) values (375,184);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,185);
insert into help_relation (help_topic_id,help_keyword_id) values (152,186);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,186);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,186);
-insert into help_relation (help_topic_id,help_keyword_id) values (392,187);
-insert into help_relation (help_topic_id,help_keyword_id) values (460,188);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,186);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,186);
+insert into help_relation (help_topic_id,help_keyword_id) values (393,187);
+insert into help_relation (help_topic_id,help_keyword_id) values (461,188);
insert into help_relation (help_topic_id,help_keyword_id) values (127,189);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,189);
-insert into help_relation (help_topic_id,help_keyword_id) values (179,189);
-insert into help_relation (help_topic_id,help_keyword_id) values (345,189);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,189);
+insert into help_relation (help_topic_id,help_keyword_id) values (180,189);
+insert into help_relation (help_topic_id,help_keyword_id) values (346,189);
insert into help_relation (help_topic_id,help_keyword_id) values (133,189);
-insert into help_relation (help_topic_id,help_keyword_id) values (449,190);
+insert into help_relation (help_topic_id,help_keyword_id) values (450,190);
insert into help_relation (help_topic_id,help_keyword_id) values (83,191);
insert into help_relation (help_topic_id,help_keyword_id) values (57,191);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,192);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,193);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,192);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,193);
insert into help_relation (help_topic_id,help_keyword_id) values (1,194);
insert into help_relation (help_topic_id,help_keyword_id) values (36,194);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,194);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,195);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,196);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,194);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,195);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,196);
insert into help_relation (help_topic_id,help_keyword_id) values (143,197);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,198);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,199);
-insert into help_relation (help_topic_id,help_keyword_id) values (188,199);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,198);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,199);
+insert into help_relation (help_topic_id,help_keyword_id) values (189,199);
insert into help_relation (help_topic_id,help_keyword_id) values (1,200);
-insert into help_relation (help_topic_id,help_keyword_id) values (217,201);
-insert into help_relation (help_topic_id,help_keyword_id) values (250,202);
+insert into help_relation (help_topic_id,help_keyword_id) values (218,201);
+insert into help_relation (help_topic_id,help_keyword_id) values (251,202);
insert into help_relation (help_topic_id,help_keyword_id) values (86,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,204);
-insert into help_relation (help_topic_id,help_keyword_id) values (256,205);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,206);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,206);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,207);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,203);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,203);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,203);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,203);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,204);
+insert into help_relation (help_topic_id,help_keyword_id) values (257,205);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,206);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,206);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,207);
insert into help_relation (help_topic_id,help_keyword_id) values (87,207);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,207);
-insert into help_relation (help_topic_id,help_keyword_id) values (287,208);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,209);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,207);
+insert into help_relation (help_topic_id,help_keyword_id) values (288,208);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,209);
insert into help_relation (help_topic_id,help_keyword_id) values (3,210);
insert into help_relation (help_topic_id,help_keyword_id) values (36,210);
insert into help_relation (help_topic_id,help_keyword_id) values (48,210);
insert into help_relation (help_topic_id,help_keyword_id) values (102,210);
insert into help_relation (help_topic_id,help_keyword_id) values (81,210);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,210);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,211);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,212);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,213);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,210);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,211);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,212);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,213);
insert into help_relation (help_topic_id,help_keyword_id) values (152,213);
-insert into help_relation (help_topic_id,help_keyword_id) values (305,213);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,213);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,213);
+insert into help_relation (help_topic_id,help_keyword_id) values (306,213);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,213);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,213);
insert into help_relation (help_topic_id,help_keyword_id) values (95,214);
-insert into help_relation (help_topic_id,help_keyword_id) values (273,215);
-insert into help_relation (help_topic_id,help_keyword_id) values (275,216);
-insert into help_relation (help_topic_id,help_keyword_id) values (459,217);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (274,215);
+insert into help_relation (help_topic_id,help_keyword_id) values (276,216);
+insert into help_relation (help_topic_id,help_keyword_id) values (460,217);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,218);
insert into help_relation (help_topic_id,help_keyword_id) values (1,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (300,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (301,218);
insert into help_relation (help_topic_id,help_keyword_id) values (85,218);
insert into help_relation (help_topic_id,help_keyword_id) values (99,218);
insert into help_relation (help_topic_id,help_keyword_id) values (60,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (304,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (355,219);
-insert into help_relation (help_topic_id,help_keyword_id) values (422,220);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,221);
+insert into help_relation (help_topic_id,help_keyword_id) values (305,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (356,219);
+insert into help_relation (help_topic_id,help_keyword_id) values (423,220);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,221);
insert into help_relation (help_topic_id,help_keyword_id) values (87,221);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,222);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,223);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,224);
-insert into help_relation (help_topic_id,help_keyword_id) values (250,224);
-insert into help_relation (help_topic_id,help_keyword_id) values (268,225);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,222);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,223);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,224);
+insert into help_relation (help_topic_id,help_keyword_id) values (251,224);
+insert into help_relation (help_topic_id,help_keyword_id) values (269,225);
insert into help_relation (help_topic_id,help_keyword_id) values (1,226);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,227);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,227);
insert into help_relation (help_topic_id,help_keyword_id) values (7,227);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,228);
-insert into help_relation (help_topic_id,help_keyword_id) values (427,228);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,229);
-insert into help_relation (help_topic_id,help_keyword_id) values (222,229);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,229);
-insert into help_relation (help_topic_id,help_keyword_id) values (424,230);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,228);
+insert into help_relation (help_topic_id,help_keyword_id) values (428,228);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,229);
+insert into help_relation (help_topic_id,help_keyword_id) values (223,229);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,229);
+insert into help_relation (help_topic_id,help_keyword_id) values (425,230);
insert into help_relation (help_topic_id,help_keyword_id) values (85,231);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,231);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,231);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,232);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,233);
-insert into help_relation (help_topic_id,help_keyword_id) values (495,233);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,233);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,231);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,231);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,232);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,233);
+insert into help_relation (help_topic_id,help_keyword_id) values (496,233);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,233);
insert into help_relation (help_topic_id,help_keyword_id) values (24,233);
insert into help_relation (help_topic_id,help_keyword_id) values (165,233);
insert into help_relation (help_topic_id,help_keyword_id) values (126,233);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,234);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,235);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,236);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,237);
-insert into help_relation (help_topic_id,help_keyword_id) values (382,238);
-insert into help_relation (help_topic_id,help_keyword_id) values (329,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,234);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,235);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,236);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,237);
+insert into help_relation (help_topic_id,help_keyword_id) values (383,238);
+insert into help_relation (help_topic_id,help_keyword_id) values (330,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,239);
insert into help_relation (help_topic_id,help_keyword_id) values (152,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (427,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,240);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (274,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (399,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (211,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (428,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,240);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (275,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (400,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (212,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,241);
insert into help_relation (help_topic_id,help_keyword_id) values (107,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (317,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (318,241);
insert into help_relation (help_topic_id,help_keyword_id) values (112,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (465,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (176,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (466,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (177,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,241);
insert into help_relation (help_topic_id,help_keyword_id) values (60,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (355,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (357,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (363,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (413,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,243);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,244);
+insert into help_relation (help_topic_id,help_keyword_id) values (356,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (358,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (364,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (414,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,243);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,244);
insert into help_relation (help_topic_id,help_keyword_id) values (30,244);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,244);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,244);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,245);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,246);
-insert into help_relation (help_topic_id,help_keyword_id) values (301,247);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,248);
-insert into help_relation (help_topic_id,help_keyword_id) values (306,249);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,250);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,244);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,244);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,245);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,246);
+insert into help_relation (help_topic_id,help_keyword_id) values (302,247);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,248);
+insert into help_relation (help_topic_id,help_keyword_id) values (307,249);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,250);
insert into help_relation (help_topic_id,help_keyword_id) values (86,251);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,252);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,253);
-insert into help_relation (help_topic_id,help_keyword_id) values (326,254);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,254);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,254);
-insert into help_relation (help_topic_id,help_keyword_id) values (311,255);
-insert into help_relation (help_topic_id,help_keyword_id) values (372,255);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,255);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,256);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,252);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,253);
+insert into help_relation (help_topic_id,help_keyword_id) values (327,254);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,254);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,254);
+insert into help_relation (help_topic_id,help_keyword_id) values (312,255);
+insert into help_relation (help_topic_id,help_keyword_id) values (373,255);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,255);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,256);
insert into help_relation (help_topic_id,help_keyword_id) values (86,257);
-insert into help_relation (help_topic_id,help_keyword_id) values (418,258);
+insert into help_relation (help_topic_id,help_keyword_id) values (419,258);
insert into help_relation (help_topic_id,help_keyword_id) values (66,259);
-insert into help_relation (help_topic_id,help_keyword_id) values (483,259);
-insert into help_relation (help_topic_id,help_keyword_id) values (241,260);
+insert into help_relation (help_topic_id,help_keyword_id) values (484,259);
+insert into help_relation (help_topic_id,help_keyword_id) values (242,260);
insert into help_relation (help_topic_id,help_keyword_id) values (143,261);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,262);
-insert into help_relation (help_topic_id,help_keyword_id) values (222,262);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,263);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,262);
+insert into help_relation (help_topic_id,help_keyword_id) values (223,262);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,263);
insert into help_relation (help_topic_id,help_keyword_id) values (148,263);
-insert into help_relation (help_topic_id,help_keyword_id) values (451,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (452,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,264);
insert into help_relation (help_topic_id,help_keyword_id) values (152,264);
insert into help_relation (help_topic_id,help_keyword_id) values (95,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (298,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (274,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (305,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (299,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (275,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (306,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (208,264);
insert into help_relation (help_topic_id,help_keyword_id) values (207,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,264);
insert into help_relation (help_topic_id,help_keyword_id) values (75,264);
insert into help_relation (help_topic_id,help_keyword_id) values (18,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,264);
insert into help_relation (help_topic_id,help_keyword_id) values (22,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (390,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (391,264);
insert into help_relation (help_topic_id,help_keyword_id) values (87,264);
insert into help_relation (help_topic_id,help_keyword_id) values (60,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (354,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (326,265);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,266);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,267);
-insert into help_relation (help_topic_id,help_keyword_id) values (229,268);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,269);
-insert into help_relation (help_topic_id,help_keyword_id) values (448,269);
+insert into help_relation (help_topic_id,help_keyword_id) values (355,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (327,265);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,266);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,267);
+insert into help_relation (help_topic_id,help_keyword_id) values (230,268);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,269);
+insert into help_relation (help_topic_id,help_keyword_id) values (449,269);
insert into help_relation (help_topic_id,help_keyword_id) values (87,270);
insert into help_relation (help_topic_id,help_keyword_id) values (39,271);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,271);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,271);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,272);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,273);
-insert into help_relation (help_topic_id,help_keyword_id) values (375,274);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,271);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,271);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,272);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,273);
+insert into help_relation (help_topic_id,help_keyword_id) values (376,274);
insert into help_relation (help_topic_id,help_keyword_id) values (144,275);
insert into help_relation (help_topic_id,help_keyword_id) values (105,276);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,277);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,277);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,278);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,279);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,277);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,277);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,278);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,279);
insert into help_relation (help_topic_id,help_keyword_id) values (3,280);
insert into help_relation (help_topic_id,help_keyword_id) values (102,280);
-insert into help_relation (help_topic_id,help_keyword_id) values (335,281);
-insert into help_relation (help_topic_id,help_keyword_id) values (340,282);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,283);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,284);
-insert into help_relation (help_topic_id,help_keyword_id) values (317,285);
-insert into help_relation (help_topic_id,help_keyword_id) values (189,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (336,281);
+insert into help_relation (help_topic_id,help_keyword_id) values (341,282);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,283);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,284);
+insert into help_relation (help_topic_id,help_keyword_id) values (318,285);
+insert into help_relation (help_topic_id,help_keyword_id) values (190,286);
insert into help_relation (help_topic_id,help_keyword_id) values (66,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (329,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (330,286);
insert into help_relation (help_topic_id,help_keyword_id) values (67,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (332,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (333,286);
insert into help_relation (help_topic_id,help_keyword_id) values (7,286);
insert into help_relation (help_topic_id,help_keyword_id) values (130,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (398,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (274,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (399,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (275,286);
insert into help_relation (help_topic_id,help_keyword_id) values (10,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (278,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (279,286);
insert into help_relation (help_topic_id,help_keyword_id) values (133,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (211,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (212,286);
insert into help_relation (help_topic_id,help_keyword_id) values (18,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,286);
insert into help_relation (help_topic_id,help_keyword_id) values (21,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (345,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (346,286);
insert into help_relation (help_topic_id,help_keyword_id) values (80,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (219,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (220,286);
insert into help_relation (help_topic_id,help_keyword_id) values (25,286);
insert into help_relation (help_topic_id,help_keyword_id) values (142,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (290,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (354,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (291,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (355,286);
insert into help_relation (help_topic_id,help_keyword_id) values (33,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (363,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (364,286);
insert into help_relation (help_topic_id,help_keyword_id) values (157,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (484,286);
insert into help_relation (help_topic_id,help_keyword_id) values (483,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (482,286);
insert into help_relation (help_topic_id,help_keyword_id) values (39,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (306,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (488,286);
insert into help_relation (help_topic_id,help_keyword_id) values (305,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (487,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (304,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (167,286);
insert into help_relation (help_topic_id,help_keyword_id) values (58,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (390,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (324,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (391,286);
insert into help_relation (help_topic_id,help_keyword_id) values (325,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (326,286);
insert into help_relation (help_topic_id,help_keyword_id) values (120,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (188,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (448,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (301,287);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,287);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,287);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,287);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,288);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,289);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,290);
+insert into help_relation (help_topic_id,help_keyword_id) values (189,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (449,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (302,287);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,287);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,287);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,287);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,288);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,289);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,290);
insert into help_relation (help_topic_id,help_keyword_id) values (120,291);
-insert into help_relation (help_topic_id,help_keyword_id) values (346,291);
+insert into help_relation (help_topic_id,help_keyword_id) values (347,291);
insert into help_relation (help_topic_id,help_keyword_id) values (83,292);
insert into help_relation (help_topic_id,help_keyword_id) values (57,292);
insert into help_relation (help_topic_id,help_keyword_id) values (28,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (322,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (340,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (491,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (227,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,293);
+insert into help_relation (help_topic_id,help_keyword_id) values (323,292);
+insert into help_relation (help_topic_id,help_keyword_id) values (341,292);
+insert into help_relation (help_topic_id,help_keyword_id) values (492,292);
+insert into help_relation (help_topic_id,help_keyword_id) values (228,292);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,293);
insert into help_relation (help_topic_id,help_keyword_id) values (144,294);
-insert into help_relation (help_topic_id,help_keyword_id) values (312,294);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,295);
+insert into help_relation (help_topic_id,help_keyword_id) values (313,294);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,295);
insert into help_relation (help_topic_id,help_keyword_id) values (104,296);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,297);
-insert into help_relation (help_topic_id,help_keyword_id) values (255,298);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,297);
+insert into help_relation (help_topic_id,help_keyword_id) values (256,298);
insert into help_relation (help_topic_id,help_keyword_id) values (3,298);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,298);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,298);
insert into help_relation (help_topic_id,help_keyword_id) values (102,298);
-insert into help_relation (help_topic_id,help_keyword_id) values (297,298);
-insert into help_relation (help_topic_id,help_keyword_id) values (250,298);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,299);
+insert into help_relation (help_topic_id,help_keyword_id) values (298,298);
+insert into help_relation (help_topic_id,help_keyword_id) values (251,298);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,299);
insert into help_relation (help_topic_id,help_keyword_id) values (157,299);
insert into help_relation (help_topic_id,help_keyword_id) values (138,300);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,301);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,301);
insert into help_relation (help_topic_id,help_keyword_id) values (75,301);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,302);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,303);
-insert into help_relation (help_topic_id,help_keyword_id) values (179,304);
-insert into help_relation (help_topic_id,help_keyword_id) values (452,305);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,302);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,303);
+insert into help_relation (help_topic_id,help_keyword_id) values (180,304);
+insert into help_relation (help_topic_id,help_keyword_id) values (453,305);
insert into help_relation (help_topic_id,help_keyword_id) values (108,306);
insert into help_relation (help_topic_id,help_keyword_id) values (24,306);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,307);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,308);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,309);
-insert into help_relation (help_topic_id,help_keyword_id) values (387,310);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,307);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,308);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,309);
+insert into help_relation (help_topic_id,help_keyword_id) values (388,310);
insert into help_relation (help_topic_id,help_keyword_id) values (117,310);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,311);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,311);
insert into help_relation (help_topic_id,help_keyword_id) values (25,312);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,312);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,313);
-insert into help_relation (help_topic_id,help_keyword_id) values (371,314);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,314);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,312);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,313);
+insert into help_relation (help_topic_id,help_keyword_id) values (372,314);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,314);
insert into help_relation (help_topic_id,help_keyword_id) values (143,315);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,316);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,317);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,318);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,319);
-insert into help_relation (help_topic_id,help_keyword_id) values (375,319);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,320);
-insert into help_relation (help_topic_id,help_keyword_id) values (287,320);
-insert into help_relation (help_topic_id,help_keyword_id) values (417,320);
-insert into help_relation (help_topic_id,help_keyword_id) values (380,321);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,316);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,317);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,318);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,319);
+insert into help_relation (help_topic_id,help_keyword_id) values (376,319);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,320);
+insert into help_relation (help_topic_id,help_keyword_id) values (288,320);
+insert into help_relation (help_topic_id,help_keyword_id) values (418,320);
+insert into help_relation (help_topic_id,help_keyword_id) values (381,321);
insert into help_relation (help_topic_id,help_keyword_id) values (86,322);
insert into help_relation (help_topic_id,help_keyword_id) values (120,322);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,322);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,323);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,324);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,325);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,322);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,323);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,324);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,325);
insert into help_relation (help_topic_id,help_keyword_id) values (84,326);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,326);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,327);
-insert into help_relation (help_topic_id,help_keyword_id) values (394,328);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,326);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,327);
+insert into help_relation (help_topic_id,help_keyword_id) values (395,328);
insert into help_relation (help_topic_id,help_keyword_id) values (86,329);
-insert into help_relation (help_topic_id,help_keyword_id) values (172,329);
+insert into help_relation (help_topic_id,help_keyword_id) values (173,329);
insert into help_relation (help_topic_id,help_keyword_id) values (148,329);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,330);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,331);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,330);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,331);
insert into help_relation (help_topic_id,help_keyword_id) values (52,332);
-insert into help_relation (help_topic_id,help_keyword_id) values (320,332);
-insert into help_relation (help_topic_id,help_keyword_id) values (371,333);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,333);
+insert into help_relation (help_topic_id,help_keyword_id) values (321,332);
+insert into help_relation (help_topic_id,help_keyword_id) values (372,333);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,333);
insert into help_relation (help_topic_id,help_keyword_id) values (9,333);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,334);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,335);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,334);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,335);
insert into help_relation (help_topic_id,help_keyword_id) values (121,336);
insert into help_relation (help_topic_id,help_keyword_id) values (143,337);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,337);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,338);
-insert into help_relation (help_topic_id,help_keyword_id) values (405,339);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,340);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,341);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,337);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,338);
+insert into help_relation (help_topic_id,help_keyword_id) values (406,339);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,340);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,341);
insert into help_relation (help_topic_id,help_keyword_id) values (141,342);
insert into help_relation (help_topic_id,help_keyword_id) values (24,343);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,344);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,344);
insert into help_relation (help_topic_id,help_keyword_id) values (107,344);
-insert into help_relation (help_topic_id,help_keyword_id) values (218,344);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,344);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,345);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,345);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,345);
+insert into help_relation (help_topic_id,help_keyword_id) values (219,344);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,344);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,345);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,345);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,345);
insert into help_relation (help_topic_id,help_keyword_id) values (1,346);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (436,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (437,347);
insert into help_relation (help_topic_id,help_keyword_id) values (156,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (371,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (222,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (372,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (223,347);
insert into help_relation (help_topic_id,help_keyword_id) values (60,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (228,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,348);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,349);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (229,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,348);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,349);
insert into help_relation (help_topic_id,help_keyword_id) values (1,350);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,350);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,350);
insert into help_relation (help_topic_id,help_keyword_id) values (1,351);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,352);
-insert into help_relation (help_topic_id,help_keyword_id) values (345,352);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,353);
-insert into help_relation (help_topic_id,help_keyword_id) values (424,354);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,355);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,356);
-insert into help_relation (help_topic_id,help_keyword_id) values (472,356);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,356);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,352);
+insert into help_relation (help_topic_id,help_keyword_id) values (346,352);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,353);
+insert into help_relation (help_topic_id,help_keyword_id) values (425,354);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,355);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,356);
+insert into help_relation (help_topic_id,help_keyword_id) values (473,356);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,356);
insert into help_relation (help_topic_id,help_keyword_id) values (75,356);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,357);
-insert into help_relation (help_topic_id,help_keyword_id) values (460,358);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,358);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,357);
+insert into help_relation (help_topic_id,help_keyword_id) values (461,358);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,358);
insert into help_relation (help_topic_id,help_keyword_id) values (104,359);
-insert into help_relation (help_topic_id,help_keyword_id) values (489,360);
+insert into help_relation (help_topic_id,help_keyword_id) values (490,360);
insert into help_relation (help_topic_id,help_keyword_id) values (67,361);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,361);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,362);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,363);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,364);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,365);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,365);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,361);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,362);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,363);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,364);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,365);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,365);
insert into help_relation (help_topic_id,help_keyword_id) values (143,366);
-insert into help_relation (help_topic_id,help_keyword_id) values (322,366);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,367);
-insert into help_relation (help_topic_id,help_keyword_id) values (482,368);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,369);
+insert into help_relation (help_topic_id,help_keyword_id) values (323,366);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,367);
+insert into help_relation (help_topic_id,help_keyword_id) values (483,368);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,369);
insert into help_relation (help_topic_id,help_keyword_id) values (87,370);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,370);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,371);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,372);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,373);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,374);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,374);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,374);
-insert into help_relation (help_topic_id,help_keyword_id) values (440,375);
-insert into help_relation (help_topic_id,help_keyword_id) values (278,376);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,377);
-insert into help_relation (help_topic_id,help_keyword_id) values (445,378);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,370);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,371);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,372);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,373);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,374);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,374);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,374);
+insert into help_relation (help_topic_id,help_keyword_id) values (441,375);
+insert into help_relation (help_topic_id,help_keyword_id) values (279,376);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,377);
+insert into help_relation (help_topic_id,help_keyword_id) values (446,378);
insert into help_relation (help_topic_id,help_keyword_id) values (87,379);
insert into help_relation (help_topic_id,help_keyword_id) values (126,380);
insert into help_relation (help_topic_id,help_keyword_id) values (10,381);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,381);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,382);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,381);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,382);
insert into help_relation (help_topic_id,help_keyword_id) values (30,382);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,382);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,383);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,382);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,383);
insert into help_relation (help_topic_id,help_keyword_id) values (56,384);
insert into help_relation (help_topic_id,help_keyword_id) values (82,385);
-insert into help_relation (help_topic_id,help_keyword_id) values (202,385);
-insert into help_relation (help_topic_id,help_keyword_id) values (453,385);
-insert into help_relation (help_topic_id,help_keyword_id) values (366,385);
+insert into help_relation (help_topic_id,help_keyword_id) values (203,385);
+insert into help_relation (help_topic_id,help_keyword_id) values (454,385);
+insert into help_relation (help_topic_id,help_keyword_id) values (367,385);
insert into help_relation (help_topic_id,help_keyword_id) values (82,386);
-insert into help_relation (help_topic_id,help_keyword_id) values (202,386);
+insert into help_relation (help_topic_id,help_keyword_id) values (203,386);
insert into help_relation (help_topic_id,help_keyword_id) values (152,386);
insert into help_relation (help_topic_id,help_keyword_id) values (87,386);
-insert into help_relation (help_topic_id,help_keyword_id) values (308,386);
-insert into help_relation (help_topic_id,help_keyword_id) values (182,387);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,388);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,388);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,389);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,390);
+insert into help_relation (help_topic_id,help_keyword_id) values (309,386);
+insert into help_relation (help_topic_id,help_keyword_id) values (183,387);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,388);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,388);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,389);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,390);
insert into help_relation (help_topic_id,help_keyword_id) values (143,391);
-insert into help_relation (help_topic_id,help_keyword_id) values (320,391);
+insert into help_relation (help_topic_id,help_keyword_id) values (321,391);
insert into help_relation (help_topic_id,help_keyword_id) values (33,392);
-insert into help_relation (help_topic_id,help_keyword_id) values (456,393);
-insert into help_relation (help_topic_id,help_keyword_id) values (475,394);
+insert into help_relation (help_topic_id,help_keyword_id) values (457,393);
+insert into help_relation (help_topic_id,help_keyword_id) values (476,394);
insert into help_relation (help_topic_id,help_keyword_id) values (152,394);
-insert into help_relation (help_topic_id,help_keyword_id) values (296,394);
+insert into help_relation (help_topic_id,help_keyword_id) values (297,394);
insert into help_relation (help_topic_id,help_keyword_id) values (9,394);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,394);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,394);
insert into help_relation (help_topic_id,help_keyword_id) values (28,394);
insert into help_relation (help_topic_id,help_keyword_id) values (30,394);
insert into help_relation (help_topic_id,help_keyword_id) values (87,394);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,394);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,395);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,396);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,394);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,395);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,396);
insert into help_relation (help_topic_id,help_keyword_id) values (104,397);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,398);
-insert into help_relation (help_topic_id,help_keyword_id) values (218,398);
-insert into help_relation (help_topic_id,help_keyword_id) values (327,398);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,398);
+insert into help_relation (help_topic_id,help_keyword_id) values (219,398);
+insert into help_relation (help_topic_id,help_keyword_id) values (328,398);
insert into help_relation (help_topic_id,help_keyword_id) values (75,398);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,399);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,400);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,401);
-insert into help_relation (help_topic_id,help_keyword_id) values (304,401);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,401);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,399);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,400);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,401);
+insert into help_relation (help_topic_id,help_keyword_id) values (305,401);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,401);
insert into help_relation (help_topic_id,help_keyword_id) values (48,402);
insert into help_relation (help_topic_id,help_keyword_id) values (120,402);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,402);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,402);
insert into help_relation (help_topic_id,help_keyword_id) values (81,402);
insert into help_relation (help_topic_id,help_keyword_id) values (104,402);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,403);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,403);
insert into help_relation (help_topic_id,help_keyword_id) values (60,403);
insert into help_relation (help_topic_id,help_keyword_id) values (102,403);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,403);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,403);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,404);
-insert into help_relation (help_topic_id,help_keyword_id) values (227,405);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,406);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,403);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,403);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,404);
+insert into help_relation (help_topic_id,help_keyword_id) values (228,405);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,406);
insert into help_relation (help_topic_id,help_keyword_id) values (3,407);
insert into help_relation (help_topic_id,help_keyword_id) values (102,407);
-insert into help_relation (help_topic_id,help_keyword_id) values (481,407);
-insert into help_relation (help_topic_id,help_keyword_id) values (465,408);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,408);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,409);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,409);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,410);
-insert into help_relation (help_topic_id,help_keyword_id) values (238,410);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,411);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,411);
+insert into help_relation (help_topic_id,help_keyword_id) values (482,407);
+insert into help_relation (help_topic_id,help_keyword_id) values (466,408);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,408);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,409);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,409);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,410);
+insert into help_relation (help_topic_id,help_keyword_id) values (239,410);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,411);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,411);
insert into help_relation (help_topic_id,help_keyword_id) values (36,412);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,413);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,413);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,413);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,413);
insert into help_relation (help_topic_id,help_keyword_id) values (127,414);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,414);
-insert into help_relation (help_topic_id,help_keyword_id) values (345,414);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,414);
+insert into help_relation (help_topic_id,help_keyword_id) values (346,414);
insert into help_relation (help_topic_id,help_keyword_id) values (133,414);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,415);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,415);
insert into help_relation (help_topic_id,help_keyword_id) values (152,415);
-insert into help_relation (help_topic_id,help_keyword_id) values (305,415);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,415);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (306,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,415);
insert into help_relation (help_topic_id,help_keyword_id) values (82,416);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,416);
-insert into help_relation (help_topic_id,help_keyword_id) values (366,416);
-insert into help_relation (help_topic_id,help_keyword_id) values (478,417);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,418);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,419);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,416);
+insert into help_relation (help_topic_id,help_keyword_id) values (367,416);
+insert into help_relation (help_topic_id,help_keyword_id) values (479,417);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,418);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,419);
insert into help_relation (help_topic_id,help_keyword_id) values (38,420);
insert into help_relation (help_topic_id,help_keyword_id) values (142,420);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,420);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,420);
insert into help_relation (help_topic_id,help_keyword_id) values (87,420);
-insert into help_relation (help_topic_id,help_keyword_id) values (219,420);
+insert into help_relation (help_topic_id,help_keyword_id) values (220,420);
insert into help_relation (help_topic_id,help_keyword_id) values (52,420);
-insert into help_relation (help_topic_id,help_keyword_id) values (320,420);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,421);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,422);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,422);
-insert into help_relation (help_topic_id,help_keyword_id) values (486,423);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,424);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,425);
+insert into help_relation (help_topic_id,help_keyword_id) values (321,420);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,421);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,422);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,422);
+insert into help_relation (help_topic_id,help_keyword_id) values (487,423);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,424);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,425);
insert into help_relation (help_topic_id,help_keyword_id) values (87,425);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,425);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,426);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,426);
-insert into help_relation (help_topic_id,help_keyword_id) values (491,427);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,428);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,429);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,429);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,425);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,426);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,426);
+insert into help_relation (help_topic_id,help_keyword_id) values (492,427);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,428);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,429);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,429);
insert into help_relation (help_topic_id,help_keyword_id) values (36,429);
insert into help_relation (help_topic_id,help_keyword_id) values (112,429);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,429);
-insert into help_relation (help_topic_id,help_keyword_id) values (465,429);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,429);
+insert into help_relation (help_topic_id,help_keyword_id) values (466,429);
insert into help_relation (help_topic_id,help_keyword_id) values (0,430);
insert into help_relation (help_topic_id,help_keyword_id) values (94,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (381,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (284,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (430,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (301,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (492,431);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,432);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,433);
+insert into help_relation (help_topic_id,help_keyword_id) values (382,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (285,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (431,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (302,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (493,431);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,432);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,433);
insert into help_relation (help_topic_id,help_keyword_id) values (130,434);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,434);
-insert into help_relation (help_topic_id,help_keyword_id) values (290,434);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,434);
+insert into help_relation (help_topic_id,help_keyword_id) values (291,434);
insert into help_relation (help_topic_id,help_keyword_id) values (36,434);
-insert into help_relation (help_topic_id,help_keyword_id) values (490,435);
+insert into help_relation (help_topic_id,help_keyword_id) values (491,435);
insert into help_relation (help_topic_id,help_keyword_id) values (27,436);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,437);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,437);
insert into help_relation (help_topic_id,help_keyword_id) values (22,437);
-insert into help_relation (help_topic_id,help_keyword_id) values (259,437);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,438);
-insert into help_relation (help_topic_id,help_keyword_id) values (487,438);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,439);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,440);
+insert into help_relation (help_topic_id,help_keyword_id) values (260,437);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,438);
+insert into help_relation (help_topic_id,help_keyword_id) values (488,438);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,439);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,440);
insert into help_relation (help_topic_id,help_keyword_id) values (102,440);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,441);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,442);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,441);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,442);
insert into help_relation (help_topic_id,help_keyword_id) values (104,442);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,442);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,443);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,444);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,444);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,445);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,442);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,443);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,444);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,444);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,445);
insert into help_relation (help_topic_id,help_keyword_id) values (39,446);
insert into help_relation (help_topic_id,help_keyword_id) values (115,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,446);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,446);
insert into help_relation (help_topic_id,help_keyword_id) values (58,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (260,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (357,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,447);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,447);
-insert into help_relation (help_topic_id,help_keyword_id) values (197,448);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,449);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,446);
+insert into help_relation (help_topic_id,help_keyword_id) values (261,446);
+insert into help_relation (help_topic_id,help_keyword_id) values (358,446);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,447);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,447);
+insert into help_relation (help_topic_id,help_keyword_id) values (198,448);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,449);
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2707)
by knielsen@knielsen-hq.org 16 Sep '09
by knielsen@knielsen-hq.org 16 Sep '09
16 Sep '09
#At lp:maria
2707 knielsen(a)knielsen-hq.org 2009-09-16
Imported MySQL documentation files from /home/knielsen/devel/maria/mysql-5.1.38
modified:
Docs/INSTALL-BINARY
INSTALL-SOURCE
INSTALL-WIN-SOURCE
man/comp_err.1
man/innochecksum.1
man/make_win_bin_dist.1
man/msql2mysql.1
man/my_print_defaults.1
man/myisam_ftdump.1
man/myisamchk.1
man/myisamlog.1
man/myisampack.1
man/mysql-stress-test.pl.1
man/mysql-test-run.pl.1
man/mysql.1
man/mysql.server.1
man/mysql_client_test.1
man/mysql_config.1
man/mysql_convert_table_format.1
man/mysql_find_rows.1
man/mysql_fix_extensions.1
man/mysql_fix_privilege_tables.1
man/mysql_install_db.1
man/mysql_secure_installation.1
man/mysql_setpermission.1
man/mysql_tzinfo_to_sql.1
man/mysql_upgrade.1
man/mysql_waitpid.1
man/mysql_zap.1
man/mysqlaccess.1
man/mysqladmin.1
man/mysqlbinlog.1
man/mysqlbug.1
man/mysqlcheck.1
man/mysqld.8
man/mysqld_multi.1
man/mysqld_safe.1
man/mysqldump.1
man/mysqldumpslow.1
man/mysqlhotcopy.1
man/mysqlimport.1
man/mysqlmanager.8
man/mysqlshow.1
man/mysqlslap.1
man/mysqltest.1
man/ndbd.8
man/ndbd_redo_log_reader.1
man/ndbmtd.8
man/perror.1
man/replace.1
man/resolve_stack_dump.1
man/resolveip.1
scripts/fill_help_tables.sql
=== modified file 'Docs/INSTALL-BINARY'
--- a/Docs/INSTALL-BINARY 2009-05-25 09:59:47 +0000
+++ b/Docs/INSTALL-BINARY 2009-09-16 12:03:18 +0000
@@ -11,7 +11,7 @@
MySQL tar file binary distributions have names of the form
mysql-VERSION-OS.tar.gz, where VERSION is a number (for example,
- 5.1.35), and OS indicates the type of operating system for which
+ 5.1.39), and OS indicates the type of operating system for which
the distribution is intended (for example, pc-linux-i686).
In addition to these generic packages, we also offer binaries in
@@ -156,10 +156,10 @@ shell> chown -R mysql data
Permissions in Grant Tables." For Perl module installation
instructions, see Section 2.15, "Perl Installation Notes."
11. If you would like to use mysqlaccess and have the MySQL
- distribution in some non-standard location, you must change
- the location where mysqlaccess expects to find the mysql
- client. Edit the bin/mysqlaccess script at approximately line
- 18. Search for a line that looks like this:
+ distribution in some nonstandard location, you must change the
+ location where mysqlaccess expects to find the mysql client.
+ Edit the bin/mysqlaccess script at approximately line 18.
+ Search for a line that looks like this:
$MYSQL = '/usr/local/bin/mysql'; # path to mysql executable
Change the path to reflect the location where mysql actually
is stored on your system. If you do not do this, a Broken pipe
=== modified file 'INSTALL-SOURCE'
--- a/INSTALL-SOURCE 2009-05-25 09:59:47 +0000
+++ b/INSTALL-SOURCE 2009-09-16 12:03:18 +0000
@@ -207,9 +207,9 @@ Important
* General file system stability and performance.
- * If your tables are large, performance is affected by the
- ability of the file system to deal with large files at all and
- to deal with them efficiently.
+ * Table size. If your tables are large, performance is affected
+ by the ability of the file system to deal with large files at
+ all and to deal with them efficiently.
* Our level of expertise here at Sun Microsystems, Inc. with the
platform. If we know a platform well, we enable
@@ -240,7 +240,7 @@ Important
development process, multiple release series co-exist, each at a
different stage of maturity:
- * MySQL 6.0 is the current development release series.
+ * MySQL 5.4 and 6.0 are the current development release series.
* MySQL 5.1 is the current General Availability (Production)
release series. New releases are issued for bugfixes only; no
@@ -252,11 +252,12 @@ Important
* MySQL 4.1, 4.0, and 3.23 are old stable (production-quality)
release series. MySQL 4.1 is now at the end of the product
lifecycle. Active development and support for these versions
- has ended. Extended support for MySQL 4.1 and 4.0 is
- available. According to the MySQL Lifecycle Policy (see
- http://www.mysql.com/company/legal/lifecycle/#policy) only
- Security and Severity Level 1 issues will still be fixed for
- MySQL 4.0 and 4.1.
+ has ended.
+ Extended support for MySQL 4.1 remains available. According to
+ the MySQL Lifecycle Policy
+ (http://www.mysql.com/company/legal/lifecycle/#policy) only
+ Security and Severity Level 1 issues are still being fixed for
+ MySQL 4.1.
We do not believe in a complete code freeze because this prevents
us from making bugfixes and other fixes that must be done. By
@@ -267,13 +268,13 @@ Important
Normally, if you are beginning to use MySQL for the first time or
trying to port it to some system for which there is no binary
- distribution, we recommend going with the General Availability
- release series. Currently, this is MySQL 5.1. All MySQL releases,
- even those from development series, are checked with the MySQL
- benchmarks and an extensive test suite before being issued.
+ distribution, go with the General Availability release series.
+ Currently, this is MySQL 5.1. All MySQL releases, even those from
+ development series, are checked with the MySQL benchmarks and an
+ extensive test suite before being issued.
If you are running an older system and want to upgrade, but do not
- want to take the chance of having a non-seamless upgrade, you
+ want to take the chance of having a nonseamless upgrade, you
should upgrade to the latest version in the same release series
you are using (where only the last part of the version number is
newer than yours). We have tried to fix only fatal bugs and make
@@ -473,17 +474,16 @@ Important
rapid updates. Community Server releases are meant to appear
2-3 times per year.
- * Releases are issued within each series. Enterprise Server
- releases are numbered using even numbers (for example,
- 5.1.20). Community Server releases are numbered using odd
- numbers (for example, 5.1.21).
+ * Releases are issued within each series. For each release, the
+ last number in the version is one more than the previous
+ release within the same series.
* Binary distributions for some platforms are made by us for
major releases. Other people may make binary distributions for
other systems, but probably less frequently.
* We make fixes available as soon as we have identified and
- corrected small or non-critical but annoying bugs. The fixes
+ corrected small or noncritical but annoying bugs. The fixes
are available in source form immediately from our public
Bazaar repositories, and are included in the next release.
@@ -494,354 +494,18 @@ Important
2.1.2.4. MySQL Binaries Compiled by Sun Microsystems, Inc.
- As a service of Sun Microsystems, Inc., we provide a set of binary
- distributions of MySQL that are compiled on systems at our site or
- on systems where supporters of MySQL kindly have given us access
- to their machines.
-
- In addition to the binaries provided in platform-specific package
- formats, we offer binary distributions for a number of platforms
- in the form of compressed tar files (.tar.gz files). See Section
- 2.2, "Standard MySQL Installation Using a Binary Distribution."
-
- The RPM distributions for MySQL 5.1 releases that we make
- available through our Web site are generated by MySQL AB.
-
- For Windows distributions, see Section 2.3, "Installing MySQL on
- Windows."
-
- These distributions are generated using the script
- Build-tools/Do-compile, which compiles the source code and creates
- the binary tar.gz archive using scripts/make_binary_distribution.
-
- These binaries are configured and built with the following
- compilers and options. This information can also be obtained by
- looking at the variables COMP_ENV_INFO and CONFIGURE_LINE inside
- the script bin/mysqlbug of every binary tar file distribution.
-
- Anyone who has more optimal options for any of the following
- configure commands can mail them to the MySQL internals mailing
- list. See Section 1.5.1, "MySQL Mailing Lists."
-
- If you want to compile a debug version of MySQL, you should add
- --with-debug or --with-debug=full to the following configure
- commands and remove any -fomit-frame-pointer options.
-
- The following binaries are built on our own development systems:
-
- * Linux 2.4.xx x86 with gcc 2.95.3:
-CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro
--felide-constructors" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --disable-shared
---with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
-
- * Linux 2.4.x x86 with icc (Intel C++ Compiler 8.1 or later
- releases):
-CC=icc CXX=icpc CFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict"
-CXXFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" ./configure
---prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --enable-assembler
---disable-shared --with-client-ldflags=-all-static
---with-mysqld-ldflags=-all-static --with-embedded-server --with-innod
-b
- Note that versions 8.1 and newer of the Intel compiler have
- separate drivers for 'pure' C (icc) and C++ (icpc); if you use
- icc version 8.0 or older for building MySQL, you will need to
- set CXX=icc.
-
- * Linux 2.4.xx Intel Itanium 2 with ecc (Intel C++ Itanium
- Compiler 7.0):
-CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2
--tpp2 -ip -nolib_inline" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile
-
- * Linux 2.4.xx Intel Itanium with ecc (Intel C++ Itanium
- Compiler 7.0):
-CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile
-
- * Linux 2.4.xx alpha with ccc (Compaq C V6.2-505 / Compaq C++
- V6.3-006):
-CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch
-generic -noexceptions -nortti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-mysqld-ldflags=-non_shared
---with-client-ldflags=-non_shared --disable-shared
-
- * Linux 2.x.xx ppc with gcc 2.95.4:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/b
-in
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared --with-embedded-server
---with-innodb
-
- * Linux 2.4.xx s390 with gcc 2.95.3:
-CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
---with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
-
- * Linux 2.4.xx x86_64 (AMD64) with gcc 3.2.1:
-CXX=gcc ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared
-
- * Sun Solaris 8 x86 with gcc 3.2.3:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/b
-in
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared --with-innodb
-
- * Sun Solaris 8 SPARC with gcc 3.2:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --with-named-z-libs=no
---with-named-curses-libs=-lcurses --disable-shared
-
- * Sun Solaris 8 SPARC 64-bit with gcc 3.2:
-CC=gcc CFLAGS="-O3 -m64 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O
-3
--m64 -fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no
---with-named-curses-libs=-lcurses --disable-shared
-
- * Sun Solaris 9 SPARC with gcc 2.95.3:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --with-named-curses-libs=-lc
-urses
---disable-shared
-
- * Sun Solaris 9 SPARC with cc-5.0 (Sun Forte 5.0):
-CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt
--D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9"
-./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --enable-assembler
---with-named-z-libs=no --enable-thread-safe-client --disable-shared
-
- * IBM AIX 4.3.2 ppc with gcc 3.2.3:
-CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2
--mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no --disable-shared
-
- * IBM AIX 4.3.3 ppc with xlC_r (IBM Visual Age C/C++ 6.0):
-CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
-CXX=xlC_r CXXFLAGS ="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
-./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysq
-l/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --with-named-z-libs
-=no
---disable-shared --with-innodb
-
- * IBM AIX 5.1.0 ppc with gcc 3.3:
-CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powe
-rpc
--Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --with-named-z-libs
-=no
---disable-shared
-
- * IBM AIX 5.2.0 ppc with xlC_r (IBM Visual Age C/C++ 6.0):
-CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
-CXX=xlC_r CXXFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
-./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysq
-l/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --with-named-z-libs
-=no
---disable-shared --with-embedded-server --with-innodb
-
- * HP-UX 10.20 pa-risc1.1 with gcc 3.1:
-CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX
--I/opt/dce /include -felide-constructors -fno-exceptions -fno-rtti
--O3 -fPIC" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-pthread --with-named-thread-libs=-ldce
---with-lib-ccflags=-fPIC --disable-shared
-
- * HP-UX 11.00 pa-risc with aCC (HP ANSI C++ B3910B A.03.50):
-CC=cc CXX=aCC CFLAGS=+DAportable CXXFLAGS=+DAportable ./configure
---prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
---with-embedded-server --with-innodb
-
- * HP-UX 11.11 pa-risc2.0 64bit with aCC (HP ANSI C++ B3910B
- A.03.33):
-CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
-
- * HP-UX 11.11 pa-risc2.0 32bit with aCC (HP ANSI C++ B3910B
- A.03.33):
-CC=cc CXX=aCC CFLAGS="+DAportable" CXXFLAGS="+DAportable" ./configure
---prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
---with-innodb
-
- * HP-UX 11.22 ia64 64bit with aCC (HP aC++/ANSI C B3910B
- A.05.50):
-CC=cc CXX=aCC CFLAGS="+DD64 +DSitanium2" CXXFLAGS="+DD64 +DSitanium2"
-./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysq
-l/data
---libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile --disable-shared
---with-embedded-server --with-innodb
-
- * Apple Mac OS X 10.2 powerpc with gcc 3.1:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared
-
- * FreeBSD 4.7 i386 with gcc 2.95.4:
-CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --with-named-z-libs=not-used
---disable-shared
-
- * FreeBSD 4.7 i386 using LinuxThreads with gcc 2.95.4:
-CFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT
--D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
-CXXFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT
--D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" ./configure
---prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
---libexecdir=/usr/local/mysql/bin --enable-thread-safe-client
---enable-local-infile --enable-assembler
---with-named-thread-libs="-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R
--D_THREAD_SAFE -I /usr/local/include/pthread/linuxthreads
--L/usr/local/lib -llthread -llgcc_r" --disable-shared
---with-embedded-server --with-innodb
-
- * QNX Neutrino 6.2.1 i386 with gcc 2.95.3qnx-nto 20010315:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared
-
- The following binaries are built on third-party systems kindly
- provided to Sun Microsystems, Inc. by other users. These are
- provided only as a courtesy; we do not have full control over
- these systems, so we can provide only limited support for the
- binaries built on them.
-
- * SCO Unix 3.2v5.0.7 i386 with gcc 2.95.3:
-CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentiu
-m
--felide-constructors" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no --enable-thread-safe-cli
-ent
---disable-shared
-
- * SCO UnixWare 7.1.4 i386 with CC 3.2:
-CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no --enable-thread-safe-cli
-ent
---disable-shared --with-readline
-
- * SCO OpenServer 6.0.0 i386 with CC 3.2:
-CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --with-named-z-libs=no --enable-thread-safe-cli
-ent
---disable-shared --with-readline
-
- * Compaq Tru64 OSF/1 V5.1 732 alpha with cc/cxx (Compaq C
- V6.3-029i / DIGITAL C++ V6.1-027):
-CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline
-speed -speculate all" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias
--fast -inline speed -speculate all -noexceptions -nortti" ./configure
---prefix=/usr/local/mysql --with-extra-charsets=complex
---enable-thread-safe-client --enable-local-infile
---with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-share
-d
---with-mysqld-ldflags=-all-static
-
- * SGI Irix 6.5 IP32 with gcc 3.0.1:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared
-
- * FreeBSD/sparc64 5.0 with gcc 3.2.1:
-CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql
---localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/b
-in
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --disable-shared --with-innodb
-
- The following compile options have been used for binary packages
- that we have provided in the past. These binaries no longer are
- being updated, but the compile options are listed here for
- reference purposes.
-
- * Linux 2.2.xx SPARC with egcs 1.1.2:
-CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
--fno-omit-frame-pointer -felide-constructors -fno-exceptions
--fno-rtti" ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex --enable-thread-safe-client
---enable-local-infile --enable-assembler --disable-shared
-
- * Linux 2.2.x with x686 with gcc 2.95.2:
-CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro
--felide-constructors -fno-exceptions -fno-rtti" ./configure
---prefix=/usr/local/mysql --enable-assembler
---with-mysqld-ldflags=-all-static --disable-shared
---with-extra-charsets=complex
-
- * SunOS 4.1.4 2 sun4c with gcc 2.7.2.1:
-CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure
---prefix=/usr/local/mysql --disable-shared --with-extra-charsets=comp
-lex
---enable-assembler
-
- * SunOS 5.5.1 (and above) sun4u with egcs 1.0.3a or 2.90.27 or
- gcc 2.95.2 and newer:
-CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors
--fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql
---with-low-memory --with-extra-charsets=complex --enable-assembler
-
- * SunOS 5.6 i86pc with gcc 2.8.1:
-CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
---with-low-memory --with-extra-charsets=complex
-
- * BSDI BSD/OS 3.1 i386 with gcc 2.7.2.1:
-CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex
-
- * BSDI BSD/OS 2.1 i386 with gcc 2.7.2:
-CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex
+ Sun Microsystems, Inc. provides a set of binary distributions of
+ MySQL. In addition to binaries provided in platform-specific
+ package formats, we offer binary distributions for a number of
+ platforms in the form of compressed tar files (.tar.gz files). See
+ Section 2.2, "Standard MySQL Installation Using a Binary
+ Distribution." For Windows distributions, see Section 2.3,
+ "Installing MySQL on Windows."
- * AIX 4.2 with gcc 2.7.2.2:
-CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
---with-extra-charsets=complex
+ If you want to compile a debug version of MySQL from a source
+ distribution, you should add --with-debug or --with-debug=full to
+ the configure command used to configure the distribution and
+ remove any -fomit-frame-pointer options.
2.1.3. How to Get MySQL
@@ -889,8 +553,8 @@ CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure
shell> md5sum package_name
Example:
-shell> md5sum mysql-standard-5.1.35-linux-i686.tar.gz
-aaab65abbec64d5e907dcd41b8699945 mysql-standard-5.1.35-linux-i686.ta
+shell> md5sum mysql-standard-5.1.39-linux-i686.tar.gz
+aaab65abbec64d5e907dcd41b8699945 mysql-standard-5.1.39-linux-i686.ta
r.gz
You should verify that the resulting checksum (the string of
@@ -1064,8 +728,8 @@ pg-signature.html
signature, which also is available from the download page. The
signature file has the same name as the distribution file with an
.asc extension, as shown by the examples in the following table.
- Distribution file mysql-standard-5.1.35-linux-i686.tar.gz
- Signature file mysql-standard-5.1.35-linux-i686.tar.gz.asc
+ Distribution file mysql-standard-5.1.39-linux-i686.tar.gz
+ Signature file mysql-standard-5.1.39-linux-i686.tar.gz.asc
Make sure that both files are stored in the same directory and
then run the following command to verify the signature for the
@@ -1073,7 +737,7 @@ pg-signature.html
shell> gpg --verify package_name.asc
Example:
-shell> gpg --verify mysql-standard-5.1.35-linux-i686.tar.gz.asc
+shell> gpg --verify mysql-standard-5.1.39-linux-i686.tar.gz.asc
gpg: Signature made Tue 12 Jul 2005 23:35:41 EST using DSA key ID 507
2E1F5
gpg: Good signature from "MySQL Package signing key (www.mysql.com) <
@@ -1093,8 +757,8 @@ build(a)mysql.com>"
shell> rpm --checksig package_name.rpm
Example:
-shell> rpm --checksig MySQL-server-5.1.35-0.glibc23.i386.rpm
-MySQL-server-5.1.35-0.glibc23.i386.rpm: md5 gpg OK
+shell> rpm --checksig MySQL-server-5.1.39-0.glibc23.i386.rpm
+MySQL-server-5.1.39-0.glibc23.i386.rpm: md5 gpg OK
Note
@@ -1231,6 +895,7 @@ Note
* A Windows operating system such as Windows 2000, Windows XP,
Windows Vista, Windows Server 2003, or Windows Server 2008.
+ Both 32-bit and 64-bit versions are supported.
A Windows operating system permits you to run the MySQL server
as a service. See Section 2.3.11, "Starting MySQL as a Windows
Service."
@@ -1331,19 +996,19 @@ Caution
from when installing MySQL on Windows:
* The Essentials Package: This package has a file name similar
- to mysql-essential-5.1.35-win32.msi and contains the minimum
+ to mysql-essential-5.1.39-win32.msi and contains the minimum
set of files needed to install MySQL on Windows, including the
Configuration Wizard. This package does not include optional
components such as the embedded server and benchmark suite.
* The Complete Package: This package has a file name similar to
- mysql-5.1.35-win32.zip and contains all files needed for a
+ mysql-5.1.39-win32.zip and contains all files needed for a
complete Windows installation, including the Configuration
Wizard. This package includes optional components such as the
embedded server and benchmark suite.
* The Noinstall Archive: This package has a file name similar to
- mysql-noinstall-5.1.35-win32.zip and contains all the files
+ mysql-noinstall-5.1.39-win32.zip and contains all the files
found in the Complete install package, with the exception of
the Configuration Wizard. This package does not include an
automated installer, and must be manually installed and
@@ -1535,7 +1200,7 @@ Note
directory. In a default installation it contains C:\Program
Files\MySQL\MySQL Server 5.1\. The Version string contains the
release number. For example, for an installation of MySQL Server
- 5.1.35, the key contains a value of 5.1.35.
+ 5.1.39, the key contains a value of 5.1.39.
These registry keys are used to help external tools identify the
installed location of the MySQL server, preventing a complete scan
@@ -1585,8 +1250,7 @@ Note
typical MySQL installation on a developer machine might look like
this:
C:\Program Files\MySQL\MySQL Server 5.1
-C:\Program Files\MySQL\MySQL Administrator 1.0
-C:\Program Files\MySQL\MySQL Query Browser 1.0
+C:\Program Files\MySQL\MySQL Workbench 5.1 OSS
This approach makes it easier to manage and maintain all MySQL
applications installed on a particular system.
@@ -1899,7 +1563,7 @@ skip-innodb
database management systems. If you run applications that rely on
MySQL's old "forgiving" behavior, make sure to either adapt those
applications or to disable strict mode. For more information about
- strict mode, see Section 5.1.7, "Server SQL Modes."
+ strict mode, see Section 5.1.8, "Server SQL Modes."
2.3.4.9. The Character Set Dialog
@@ -1962,7 +1626,7 @@ Warning
Typically, when installing multiple versions you create a service
name based on the version information. For example, you might
install MySQL 5.x as mysql5, or specific versions such as MySQL
- 5.1.30 as mysql5130.
+ 5.1.30 as mysql50130.
To install the MySQL server as a service but not have it started
automatically at startup, uncheck the box next to the Launch the
@@ -2101,7 +1765,7 @@ C:\> echo %WINDIR%
option file you use, it must be a plain text file.
You can also make use of the example option files included with
- your MySQL distribution; see Section 4.2.3.2.2, "Preconfigured
+ your MySQL distribution; see Section 4.2.3.3.2, "Preconfigured
Option Files."
An option file can be created and modified with any text editor,
@@ -2261,7 +1925,7 @@ InnoDB: foreign key constraint system ta
something like this, which indicates that the server is ready to
service client connections:
mysqld: ready for connections
-Version: '5.1.35' socket: '' port: 3306
+Version: '5.1.39' socket: '' port: 3306
The server continues to write to the console any further
diagnostic output it produces. You can open a new console window
@@ -2323,7 +1987,7 @@ Note
(http://forge.mysql.com/wiki/MySQL_Internals_Porting)
Use mysqld --verbose --help to display all the options that mysqld
- understands.
+ supports.
2.3.11. Starting MySQL as a Windows Service
@@ -2761,7 +2425,7 @@ C:\> C:\mysql\bin\mysqld --remove
The DATA DIRECTORY and INDEX DIRECTORY options for CREATE
TABLE are ignored on Windows, because Windows doesn't support
symbolic links. These options also are ignored on systems that
- have a non-functional realpath() call.
+ have a nonfunctional realpath() call.
* DROP DATABASE
You cannot drop a database that is in use by some thread.
@@ -2773,6 +2437,16 @@ C:\> C:\mysql\bin\mysqld --remove
must be specified using the same case throughout a given
statement. See Section 8.2.2, "Identifier Case Sensitivity."
+ * Directory and file names
+ On Windows, MySQL Server supports only directory and file
+ names that are compatible with the current ANSI code pages.
+ For example, the following Japanese directory name will not
+ work in the Western locale (code page 1252):
+datadir="C:/维基百科关于中文维基百科"
+ The same limitation applies to directory and file names
+ referred to in SQL statements, such as the data file path name
+ in LOAD DATA INFILE.
+
* The "\" path name separator character
Path name components in Windows are separated by the "\"
character, which is also the escape character in MySQL. If you
@@ -2922,11 +2596,12 @@ Important
* MySQL-shared-compat-VERSION.glibc23.i386.rpm
This package includes the shared libraries for MySQL 3.23,
- 4.0, 4.1, and 5.1. It contains single-threaded and thread-safe
- libraries. Install this package instead of MySQL-shared if you
- have applications installed that are dynamically linked
- against older versions of MySQL but you want to upgrade to the
- current version without breaking the library dependencies.
+ 4.0, and so on, up to the current release. It contains
+ single-threaded and thread-safe libraries. Install this
+ package instead of MySQL-shared if you have applications
+ installed that are dynamically linked against older versions
+ of MySQL but you want to upgrade to the current version
+ without breaking the library dependencies.
* MySQL-embedded-VERSION.glibc23.i386.rpm
The embedded MySQL server library.
@@ -2942,7 +2617,7 @@ Note
The MySQL-ndb-tools RPM requires a working installation of
perl. Prior to MySQL 5.1.18, the DBI and HTML::Template
packages were also required. See Section 2.15, "Perl
- Installation Notes," and Section 17.9.15, "ndb_size.pl ---
+ Installation Notes," and Section 17.6.21, "ndb_size.pl ---
NDBCLUSTER Size Requirement Estimator," for more information.
* MySQL-test-VERSION.glibc23.i386.rpm
@@ -3043,7 +2718,7 @@ Note
users and groups (as listed in the /etc/passwd and /etc/group
files) by the RPM installation process being run by root.
- For non-local user management (LDAP, NIS, and so forth), the
+ For nonlocal user management (LDAP, NIS, and so forth), the
administrative tools may require additional authentication (such
as a password), and will fail if the installing user does not
provide this authentication. Even if they fail, the RPM
@@ -3219,6 +2894,9 @@ alias mysqladmin /usr/local/mysql/bin/my
2.6. Installing MySQL on Solaris
+ To obtain a binary MySQL distribution for Solaris in tarball or
+ PKG format, http://dev.mysql.com/downloads/mysql/5.1.html.
+
If you install MySQL using a binary tarball distribution on
Solaris, you may run into trouble even before you get the MySQL
distribution unpacked, as the Solaris tar cannot handle long file
@@ -3226,8 +2904,7 @@ alias mysqladmin /usr/local/mysql/bin/my
MySQL.
If this occurs, you must use GNU tar (gtar) to unpack the
- distribution. You can find a precompiled copy for Solaris at
- http://dev.mysql.com/downloads/os-solaris.html.
+ distribution.
You can install MySQL on Solaris using a binary package in PKG
format instead of the binary tarball distribution. Before
@@ -3572,7 +3249,7 @@ Note
MySQL tar file binary distributions have names of the form
mysql-VERSION-OS.tar.gz, where VERSION is a number (for example,
- 5.1.35), and OS indicates the type of operating system for which
+ 5.1.39), and OS indicates the type of operating system for which
the distribution is intended (for example, pc-linux-i686).
In addition to these generic packages, we also offer binaries in
@@ -3717,10 +3394,10 @@ shell> chown -R mysql data
Permissions in Grant Tables." For Perl module installation
instructions, see Section 2.15, "Perl Installation Notes."
11. If you would like to use mysqlaccess and have the MySQL
- distribution in some non-standard location, you must change
- the location where mysqlaccess expects to find the mysql
- client. Edit the bin/mysqlaccess script at approximately line
- 18. Search for a line that looks like this:
+ distribution in some nonstandard location, you must change the
+ location where mysqlaccess expects to find the mysql client.
+ Edit the bin/mysqlaccess script at approximately line 18.
+ Search for a line that looks like this:
$MYSQL = '/usr/local/bin/mysql'; # path to mysql executable
Change the path to reflect the location where mysql actually
is stored on your system. If you do not do this, a Broken pipe
@@ -3764,7 +3441,7 @@ Note
MySQL source distributions are provided as compressed tar archives
and have names of the form mysql-VERSION.tar.gz, where VERSION is
- a number like 5.1.35.
+ a number like 5.1.39.
You need the following tools to build and install MySQL from
source:
@@ -3792,16 +3469,16 @@ Note
* A good make program. GNU make is always recommended and is
sometimes required. (BSD make fails, and vendor-provided make
- implementations may fail as well.) If you have problems, we
- recommend GNU make 3.75 or newer.
+ implementations may fail as well.) If you have problems, use
+ GNU make 3.75 or newer.
* libtool 1.5.24 or later is also recommended.
If you are using a version of gcc recent enough to understand the
-fno-exceptions option, it is very important that you use this
option. Otherwise, you may compile a binary that crashes randomly.
- We also recommend that you use -felide-constructors and -fno-rtti
- along with -fno-exceptions. When in doubt, do the following:
+ Also use -felide-constructors and -fno-rtti along with
+ -fno-exceptions. When in doubt, do the following:
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
-fno-exceptions -fno-rtti" ./configure \
--prefix=/usr/local/mysql --enable-assembler \
@@ -3910,7 +3587,7 @@ shell> cp support-files/my-medium.cnf /e
If you want to configure support for InnoDB tables, you should
edit the /etc/my.cnf file, remove the # character before the
option lines that start with innodb_..., and modify the option
- values to be what you want. See Section 4.2.3.2, "Using Option
+ values to be what you want. See Section 4.2.3.3, "Using Option
Files," and Section 13.6.2, "InnoDB Configuration."
9. Change location into the installation directory:
@@ -4115,7 +3792,7 @@ shell> ./configure --help
--with-openssl-includes Find OpenSSL headers in DIR
--with-openssl-libs Find OpenSSL libraries in DIR
--with-other-libc=DIR Link against libc and other standard
- libraries installed in the specified non-standard location
+ libraries installed in the specified nonstandard location
--with-pic Try to use only PIC/non-PIC objects Use both
--with-plugin-PLUGIN Forces the named plugin to be linked into
mysqld statically 5.1.11
@@ -4190,7 +3867,7 @@ shell> ./configure --prefix=/usr/local \
directory locations at server startup time by using the
--basedir and --datadir options. These can be given on the
command line or in an MySQL option file, although it is more
- common to use an option file. See Section 4.2.3.2, "Using
+ common to use an option file. See Section 4.2.3.3, "Using
Option Files."
* If you are using Unix and you want the MySQL socket file
@@ -4250,7 +3927,7 @@ CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLA
2.1.2.4, "MySQL Binaries Compiled by Sun Microsystems, Inc.."
There are some configuration settings you can tweak to build
an even faster binary, but these are only for advanced users.
- See Section 7.5.6, "How Compiling and Linking Affects the
+ See Section 7.5.1, "How Compiling and Linking Affects the
Speed of MySQL."
If the build fails and produces errors about your compiler or
linker not being able to create the shared library
@@ -4280,14 +3957,6 @@ shell> ./configure --with-collation=COLL
must be a legal collation for the character set. (Use the SHOW
COLLATION statement to determine which collations are
available for each character set.)
-
-Warning
- If you change character sets after having created any tables,
- you must run myisamchk -r -q --set-collation=collation_name on
- every MyISAM table. Your indexes may be sorted incorrectly
- otherwise. This can happen if you install MySQL, create some
- tables, and then reconfigure MySQL to use a different
- character set and reinstall it.
With the configure option --with-extra-charsets=LIST, you can
define which additional character sets should be compiled into
the server. LIST is one of the following:
@@ -4300,7 +3969,7 @@ Warning
+ all to include all character sets into the binaries
Clients that want to convert characters between the server and
the client should use the SET NAMES statement. See Section
- 5.1.4, "Session System Variables," and Section 9.1.4,
+ 5.1.5, "Session System Variables," and Section 9.1.4,
"Connection Character Sets and Collations."
* To configure MySQL with debugging code, use the --with-debug
@@ -4479,16 +4148,19 @@ sql_yacc.yy:#####: fatal error: maximum
directory:
shell> mkdir mysql-server
shell> bzr init-repo --trees mysql-server
- Once you have an initialized directory, you can branch from
+
+ 2. Once you have an initialized directory, you can branch from
the public MySQL server repositories. To create a branch of a
specific version:
shell> cd mysql-server
shell> bzr branch lp:mysql-server/5.1 mysql-5.1
- The initial download will take some time to complete,
+
+ 3. The initial download will take some time to complete,
depending on the speed of your connection. Please be patient.
Once you have downloaded the first tree, additional trees
should take significantly less time to download.
- When building from the Bazaar branch, you may want to create a
+
+ 4. When building from the Bazaar branch, you may want to create a
copy of your active branch so that you can make configuration
and other changes without affecting the original branch
contents. You can achieve this by branching from the original
@@ -4548,10 +4220,9 @@ Note
2. When the build is done, run make install. Be careful with this
on a production machine; the command may overwrite your live
release installation. If you have another installation of
- MySQL, we recommend that you run ./configure with different
- values for the --prefix, --with-tcp-port, and
- --with-unix-socket-path options than those used for your
- production server.
+ MySQL, run ./configure with different values for the --prefix,
+ --with-tcp-port, and --with-unix-socket-path options than
+ those used for your production server.
3. Play hard with your new installation and try to make the new
features crash. Start by running make test. See Section
@@ -4656,11 +4327,11 @@ shell> CXX="gcc -O3" ./configure
This works because gcc compiles C++ source files as well as
g++ does, but does not link in libg++ or libstdc++ by default.
Another way to fix these problems is to install g++, libg++,
- and libstdc++. However, we recommend that you not use libg++
- or libstdc++ with MySQL because this only increases the binary
- size of mysqld without providing any benefits. Some versions
- of these libraries have also caused strange problems for MySQL
- users in the past.
+ and libstdc++. However, do not use libg++ or libstdc++ with
+ MySQL because this only increases the binary size of mysqld
+ without providing any benefits. Some versions of these
+ libraries have also caused strange problems for MySQL users in
+ the past.
* If your compile fails with errors such as any of the
following, you must upgrade your version of make to GNU make:
@@ -4771,7 +4442,7 @@ export CXX="gcc"
* On most systems, you can force MIT-pthreads to be used by
running configure with the --with-mit-threads option:
shell> ./configure --with-mit-threads
- Building in a non-source directory is not supported when using
+ Building in a nonsource directory is not supported when using
MIT-pthreads because we want to minimize our changes to this
code.
@@ -5018,7 +4689,7 @@ C:\workdir>win\configure.js WITH_INNOBAS
directory, you need to tell the server their path names. You
can either do this on the command line with the --basedir and
--datadir options, or by placing appropriate options in an
- option file. (See Section 4.2.3.2, "Using Option Files.") If
+ option file. (See Section 4.2.3.3, "Using Option Files.") If
you have an existing data directory elsewhere that you want to
use, you can specify its path name instead.
When the server is running in standalone fashion or as a
@@ -5034,7 +4705,7 @@ C:\workdir>win\configure.js WITH_INNOBAS
option), and invoke mysql-test-run.pl. For example (using
Cygwin and the bash shell):
shell> cd mysql-test
-shell> export MTS_VS_CONFIG=debug
+shell> export MTR_VS_CONFIG=debug
shell> ./mysql-test-run.pl --force --timer
shell> ./mysql-test-run.pl --force --timer --ps-protocol
@@ -5396,10 +5067,10 @@ shell> bin/mysqladmin variables
on your platform and version of MySQL, but should be similar
to that shown here:
shell> bin/mysqladmin version
-mysqladmin Ver 14.12 Distrib 5.1.35, for pc-linux-gnu on i686
+mysqladmin Ver 14.12 Distrib 5.1.39, for pc-linux-gnu on i686
...
-Server version 5.1.35
+Server version 5.1.39
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
@@ -5626,31 +5297,30 @@ shell> bin/mysql mysql
Generally, you start the mysqld server in one of these ways:
- * By invoking mysqld directly. This works on any platform.
+ * Invoke mysqld directly. This works on any platform.
- * By running the MySQL server as a Windows service. The service
- can be set to start the server automatically when Windows
- starts, or as a manual service that you start on request. For
+ * Run the MySQL server as a Windows service. The service can be
+ set to start the server automatically when Windows starts, or
+ as a manual service that you start on request. For
instructions, see Section 2.3.11, "Starting MySQL as a Windows
Service."
- * By invoking mysqld_safe, which tries to determine the proper
+ * Invoke mysqld_safe, which tries to determine the proper
options for mysqld and then runs it with those options. This
script is used on Unix and Unix-like systems. See Section
4.3.2, "mysqld_safe --- MySQL Server Startup Script."
- * By invoking mysql.server. This script is used primarily at
- system startup and shutdown on systems that use System V-style
- run directories, where it usually is installed under the name
+ * Invoke mysql.server. This script is used primarily at system
+ startup and shutdown on systems that use System V-style run
+ directories, where it usually is installed under the name
mysql. The mysql.server script starts the server by invoking
mysqld_safe. See Section 4.3.3, "mysql.server --- MySQL Server
Startup Script."
- * On Mac OS X, you can install a separate MySQL Startup Item
- package to enable the automatic startup of MySQL on system
- startup. The Startup Item starts the server by invoking
- mysql.server. See Section 2.5, "Installing MySQL on Mac OS X,"
- for details.
+ * On Mac OS X, install a separate MySQL Startup Item package to
+ enable the automatic startup of MySQL on system startup. The
+ Startup Item starts the server by invoking mysql.server. See
+ Section 2.5, "Installing MySQL on Mac OS X," for details.
The mysqld_safe and mysql.server scripts and the Mac OS X Startup
Item can be used to start the server manually, or automatically at
@@ -5668,11 +5338,11 @@ shell> mysql.server stop
user option to the [mysqld] group of the /etc/my.cnf option file,
as shown later in this section. (It is possible that you will need
to edit mysql.server if you've installed a binary distribution of
- MySQL in a non-standard location. Modify it to cd into the proper
- directory before it runs mysqld_safe. If you do this, your
- modified version of mysql.server may be overwritten if you upgrade
- MySQL in the future, so you should make a copy of your edited
- version that you can reinstall.)
+ MySQL in a nonstandard location. Modify it to change location into
+ the proper directory before it runs mysqld_safe. If you do this,
+ your modified version of mysql.server may be overwritten if you
+ upgrade MySQL in the future, so you should make a copy of your
+ edited version that you can reinstall.)
mysql.server stop stops the server by sending a signal to it. You
can also stop the server manually by executing mysqladmin
@@ -5750,10 +5420,10 @@ user=mysql
[mysql.server]
basedir=/usr/local/mysql
- The mysql.server script understands the following options:
- basedir, datadir, and pid-file. If specified, they must be placed
- in an option file, not on the command line. mysql.server
- understands only start and stop as command-line arguments.
+ The mysql.server script supports the following options: basedir,
+ datadir, and pid-file. If specified, they must be placed in an
+ option file, not on the command line. mysql.server supports only
+ start and stop as command-line arguments.
The following table shows which option groups the server and each
startup script read from option files.
@@ -5774,7 +5444,7 @@ basedir=/usr/local/mysql
[mysql.server] and [mysqld_safe] groups instead when using MySQL
5.1.
- See Section 4.2.3.2, "Using Option Files."
+ See Section 4.2.3.3, "Using Option Files."
2.11.2.3. Starting and Troubleshooting the MySQL Server
@@ -5808,17 +5478,17 @@ basedir=/usr/local/mysql
that you have them configured the way you want before starting the
server:
- MySQL Enterprise For expert advice on start-up options appropriate
- to your circumstances, subscribe to The MySQL Enterprise Monitor.
- For more information, see
- http://www.mysql.com/products/enterprise/advisors.html.
-
* If you are using InnoDB tables, see Section 13.6.2, "InnoDB
Configuration."
* If you are using MySQL Cluster, see Section 17.3, "MySQL
Cluster Configuration."
+ MySQL Enterprise For expert advice on start-up options appropriate
+ to your circumstances, subscribe to The MySQL Enterprise Monitor.
+ For more information, see
+ http://www.mysql.com/products/enterprise/advisors.html.
+
Storage engines will use default option values if you specify
none, but it is recommended that you review the available options
and specify explicit values for those for which the defaults are
@@ -6144,43 +5814,43 @@ Note
2.12.1. Upgrading MySQL
- As a general rule, we recommend that when you upgrade from one
- release series to another, you should go to the next series rather
- than skipping a series. If you wish to upgrade from a release
- series previous to MySQL 5.0, you should upgrade to each
- successive release series in turn until you have reached MySQL
- 5.0, and then proceed with the upgrade to MySQL 5.1. For example,
- if you currently are running MySQL 4.0 and wish to upgrade to a
- newer series, upgrade to MySQL 4.1 first before upgrading to 5.0,
- and so forth. For information on upgrading to MySQL 5.0, see the
- MySQL 5.0 Reference Manual; for earlier releases, see the MySQL
- 3.23, 4.0, 4.1 Reference Manual.
+ As a general rule, to upgrade from one release series to another,
+ you should go to the next series rather than skipping a series. To
+ upgrade from a release series previous to MySQL 5.0, upgrade to
+ each successive release series in turn until you have reached
+ MySQL 5.0, and then proceed with the upgrade to MySQL 5.1. For
+ example, if you currently are running MySQL 4.0 and wish to
+ upgrade to a newer series, upgrade to MySQL 4.1 first before
+ upgrading to 5.0, and so forth. For information on upgrading to
+ MySQL 5.0, see the MySQL 5.0 Reference Manual; for earlier
+ releases, see the MySQL 3.23, 4.0, 4.1 Reference Manual.
- The following items form a checklist of things that you should do
- whenever you perform an upgrade from MySQL 5.0 to 5.1:
+ To upgrade from MySQL 5.0 to 5.1, use the items in the following
+ checklist as a guide:
* Before any upgrade, back up your databases, including the
- mysql database that contains the grant tables.
+ mysql database that contains the grant tables. See Section
+ 6.1, "Database Backups."
* Read all the notes in Section 2.12.1.1, "Upgrading from MySQL
- 5.0 to 5.1." These notes will enable you to identify upgrade
- issues that apply to your current MySQL installation. Read
- Appendix C, "MySQL Change History" as well, which provides
- information about features that are new in MySQL 5.1 or differ
- from those found in MySQL 5.0.
-
- * For any incompatibilities that require your attention before
- upgrading, deal with them as described in Section 2.12.1.1,
- "Upgrading from MySQL 5.0 to 5.1."
-
- * After you upgrade to a new version of MySQL, you should run
- mysql_upgrade (see Section 4.4.8, "mysql_upgrade --- Check
- Tables for MySQL Upgrade"). This program will check your
- tables, and repair them if necessary. It will also update your
- grant tables to make sure that they have the current structure
- so that you can take advantage of any new capabilities. (Some
- releases of MySQL introduce changes to the structure of the
- grant tables to add new privileges or features.)
+ 5.0 to 5.1." These notes enable you to identify upgrade issues
+ that apply to your current MySQL installation. Some
+ incompatibilities discussed in that section require your
+ attention before upgrading. Others should be dealt with after
+ upgrading.
+
+ * Read Appendix C, "MySQL Change History" as well, which
+ provides information about features that are new in MySQL 5.1
+ or differ from those found in MySQL 5.0.
+
+ * After you upgrade to a new version of MySQL, run mysql_upgrade
+ (see Section 4.4.8, "mysql_upgrade --- Check Tables for MySQL
+ Upgrade"). This program checks your tables, and attempts to
+ repair them if necessary. It also updates your grant tables to
+ make sure that they have the current structure so that you can
+ take advantage of any new capabilities. (Some releases of
+ MySQL introduce changes to the structure of the grant tables
+ to add new privileges or features.)
* If you are running MySQL Server on Windows, see Section
2.3.14, "Upgrading MySQL on Windows."
@@ -6197,15 +5867,16 @@ Note
* As of MySQL 5.1.9, the mysqld-max server is included in binary
distributions. There is no separate MySQL-Max distribution. As
- of MySQL 5.1.12, binary distributions contain a server that
- includes the features previously included in mysqld-max.
+ of MySQL 5.1.12, there is no mysqld-max server at all in
+ binary distributions. They contain a server that includes the
+ features previously included in mysqld-max.
* If you have created a user-defined function (UDF) with a given
name and upgrade MySQL to a version that implements a new
built-in function with the same name, the UDF becomes
inaccessible. To correct this, use DROP FUNCTION to drop the
UDF, and then use CREATE FUNCTION to re-create the UDF with a
- different non-conflicting name. The same is true if the new
+ different nonconflicting name. The same is true if the new
version of MySQL implements a built-in function with the same
name as an existing stored function. See Section 8.2.4,
"Function Name Parsing and Resolution," for the rules
@@ -6213,8 +5884,8 @@ Note
kinds of functions.
You can always move the MySQL format files and data files between
- different versions on the same architecture as long as you stay
- within versions for the same release series of MySQL.
+ different versions on systems with the same architecture as long
+ as you stay within versions for the same release series of MySQL.
If you are cautious about using new versions, you can always
rename your old mysqld before installing a newer one. For example,
@@ -6239,26 +5910,39 @@ Note
anything other than the program name, you have an active my.cnf
file that affects server or client operation.
+ If your MySQL installation contains a large amount of data that
+ might take a long time to convert after an in-place upgrade, you
+ might find it useful to create a "dummy" database instance for
+ assessing what conversions might be needed and the work involved
+ to perform them. Make a copy of your MySQL instance that contains
+ a full copy of the mysql database, plus all other databases
+ without data. Run your upgrade procedure on this dummy instance to
+ see what actions might be needed so that you can better evaluate
+ the work involved when performing actual data conversion on your
+ original database instance.
+
It is a good idea to rebuild and reinstall the Perl DBD::mysql
module whenever you install a new release of MySQL. The same
- applies to other MySQL interfaces as well, such as the PHP mysql
- extension and the Python MySQLdb module.
+ applies to other MySQL interfaces as well, such as PHP mysql
+ extensions and the Python MySQLdb module.
2.12.1.1. Upgrading from MySQL 5.0 to 5.1
After upgrading a 5.0 installation to 5.0.10 or above, it is
necessary to upgrade your grant tables. Otherwise, creating stored
- procedures and functions might not work. The procedure for doing
- this is described in Section 4.4.8, "mysql_upgrade --- Check
- Tables for MySQL Upgrade."
+ procedures and functions might not work. To perform this upgrade,
+ run mysql_upgrade.
Note
It is good practice to back up your data before installing any new
version of software. Although MySQL works very hard to ensure a
high level of quality, you should protect your data by making a
- backup. MySQL recommends that you dump and reload your tables from
- any previous version to upgrade to 5.1.
+ backup.
+
+ To upgrade to 5.1 from any previous version, MySQL recommends that
+ you dump your tables with mysqldump before upgrading and reload
+ the dump file after upgrading.
In general, you should do the following when upgrading from MySQL
5.0 to 5.1:
@@ -6276,7 +5960,7 @@ Note
+ The MySQL 5.1 change history describes significant new
features you can use in 5.1 or that differ from those
found in MySQL 5.0. Some of these changes may result in
- incompatibilities. See Section C.1, "Changes in release
+ incompatibilities. See Section C.1, "Changes in Release
5.1.x (Production)."
* Note particularly any changes that are marked Known issue or
@@ -6292,17 +5976,17 @@ Note
dump and reload, or use of a statement such as CHECK TABLE or
REPAIR TABLE.
For dump and reload instructions, see Section 2.12.4,
- "Rebuilding Tables or Table Indexes." Any procedure that
- involves REPAIR TABLE with the USE_FRM option must be done
- before upgrading. Use of this statement with a version of
+ "Rebuilding or Repairing Tables or Indexes." Any procedure
+ that involves REPAIR TABLE with the USE_FRM option must be
+ done before upgrading. Use of this statement with a version of
MySQL different from the one used to create the table (that
is, using it after upgrading) may damage the table. See
Section 12.5.2.6, "REPAIR TABLE Syntax."
* After you upgrade to a new version of MySQL, run mysql_upgrade
(see Section 4.4.8, "mysql_upgrade --- Check Tables for MySQL
- Upgrade"). This program will check your tables, and repair
- them if necessary. It will also update your grant tables to
+ Upgrade"). This program checks your tables, and attempts to
+ repair them if necessary. It also updates your grant tables to
make sure that they have the current structure so that you can
take advantage of any new capabilities. (Some releases of
MySQL introduce changes to the structure of the grant tables
@@ -6312,8 +5996,8 @@ Note
Rebuilt," to see whether changes to character sets or
collations were made that affect your table indexes. If so,
you will need to rebuild the affected indexes using the
- instructions in Section 2.12.4, "Rebuilding Tables or Table
- Indexes."
+ instructions in Section 2.12.4, "Rebuilding or Repairing
+ Tables or Indexes."
* If you are running MySQL Server on Windows, see Section
2.3.14, "Upgrading MySQL on Windows."
@@ -6322,6 +6006,26 @@ Note
Replication Setup," for information on upgrading your
replication setup.
+ If your MySQL installation contains a large amount of data that
+ might take a long time to convert after an in-place upgrade, you
+ might find it useful to create a "dummy" database instance for
+ assessing what conversions might be needed and the work involved
+ to perform them. Make a copy of your MySQL instance that contains
+ a full copy of the mysql database, plus all other databases
+ without data. Run your upgrade procedure on this dummy instance to
+ see what actions might be needed so that you can better evaluate
+ the work involved when performing actual data conversion on your
+ original database instance.
+
+ MySQL Enterprise MySQL Enterprise subscribers will find more
+ information about upgrading in the Knowledge Base articles found
+ at Upgrading
+ (https://kb.mysql.com/search.php?cat=search&category=41) Access
+ to the MySQL Knowledge Base collection of articles is one of the
+ advantages of subscribing to MySQL Enterprise. For more
+ information, see
+ http://www.mysql.com/products/enterprise/advisors.html.
+
The following lists describe changes that may affect applications
and that you should watch out for when upgrading to MySQL 5.1.
@@ -6338,6 +6042,39 @@ Note
Server Changes:
+ * Known issue: Dumps performed by using mysqldump to generate a
+ dump file before the upgrade and reloading the file after
+ upgrading are subject to the following problem:
+ Before MySQL 5.0.40, mysqldump displays SPATIAL index
+ definitions using prefix lengths for the indexed columns.
+ These prefix lengths are accepted in MySQL 5.0, but not as of
+ MySQL 5.1. If you use mysqldump from versions of MySQL older
+ than 5.0.40, any table containing SPATIAL indexes will cause
+ an error when the dump file is reloaded into MySQL 5.1 or
+ higher.
+ For example, a table definition might look like this when
+ dumped in MySQL 5.0:
+CREATE TABLE `t` (
+ `g` geometry NOT NULL,
+ SPATIAL KEY `g` (`g`(32))
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ The SPATIAL index definition will not be accepted in MySQL
+ 5.1. To work around this, edit the dump file to remove the
+ prefix:
+CREATE TABLE `t` (
+ `g` geometry NOT NULL,
+ SPATIAL KEY `g` (`g`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ Dump files can be large, so it may be preferable to dump table
+ definitions and data separately to make it easier to edit the
+ definitions:
+shell> mysqldump --no-data other_args > definitions.sql
+shell> mysqldump --no-create-info other_args > data.sql
+ Then edit definitions.sql before reloading definitions.sql and
+ data.sql, in that order.
+ If you upgrade to a version of MySQL 5.0 higher than 5.0.40
+ before upgrading to MySQL 5.1, this problem does not occur.
+
* Known issue: Before MySQL 5.1.30, the CHECK TABLE ... FOR
UPGRADE statement did not check for incompatible collation
changes made in MySQL 5.1.24. (This also affects mysqlcheck
@@ -6364,43 +6101,38 @@ Note
* Known issue: MySQL introduces encoding for table names that
have non-ASCII characters (see Section 8.2.3, "Mapping of
- Identifiers to File Names"). After a live upgrade from MySQL
+ Identifiers to File Names"). After a binary upgrade from MySQL
5.0 to 5.1 or higher, the server recognizes names that have
non-ASCII characters and adds a #mysql50# prefix to them.
- Running mysqlcheck --all-databases --check-upgrade
- --fix-db-names --fix-table-names later upgrades these names by
- encoding them with the new format and removes the #mysql50#
- prefix.
- However, although this is done for tables, it is not done for
- views prior to MySQL 5.1.23. To work around this problem, drop
- each affected view and recreate it. This problem is fixed as
- of MySQL 5.1.23.
- To check and repair tables and to upgrade the system tables,
- mysql_upgrade executes the following commands:
-mysqlcheck --check-upgrade --all-databases --auto-repair
-mysql_fix_privilege_tables
+ As of MySQL 5.1.31, mysql_upgrade encodes these names by
+ executing the following command:
mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table
-names
- However, prior to MySQL 5.1.31, mysql_upgrade does not run the
- third command, which is necessary to re-encode database or
- table names that contain non-alphanumeric characters. (They
- still appear after the upgrade with the #mysql50# prefix.) If
- you have such database or table names, execute the third
- command manually after executing mysql_upgrade. This problem
- is fixed as of MySQL 5.1.31.
-
- * Known issue: When upgrading from MySQL 5.0 to 5.1, running
- mysqlcheck (or mysql_upgrade, which runs mysqlcheck) to
- upgrade tables fails for names that must be written as quoted
- identifiers. To work around this problem, rename each affected
- table to a name that does not require quoting:
+ Prior to MySQL 5.1.31, mysql_upgrade does not execute this
+ command, so you should execute it manually if you have
+ database or table names that contain nonalphanumeric
+ characters.
+ Prior to MySQL 5.1.23, the mysqlcheck command does not perform
+ the name encoding for views. To work around this problem, drop
+ each affected view and recreate it.
+ mysqlcheck cannot fix names that contain literal instances of
+ the @ character that is used for encoding special characters.
+ If you have databases or tables that contain this character,
+ use mysqldump to dump them before upgrading to MySQL 5.1, and
+ then reload the dump file after upgrading.
+
+ * Known issue: When upgrading from MySQL 5.0 to versions of 5.1
+ prior to 5.1.23, running mysqlcheck (or mysql_upgrade, which
+ runs mysqlcheck) to upgrade tables fails for names that must
+ be written as quoted identifiers. To work around this problem,
+ rename each affected table to a name that does not require
+ quoting:
RENAME TABLE `tab``le_a` TO table_a;
RENAME TABLE `table b` TO table_b;
After renaming the tables, run the mysql_upgrade program. Then
rename the tables back to their original names:
RENAME TABLE table_a TO `tab``le_a`;
RENAME TABLE table_b TO `table b`;
- This problem is fixed as of MySQL 5.1.23.
* Known issue: In connection with view creation, the server
created arc directories inside database directories and
@@ -6428,44 +6160,26 @@ RENAME TABLE table_b TO `table b`;
+ Instead of renaming a view after the downgrade, drop it
and recreate it.
- * Known issue: Dumps performed by using mysqldump to generate a
- dump file before the upgrade and reloading the file after
- upgrading are subject to the following problem:
- Before MySQL 5.0.40, mysqldump displays SPATIAL index
- definitions using prefix lengths for the indexed columns.
- These prefix lengths are accepted in MySQL 5.0, but not as of
- MySQL 5.1. If you use mysqldump from versions of MySQL older
- than 5.0.40, any table containing SPATIAL indexes will cause
- an error when the dump file is reloaded into MySQL 5.1 or
- higher.
- For example, a table definition might look like this when
- dumped in MySQL 5.0:
-CREATE TABLE `t` (
- `g` geometry NOT NULL,
- SPATIAL KEY `g` (`g`(32))
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
- The SPATIAL index definition will not be accepted in MySQL
- 5.1. To work around this, edit the dump file to remove the
- prefix:
-CREATE TABLE `t` (
- `g` geometry NOT NULL,
- SPATIAL KEY `g` (`g`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
- Dump files can be large, so it may be preferable to dump table
- definitions and data separately to make it easier to edit the
- definitions:
-shell> mysqldump --no-data other_args > definitions.sql
-shell> mysqldump --no-create-info other_args > data.sql
- Then edit definitions.sql before reloading definitions.sql and
- data.sql, in that order.
+ * Incompatible change: Character set or collation changes were
+ made in MySQL 5.1.21, 5.1.23, and 5.1.24 that may require
+ table indexes to be rebuilt. For details, see Section 2.12.3,
+ "Checking Whether Table Indexes Must Be Rebuilt."
+
+ * Incompatible change: In MySQL 5.1.36, options for loading
+ plugins such as pluggable storage engines were changed from
+ boolean to tristate format. The implementations overlap, but
+ if you previously used options of the form --plugin_name=0 or
+ --plugin_name=1, you should instead use --plugin_name=OFF or
+ --plugin_name=ON, respectively. For details, see Section
+ 5.1.3, "Server Options for Loading Plugins."
* Incompatible change: From MySQL 5.1.24 to 5.1.31, the UPDATE
statement was changed such that assigning NULL to a NOT NULL
column caused an error even when strict SQL mode was not
enabled. The original behavior before MySQL 5.1.24 was that
such assignments caused an error only in strict SQL mode, and
- otherwise set the column to the the implicit default value for
- the column data type and generated a warning. (For information
+ otherwise set the column to the implicit default value for the
+ column data type and generated a warning. (For information
about implicit default values, see Section 10.1.4, "Data Type
Default Values.")
The change caused compatibility problems for applications that
@@ -6478,11 +6192,6 @@ shell> mysqldump --no-create-info other_
occur if you replicate between servers that have the modified
UPDATE behavior and those that do not.
- * Incompatible change: Character set or collation changes were
- made in MySQL 5.1.21, 5.1.23, and 5.1.24 that may require
- table indexes to be rebuilt. For details, see Section 2.12.3,
- "Checking Whether Table Indexes Must Be Rebuilt."
-
* Incompatible change: As of MySQL 5.1.29, the default binary
logging mode has been changed from MIXED to STATEMENT for
compatibility with MySQL 5.0.
@@ -6537,9 +6246,22 @@ shell> mysqldump --no-create-info other_
SHOW or DESCRIBE statement. This happened to work in some
instances, but is no longer supported. In many cases, a
workaround for this change is to use the cursor with a SELECT
- query to read from an INFORMATION_SCHEMA table that provides
+ query to read from an INFORMATION_SCHEMA table that produces
the same information as the SHOW statement.
+ * Incompatible change: SHOW CREATE VIEW displays view
+ definitions using an AS alias_name clause for each column. If
+ a column is created from an expression, the default alias is
+ the expression text, which can be quite long. As of MySQL
+ 5.1.23, aliases for column names in CREATE VIEW statements are
+ checked against the maximum column length of 64 characters
+ (not the maximum alias length of 256 characters). As a result,
+ views created from the output of SHOW CREATE VIEW fail if any
+ column alias exceeds 64 characters. This can cause problems
+ for replication or loading dump files. For additional
+ information and workarounds, see Section D.4, "Restrictions on
+ Views."
+
* Incompatible change: MySQL 5.1 implements support for a plugin
API that allows the loading and unloading of components at
runtime, without restarting the server. Section 22.2, "The
@@ -6558,7 +6280,7 @@ shell> mysqldump --no-create-info other_
* Incompatible change: The table_cache system variable has been
renamed to table_open_cache. Any scripts that refer to
- table_cache should be updated to use the new name.
+ table_cache must be updated to use the new name.
* Incompatible change: Several issues were identified for stored
programs (stored procedures and functions, triggers, and
@@ -6590,10 +6312,7 @@ shell> mysqldump --no-create-info other_
In 5.1.20 only, the following conditions apply: 1) The default
is to use syslog, which is not compatible with releases prior
to 5.1.20. 2) Logging to syslog may fail to operate correctly
- in some cases, so we recommend that you use --skip-syslog or
- --log-error. To maintain the older behavior if you were using
- no error-logging option, use --skip-syslog. If you were using
- --log-error, continue to use it.
+ in some cases. For these reasons, avoid using MySQL 5.1.20.
* Incompatible change: As of MySQL 5.1.15, InnoDB rolls back
only the last statement on a transaction timeout. A new
@@ -6649,11 +6368,11 @@ shell> mysqldump --no-create-info other_
schema_name.PI ().
+ Alternatively, rename the stored function to use a
- non-conflicting name and change invocations of the
+ nonconflicting name and change invocations of the
function to use the new name.
* Incompatible change: For utf8 columns, the full-text parser
- incorrectly considered several non-word punctuation and
+ incorrectly considered several nonword punctuation and
whitespace characters as word characters, causing some
searches to return incorrect results. The fix involves a
change to the full-text parser in MySQL 5.1.12, so as of
@@ -6665,24 +6384,24 @@ REPAIR TABLE tbl_name QUICK;
runtime, so the distinction between disabled and invalid
storage engines no longer applies. As of MySQL 5.1.12, this
affects the NO_ENGINE_SUBSTITUTION SQL mode, as described in
- Section 5.1.7, "Server SQL Modes."
+ Section 5.1.8, "Server SQL Modes."
* Incompatible change: The structure of FULLTEXT indexes has
been changed in MySQL 5.1.6. After upgrading to MySQL 5.1.6 or
- greater, use the REPAIR TABLE ... QUICK statement for each
- table that contains any FULLTEXT indexes.
+ greater, any tables that have FULLTEXT indexes must be
+ repaired with REPAIR TABLE:
+REPAIR TABLE tbl_name QUICK;
* Incompatible change: In MySQL 5.1.6, when log tables were
implemented, the default log destination for the general query
and slow query log was TABLE. As of MySQL 5.1.21, this default
has been changed to FILE, which is compatible with MySQL 5.0,
- but incompatible with earlier releases of MySQL 5.1 from 5.1.6
- to 5.1.20. If you are upgrading from MySQL 5.0 to this
- release, no logging option changes should be necessary.
- However, if you are upgrading from 5.1.6 through 5.1.20 to
- this release and were using TABLE logging, use the
- --log-output=TABLE option explicitly to preserve your server's
- table-logging behavior.
+ but incompatible with earlier releases of MySQL 5.1. If you
+ are upgrading from MySQL 5.0 to 5.1.21 or higher, no logging
+ option changes should be necessary. However, if you are
+ upgrading from 5.1.6 through 5.1.20 to 5.1.21 or higher and
+ were using TABLE logging, use the --log-output=TABLE option
+ explicitly to preserve your server's table-logging behavior.
* Incompatible change: For ENUM columns that had enumeration
values containing commas, the commas were mapped to 0xff
@@ -6701,43 +6420,18 @@ REPAIR TABLE tbl_name QUICK;
MONTHNAME() functions. See Section 9.8, "MySQL Server Locale
Support."
- * As of MySQL 5.1.6, special characters in database and table
- identifiers are encoded when creating the corresponding
- directory names and file names. This relaxes the restrictions
- on the characters that can appear in identifiers. See Section
- 8.2.3, "Mapping of Identifiers to File Names." To cause
- database and table names to be updated to the new format
- should they contain special characters, re-encode them with
- mysqlcheck. The following command updates all names to the new
- encoding:
-shell> mysqlcheck --check-upgrade --fix-db-names --fix-table-names --
-all-databases
- mysqlcheck cannot fix names that contain literal instances of
- the @ character that is used for encoding special characters.
- If you have databases or tables that contain this character,
- use mysqldump to dump them before upgrading to MySQL 5.1.6 or
- later, and then reload the dump file after upgrading.
-
* As of MySQL 5.1.9, mysqld_safe no longer implicitly invokes
mysqld-max if it exists. Instead, it invokes mysqld unless a
--mysqld or --mysqld-version option is given to specify
another server explicitly. If you previously relied on the
implicit invocation of mysqld-max, you should use an
- appropriate option now.
+ appropriate option now. As of MySQL 5.1.12, there is no longer
+ any separate mysqld-max server, so no change should be
+ necessary.
SQL Changes:
- * Incompatible change: Multiple-table DELETE statements
- containing ambiguous aliases could have unintended side
- effects such as deleting rows from the wrong table. Example:
-DELETE FROM t1 AS a2 USING t1 AS a1 INNER JOIN t2 AS a2;
- As of MySQL 5.1.23, alias declarations can be declared only in
- the table_references part. Elsewhere in the statement, alias
- references are allowed but not alias declarations. Statements
- containing aliases that are no longer allowed must be
- rewritten.
-
- * Important note: Prior to MySQL 5.1.17, the parser accepted
+ * Known issue: Prior to MySQL 5.1.17, the parser accepted
invalid code in SQL condition handlers, leading to server
crashes or unexpected execution behavior in stored programs.
Specifically, the parser allowed a condition handler to refer
@@ -6745,10 +6439,10 @@ DELETE FROM t1 AS a2 USING t1 AS a1 INNE
This was incorrect because block label scope does not include
the code for handlers declared within the labeled block.
As of 5.1.17, the parser rejects this invalid construct, but
- if you upgrade in place (without dumping and reloading your
- databases), existing handlers that contain the construct still
- are invalid even if they appear to function as you expect and
- should be rewritten.
+ if you perform a binary upgrade (without dumping and reloading
+ your databases), existing handlers that contain the construct
+ still are invalid and should be rewritten even if they appear
+ to function as you expect.
To find affected handlers, use mysqldump to dump all stored
procedures and functions, triggers, and events. Then attempt
to reload them into an upgraded server. Handlers that contain
@@ -6771,27 +6465,37 @@ DELETE FROM t1 AS a2 USING t1 AS a1 INNE
be dropped and re-created so that their definitions do not
contain truncated comments.
+ * Incompatible change: Multiple-table DELETE statements
+ containing ambiguous aliases could have unintended side
+ effects such as deleting rows from the wrong table. Example:
+DELETE FROM t1 AS a2 USING t1 AS a1 INNER JOIN t2 AS a2;
+ As of MySQL 5.1.23, alias declarations can be declared only in
+ the table_references part. Elsewhere in the statement, alias
+ references are allowed but not alias declarations. Statements
+ containing aliases that are no longer allowed must be
+ rewritten.
+
* Incompatible change: As of MySQL 5.1.8, TYPE = engine_name is
still accepted as a synonym for the ENGINE = engine_name table
option but generates a warning. You should note that this
option is not available in MySQL 5.1.7, and is removed
- altogether as of MySQL 5.2.5 and produces a syntax error.
+ altogether as of MySQL 6.0 and produces a syntax error.
TYPE has been deprecated since MySQL 4.0.
- * Incompatible change: The namespace for triggers has changed in
+ * Incompatible change: The namespace for triggers changed in
MySQL 5.0.10. Previously, trigger names had to be unique per
table. Now they must be unique within the schema (database).
An implication of this change is that DROP TRIGGER syntax now
uses a schema name instead of a table name (schema name is
optional and, if omitted, the current schema will be used).
- When upgrading from a previous version of MySQL 5 to MySQL
- 5.0.10 or newer, you must drop all triggers and re-create them
- or DROP TRIGGER will not work after the upgrade. Here is a
- suggested procedure for doing this:
+ When upgrading from a version of MySQL 5 older than 5.0.10 to
+ MySQL 5.0.10 or newer, you must drop all triggers and
+ re-create them or DROP TRIGGER will not work after the
+ upgrade. Here is a suggested procedure for doing this:
1. Upgrade to MySQL 5.0.10 or later to be able to access
trigger information in the INFORMATION_SCHEMA.TRIGGERS
- table. (It should work even for pre-5.0.10 triggers.)
+ table. (This should work even for pre-5.0.10 triggers.)
2. Dump all trigger definitions using the following SELECT
statement:
@@ -6805,7 +6509,7 @@ INTO OUTFILE '/tmp/triggers.sql'
FROM INFORMATION_SCHEMA.TRIGGERS AS t;
The statement uses INTO OUTFILE, so you must have the
FILE privilege. The file will be created on the server
- host; use a different file name if you like. To be 100%
+ host. Use a different file name if you like. To be 100%
safe, inspect the trigger definitions in the triggers.sql
file, and perhaps make a backup of the file.
@@ -6815,7 +6519,7 @@ FROM INFORMATION_SCHEMA.TRIGGERS AS t;
shell> rm */*.TRG
4. Start the server and re-create all triggers using the
- triggers.sql file: For example in my case it was:
+ triggers.sql file:
mysql> delimiter // ;
mysql> source /tmp/triggers.sql //
@@ -6832,13 +6536,12 @@ mysql> source /tmp/triggers.sql //
SUPER privilege has changed to a requirement for the TRIGGER
privilege. When upgrading from a previous version of MySQL 5.0
or 5.1 to MySQL 5.1.6 or newer, be sure to update your grant
- tables as described in Section 4.4.8, "mysql_upgrade --- Check
- Tables for MySQL Upgrade." This process assigns the TRIGGER
+ tables by running mysql_upgrade. This will assign the TRIGGER
privilege to all accounts that had the SUPER privilege. If you
fail to update the grant tables, triggers may fail when
- activated. (After updating the grant tables, you can revoke
- the SUPER privilege from those accounts that no longer
- otherwise require it.)
+ activated. After updating the grant tables, you can revoke the
+ SUPER privilege from those accounts that no longer otherwise
+ require it.
* Some keywords are reserved in MySQL 5.1 that were not reserved
in MySQL 5.0. See Section 8.3, "Reserved Words."
@@ -6893,7 +6596,7 @@ mysql> source /tmp/triggers.sql //
the version to which you are downgrading. If so and these
changes affect your table indexes, you will need to rebuild
the affected indexes using the instructions in Section 2.12.4,
- "Rebuilding Tables or Table Indexes."
+ "Rebuilding or Repairing Tables or Indexes."
In most cases, you can move the MySQL format files and data files
between different versions on the same architecture as long as you
@@ -7016,7 +6719,7 @@ mysql> source /tmp/triggers.sql //
an affected character set or collation, either by dropping and
re-creating the indexes, or by dumping and reloading the entire
table. For information about rebuilding indexes, see Section
- 2.12.4, "Rebuilding Tables or Table Indexes."
+ 2.12.4, "Rebuilding or Repairing Tables or Indexes."
To check whether a table has indexes that must be rebuilt, consult
the following list. It indicates which versions of MySQL
@@ -7030,28 +6733,28 @@ mysql> source /tmp/triggers.sql //
example, Bug#29461: http://bugs.mysql.com/29461 was fixed in MySQL
5.0.48, so it applies to upgrades from versions older than 5.0.48
to 5.0.48 or newer, and also to downgrades from 5.0.48 or newer to
- versions older than 5.0.58.
+ versions older than 5.0.48.
If you have tables with indexes that are affected, rebuild the
indexes using the instructions given in Section 2.12.4,
- "Rebuilding Tables or Table Indexes."
+ "Rebuilding or Repairing Tables or Indexes."
- In many cases, you can use CHECK TABLE ... FOR UPDATE to identify
+ In many cases, you can use CHECK TABLE ... FOR UPGRADE to identify
tables for which index rebuilding is required. (It will report:
- Table upgrade required. Please do "REPAIR TABLE `tbl_name`" to fix
- it!) In these cases, you can also use mysqlcheck --check-upgrade
- or mysql_upgrade, which execute CHECK TABLE. However, the use of
- CHECK TABLE applies only after upgrades, not downgrades. Also,
- CHECK TABLE is not applicable to all storage engines. For details
- about which storage engines CHECK TABLE supports, see Section
- 12.5.2.3, "CHECK TABLE Syntax."
+ Table upgrade required. Please do "REPAIR TABLE `tbl_name`" or
+ dump/reload to fix it!) In these cases, you can also use
+ mysqlcheck --check-upgrade or mysql_upgrade, which execute CHECK
+ TABLE. However, the use of CHECK TABLE applies only after
+ upgrades, not downgrades. Also, CHECK TABLE is not applicable to
+ all storage engines. For details about which storage engines CHECK
+ TABLE supports, see Section 12.5.2.3, "CHECK TABLE Syntax."
Changes that cause index rebuilding to be necessary:
* MySQL 5.0.48 (Bug#29461: http://bugs.mysql.com/29461)
Affects indexes for columns that use any of these character
sets: eucjpms, euc_kr, gb2312, latin7, macce, ujis
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.29, 6.0.8 (see
Bug#39585: http://bugs.mysql.com/39585)
@@ -7060,14 +6763,14 @@ mysql> source /tmp/triggers.sql //
columns that contain any of these characters: '`' GRAVE
ACCENT, '[' LEFT SQUARE BRACKET, '\' REVERSE SOLIDUS, ']'
RIGHT SQUARE BRACKET, '~' TILDE
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.29, 6.0.8 (see
Bug#39585: http://bugs.mysql.com/39585)
* MySQL 5.1.21 (Bug#29461: http://bugs.mysql.com/29461)
Affects indexes for columns that use any of these character
sets: eucjpms, euc_kr, gb2312, latin7, macce, ujis
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.29, 6.0.8 (see
Bug#39585: http://bugs.mysql.com/39585)
@@ -7076,7 +6779,7 @@ mysql> source /tmp/triggers.sql //
columns that contain any of these characters: '`' GRAVE
ACCENT, '[' LEFT SQUARE BRACKET, '\' REVERSE SOLIDUS, ']'
RIGHT SQUARE BRACKET, '~' TILDE
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.29, 6.0.8 (see
Bug#39585: http://bugs.mysql.com/39585)
@@ -7084,26 +6787,26 @@ mysql> source /tmp/triggers.sql //
Affects indexes that use the utf8_general_ci or
ucs2_general_ci collation for columns that contain 'ß' LATIN
SMALL LETTER SHARP S (German).
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 5.1.30, 6.0.8 (see
Bug#40053: http://bugs.mysql.com/40053)
* * MySQL 6.0.1 (WL#3664)
Affects indexes that use the latin2_czech_cs collation.
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
- as of MySQL 6.0.9 (see
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
+ as of MySQL 5.4.4, 6.0.9 (see
Bug#40054: http://bugs.mysql.com/40054)
MySQL 6.0.5 (Bug#33452: http://bugs.mysql.com/33452)
Affects indexes that use the latin2_czech_cs collation.
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
- as of MySQL 6.0.9 (see
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
+ as of MySQL 5.4.4, 6.0.9 (see
Bug#40054: http://bugs.mysql.com/40054)
* MySQL 6.0.5 (Bug#27877: http://bugs.mysql.com/27877)
Affects indexes that use the utf8_general_ci or
ucs2_general_ci collation for columns that contain 'ß' LATIN
SMALL LETTER SHARP S (German).
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
as of MySQL 6.0.8 (see
Bug#40053: http://bugs.mysql.com/40053)
@@ -7113,19 +6816,23 @@ mysql> source /tmp/triggers.sql //
big5_chinese_ci: '~' TILDE or '`' GRAVE ACCENT;
cp866_general_ci: j LATIN SMALL LETTER J; gb2312_chinese_ci:
'~' TILDE; gbk_chinese_ci: '~' TILDE
- Affected tables can be detected by CHECK TABLE ... FOR UPDATE
- as of MySQL 6.0.9 (see
+ Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
+ as of MySQL 5.4.4, 6.0.9 (see
Bug#40054: http://bugs.mysql.com/40054)
-2.12.4. Rebuilding Tables or Table Indexes
+2.12.4. Rebuilding or Repairing Tables or Indexes
This section describes how to rebuild a table. This can be
necessitated by changes to MySQL such as how data types are
handled or changes to character set handling. For example, an
error in a collation might have been corrected, necessitating a
table rebuild to rebuild the indexes for character columns that
- use the collation. Methods for rebuilding a table include dumping
- and reloading it, or using ALTER TABLE.
+ use the collation. It might also be that a table repair or upgrade
+ should be done as indicated by a table check operation such as
+ that performed by CHECK TABLE, mysqlcheck, or mysql_upgrade.
+
+ Methods for rebuilding a table include dumping and reloading it,
+ or using ALTER TABLE or REPAIR TABLE.
Note
@@ -7141,16 +6848,6 @@ Note
either before or after upgrading or downgrading. Reloading still
must be done afterward.
- For the examples in this section, suppose that a table t1 is
- defined like this:
-CREATE TABLE t1 (
- c1 VARCHAR(10) CHARACTER SET macce,
- c2 TEXT CHARACTER SET ujis,
- c3 VARCHAR(20) CHARACTER SET latin1,
- PRIMARY KEY (c1),
- INDEX (c2(20))
-);
-
To re-create a table by dumping and reloading it, use mysqldump to
create a dump file and mysql to reload the file:
shell> mysqldump db_name t1 > dump.sql
@@ -7171,8 +6868,22 @@ shell> mysql < dump.sql
For example, if t1 is a MyISAM table, use this statement:
mysql> ALTER TABLE t1 ENGINE = MyISAM;
- If you are not sure which storage engine is used for the table,
- use SHOW CREATE TABLE to display the table definition.
+ If you are not sure which storage engine to specify in the ALTER
+ TABLE statement, use SHOW CREATE TABLE to display the table
+ definition.
+
+ If you must rebuild a table because a table checking operation
+ indicates that the table is corrupt or needs an upgrade, you can
+ use REPAIR TABLE if that statement supports the table's storage
+ engine. For example, to repair a MyISAM table, use this statement:
+mysql> REPAIR TABLE t1;
+
+ For storage engines such as InnoDB that REPAIR TABLE does not
+ support, use mysqldump to create a dump file and mysql to reload
+ the file, as described earlier.
+
+ For specifics about which storage engines REPAIR TABLE supports,
+ see Section 12.5.2.6, "REPAIR TABLE Syntax."
2.12.5. Copying MySQL Databases to Another Machine
@@ -7290,7 +7001,7 @@ Warning
A known issue with binary distributions is that on older Linux
systems that use libc (such as Red Hat 4.x or Slackware), you get
- some (non-fatal) issues with host name resolution. If your system
+ some (nonfatal) issues with host name resolution. If your system
uses libc rather than glibc2, you probably will encounter some
difficulties with host name resolution and getpwnam(). This
happens because glibc (unfortunately) depends on some external
@@ -7362,8 +7073,8 @@ getpwnam: No such file or directory
Note that glibc versions before and including version 2.1.1 have a
fatal bug in pthread_mutex_timedwait() handling, which is used
- when INSERT DELAYED statements are issued. We recommend that you
- not use INSERT DELAYED before upgrading glibc.
+ when INSERT DELAYED statements are issued. Do not use INSERT
+ DELAYED before upgrading glibc.
Note that Linux kernel and the LinuxThread library can by default
handle a maximum of 1,024 threads. If you plan to have more than
@@ -7409,14 +7120,14 @@ getpwnam: No such file or directory
future, so that the commands needed to produce your own build can
be reduced to ./configure; make; make install.
- We recommend that you use these patches to build a special static
- version of libpthread.a and use it only for statically linking
- against MySQL. We know that these patches are safe for MySQL and
- significantly improve its performance, but we cannot say anything
- about their effects on other applications. If you link other
- applications that require LinuxThreads against the patched static
- version of the library, or build a patched shared version and
- install it on your system, you do so at your own risk.
+ If you use these patches to build a special static version of
+ libpthread.a, use it only for statically linking against MySQL. We
+ know that these patches are safe for MySQL and significantly
+ improve its performance, but we cannot say anything about their
+ effects on other applications. If you link other applications that
+ require LinuxThreads against the patched static version of the
+ library, or build a patched shared version and install it on your
+ system, you do so at your own risk.
If you experience any strange problems during the installation of
MySQL, or with some common utilities hanging, it is very likely
@@ -7523,7 +7234,7 @@ open-files-limit=8192
binary or RPM version, you can safely set max_connections at 1500,
assuming no large key buffer or heap tables with lots of data. The
more you reduce STACK_SIZE in LinuxThreads the more threads you
- can safely create. We recommend values between 128KB and 256KB.
+ can safely create. Values between 128KB and 256KB are recommended.
If you use a lot of concurrent connections, you may suffer from a
"feature" in the 2.2 kernel that attempts to prevent fork bomb
@@ -7540,8 +7251,8 @@ open-files-limit=8192
http://dev.mysql.com/Downloads/Patches/linux-fork.patch. We have
done rather extensive testing of this patch on both development
and production systems. It has significantly improved MySQL
- performance without causing any problems and we recommend it to
- our users who still run high-load servers on 2.2 kernels.
+ performance without causing any problems and is recommended for
+ users who still run high-load servers on 2.2 kernels.
This issue has been fixed in the 2.4 kernel, so if you are not
satisfied with the current performance of your system, rather than
@@ -7557,8 +7268,8 @@ open-files-limit=8192
results on a four-CPU system: Virtually no slowdown as the number
of clients was increased up to 1,000, and a 300% scaling factor.
Based on these results, for a high-load SMP server using a 2.2
- kernel, we definitely recommend upgrading to the 2.4 kernel at
- this point.
+ kernel, it is definitely recommended to upgrade to the 2.4 kernel
+ at this point.
We have discovered that it is essential to run the mysqld process
with the highest possible priority on the 2.4 kernel to achieve
@@ -7720,12 +7431,12 @@ CXXFLAGS="-O3 -fno-omit-frame-pointer -f
for processes. If SELinux is enabled (SELINUX in
/etc/selinux/config is set to enforcing, SELINUXTYPE is set to
either targeted or strict), you might encounter problems
- installing MySQL AB RPM packages.
+ installing Sun Microsystems, Inc. RPM packages.
Red Hat has an update that solves this. It involves an update of
the "security policy" specification to handle the install
- structure of the RPMs provided by MySQL AB. For further
- information, see
+ structure of the RPMs provided by Sun Microsystems, Inc. For
+ further information, see
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167551 and
http://rhn.redhat.com/errata/RHBA-2006-0049.html.
@@ -7791,8 +7502,7 @@ CXXFLAGS="-O3 -fno-omit-frame-pointer -f
MySQL.
If this occurs, you must use GNU tar (gtar) to unpack the
- distribution. You can find a precompiled copy for Solaris at
- http://dev.mysql.com/downloads/os-solaris.html.
+ distribution.
Sun native threads work only on Solaris 2.5 and higher. For
Solaris 2.4 and earlier, MySQL automatically uses MIT-pthreads.
@@ -7981,13 +7691,13 @@ In file included from mysql.cc:50:
The solution to this problem is to do one of the following:
- * Configure with CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H
+ 1. Configure with CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H
./configure.
- * Edit /usr/include/widec.h as indicated in the preceding
+ 2. Edit /usr/include/widec.h as indicated in the preceding
discussion and re-run configure.
- * Remove the #define HAVE_TERM line from the config.h file and
+ 3. Remove the #define HAVE_TERM line from the config.h file and
run make again.
If your linker cannot find -lz when linking client programs, the
@@ -8251,11 +7961,11 @@ env CC=gcc CXX=gcc CXXFLAGS=-O3 \
distribution.
There are a couple of small problems when compiling MySQL on
- HP-UX. We recommend that you use gcc instead of the HP-UX native
- compiler, because gcc produces better code.
+ HP-UX. Use gcc instead of the HP-UX native compiler, because gcc
+ produces better code.
- We recommend using gcc 2.95 on HP-UX. Don't use high optimization
- flags (such as -O6) because they may not be safe on HP-UX.
+ Use gcc 2.95 on HP-UX. Don't use high optimization flags (such as
+ -O6) because they may not be safe on HP-UX.
The following configure line should work with gcc 2.95:
CFLAGS="-I/opt/dce/include -fpic" \
@@ -8387,7 +8097,7 @@ export CXXFLAGS=$CFLAGS
assembler that may cause it to generate bad code when used with
gcc.
- We recommend the following configure line with gcc 2.95 on AIX:
+ Use the following configure line with gcc 2.95 on AIX:
CC="gcc -pipe -mcpu=power -Wa,-many" \
CXX="gcc -pipe -mcpu=power -Wa,-many" \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
@@ -8397,8 +8107,8 @@ CXXFLAGS="-felide-constructors -fno-exce
successful. IBM is aware of this problem but is in no hurry to fix
it because of the workaround that is available. We don't know if
the -fno-exceptions is required with gcc 2.95, but because MySQL
- doesn't use exceptions and the option generates faster code, we
- recommend that you should always use it with gcc.
+ doesn't use exceptions and the option generates faster code, you
+ should always use it with gcc.
If you get a problem with assembler code, try changing the
-mcpu=xxx option to match your CPU. Typically power2, power, or
@@ -8465,8 +8175,7 @@ export LDR_CNTRL='MAXDATA=0x80000000'
included with AIX.
As of AIX 4.1, the C compiler has been unbundled from AIX as a
- separate product. We recommend using gcc 3.3.2, which can be
- obtained here:
+ separate product. gcc 3.3.2 can be obtained here:
ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gc
c/
@@ -8753,7 +8462,7 @@ CXX=gcc CXXFLAGS="-D_FILE_OFFSET_BITS=64
are in the opensrc directory. They are available at
ftp://ftp.sco.com/pub/openserver5/opensrc/.
- We recommend using the latest production release of MySQL.
+ Use the latest production release of MySQL.
SCO provides operating system patches at
ftp://ftp.sco.com/pub/openserver5 for OpenServer 5.0.[0-6] and
@@ -8850,7 +8559,7 @@ NMOUNT 0 4
NPROC 0 50 16000
NREGION 0 500 160000
- We recommend setting these values as follows:
+ Set these values as follows:
* NOFILES should be 4096 or 2048.
@@ -8864,10 +8573,10 @@ NREGION 0 500
Then rebuild and reboot the kernel by issuing this command:
# /etc/conf/bin/idbuild -B && init 6
- We recommend tuning the system, but the proper parameter values to
- use depend on the number of users accessing the application or
- database and size the of the database (that is, the used buffer
- pool). The following kernel parameters can be set with idtune:
+ To tune the system, the proper parameter values to use depend on
+ the number of users accessing the application or database and size
+ the of the database (that is, the used buffer pool). The following
+ kernel parameters can be set with idtune:
* SHMMAX (recommended setting: 128MB) and SHMSEG (recommended
setting: 15). These parameters have an influence on the MySQL
@@ -8878,8 +8587,8 @@ NREGION 0 500
* MAXPROC should be set to at least 3000/4000 (depends on number
of users) or more.
- * We also recommend using the following formulas to calculate
- values for SEMMSL, SEMMNS, and SEMMNU:
+ * The following formulas are recommended to calculate values for
+ SEMMSL, SEMMNS, and SEMMNU:
SEMMSL = 13
13 is what has been found to be the best for both Progress and
MySQL.
@@ -9028,16 +8737,16 @@ CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS=
/u95/bin:/bin. If the user wants UnixWare 7 support first, the
path would be /udk/bin:/u95/bin:/bin:.
- We recommend using the latest production release of MySQL. Should
- you choose to use an older release of MySQL on OpenServer 6.0.x,
- you must use a version of MySQL at least as recent as 3.22.13 to
- get fixes for some portability and OS problems.
+ Use the latest production release of MySQL. Should you choose to
+ use an older release of MySQL on OpenServer 6.0.x, you must use a
+ version of MySQL at least as recent as 3.22.13 to get fixes for
+ some portability and OS problems.
MySQL distribution files with names of the following form are tar
archives of media are tar archives of media images suitable for
installation with the SCO Software Manager (/etc/custom) on SCO
OpenServer 6:
-mysql-PRODUCT-5.1.35-sco-osr6-i686.VOLS.tar
+mysql-PRODUCT-5.1.39-sco-osr6-i686.VOLS.tar
A distribution where PRODUCT is pro-cert is the Commercially
licensed MySQL Pro Certified server. A distribution where PRODUCT
@@ -9049,7 +8758,7 @@ mysql-PRODUCT-5.1.35-sco-osr6-i686.VOLS.
example:
shell> mkdir /tmp/mysql-pro
shell> cd /tmp/mysql-pro
-shell> tar xf /tmp/mysql-pro-cert-5.1.35-sco-osr6-i686.VOLS.tar
+shell> tar xf /tmp/mysql-pro-cert-5.1.39-sco-osr6-i686.VOLS.tar
Prior to installation, back up your data in accordance with the
procedures outlined in Section 2.12.1, "Upgrading MySQL."
@@ -9115,9 +8824,8 @@ SVMMLIM 0x9000000 0x100000
HVMMLIM 0x9000000 0x1000000 0x7FFFFFFF
To make changes to the kernel, use the idtune name parameter
- command. idtune modifies the /etc/conf/cf.d/stune file for you. We
- recommend setting the kernel values by executing the following
- commands as root:
+ command. idtune modifies the /etc/conf/cf.d/stune file for you. To
+ set the kernel values, execute the following commands as root:
# /etc/conf/bin/idtune SDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune HDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune SVMMLIM 0x7FFFFFFF
@@ -9128,10 +8836,10 @@ HVMMLIM 0x9000000 0x100000
Then rebuild and reboot the kernel by issuing this command:
# /etc/conf/bin/idbuild -B && init 6
- We recommend tuning the system, but the proper parameter values to
- use depend on the number of users accessing the application or
- database and size the of the database (that is, the used buffer
- pool). The following kernel parameters can be set with idtune:
+ To tune the system, the proper parameter values to use depend on
+ the number of users accessing the application or database and size
+ the of the database (that is, the used buffer pool). The following
+ kernel parameters can be set with idtune:
* SHMMAX (recommended setting: 128MB) and SHMSEG (recommended
setting: 15). These parameters have an influence on the MySQL
@@ -9142,8 +8850,8 @@ HVMMLIM 0x9000000 0x100000
* NPROC should be set to at least 3000/4000 (depends on number
of users).
- * We also recommend using the following formulas to calculate
- values for SEMMSL, SEMMNS, and SEMMNU:
+ * The following formulas are recommended to calculate values for
+ SEMMSL, SEMMNS, and SEMMNU:
SEMMSL = 13
13 is what has been found to be the best for both Progress and
MySQL.
@@ -9158,10 +8866,10 @@ SEMMNU = SEMMNS
2.13.5.10. SCO UnixWare 7.1.x and OpenUNIX 8.0.0 Notes
- We recommend using the latest production release of MySQL. Should
- you choose to use an older release of MySQL on UnixWare 7.1.x, you
- must use a version of MySQL at least as recent as 3.22.13 to get
- fixes for some portability and OS problems.
+ Use the latest production release of MySQL. Should you choose to
+ use an older release of MySQL on UnixWare 7.1.x, you must use a
+ version of MySQL at least as recent as 3.22.13 to get fixes for
+ some portability and OS problems.
We have been able to compile MySQL with the following configure
command on UnixWare 7.1.x:
@@ -9210,9 +8918,8 @@ SVMMLIM 0x9000000 0x100000
HVMMLIM 0x9000000 0x1000000 0x7FFFFFFF
To make changes to the kernel, use the idtune name parameter
- command. idtune modifies the /etc/conf/cf.d/stune file for you. We
- recommend setting the kernel values by executing the following
- commands as root:
+ command. idtune modifies the /etc/conf/cf.d/stune file for you. To
+ set the kernel values, execute the following commands as root:
# /etc/conf/bin/idtune SDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune HDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune SVMMLIM 0x7FFFFFFF
@@ -9223,10 +8930,10 @@ HVMMLIM 0x9000000 0x100000
Then rebuild and reboot the kernel by issuing this command:
# /etc/conf/bin/idbuild -B && init 6
- We recommend tuning the system, but the proper parameter values to
- use depend on the number of users accessing the application or
- database and size the of the database (that is, the used buffer
- pool). The following kernel parameters can be set with idtune:
+ To tune the system, the proper parameter values to use depend on
+ the number of users accessing the application or database and size
+ the of the database (that is, the used buffer pool). The following
+ kernel parameters can be set with idtune:
* SHMMAX (recommended setting: 128MB) and SHMSEG (recommended
setting: 15). These parameters have an influence on the MySQL
@@ -9237,8 +8944,8 @@ HVMMLIM 0x9000000 0x100000
* NPROC should be set to at least 3000/4000 (depends on number
of users).
- * We also recommend using the following formulas to calculate
- values for SEMMSL, SEMMNS, and SEMMNU:
+ * The following formulas are recommended to calculate values for
+ SEMMSL, SEMMNS, and SEMMNU:
SEMMSL = 13
13 is what has been found to be the best for both Progress and
MySQL.
@@ -9264,7 +8971,7 @@ SEMMNU = SEMMNS
In many cases, it is preferable to use an option file instead of
environment variables to modify the behavior of MySQL. See Section
- 4.2.3.2, "Using Option Files."
+ 4.2.3.3, "Using Option Files."
Variable Description
CXX The name of your C++ compiler (for running configure).
CC The name of your C compiler (for running configure).
@@ -9342,7 +9049,7 @@ SEMMNU = SEMMNS
Perl support for MySQL must be installed if you want to run the
MySQL benchmark scripts; see Section 7.1.4, "The MySQL Benchmark
Suite." It is also required for the MySQL Cluster ndb_size.pl
- utility; see Section 17.9.15, "ndb_size.pl --- NDBCLUSTER Size
+ utility; see Section 17.6.21, "ndb_size.pl --- NDBCLUSTER Size
Requirement Estimator."
2.15.1. Installing Perl on Unix
=== modified file 'INSTALL-WIN-SOURCE'
--- a/INSTALL-WIN-SOURCE 2009-05-25 09:59:47 +0000
+++ b/INSTALL-WIN-SOURCE 2009-09-16 12:03:18 +0000
@@ -191,7 +191,7 @@ C:\workdir>win\configure.js WITH_INNOBAS
directory, you need to tell the server their path names. You
can either do this on the command line with the --basedir and
--datadir options, or by placing appropriate options in an
- option file. (See Section 4.2.3.2, "Using Option Files.") If
+ option file. (See Section 4.2.3.3, "Using Option Files.") If
you have an existing data directory elsewhere that you want to
use, you can specify its path name instead.
When the server is running in standalone fashion or as a
@@ -207,7 +207,7 @@ C:\workdir>win\configure.js WITH_INNOBAS
option), and invoke mysql-test-run.pl. For example (using
Cygwin and the bash shell):
shell> cd mysql-test
-shell> export MTS_VS_CONFIG=debug
+shell> export MTR_VS_CONFIG=debug
shell> ./mysql-test-run.pl --force --timer
shell> ./mysql-test-run.pl --force --timer --ps-protocol
=== modified file 'man/comp_err.1'
--- a/man/comp_err.1 2009-05-25 09:59:47 +0000
+++ b/man/comp_err.1 2009-09-16 12:03:18 +0000
@@ -1,137 +1,262 @@
+'\" t
.\" Title: \fBcomp_err\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBCOMP_ERR\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBCOMP_ERR\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" comp_err
.SH "NAME"
comp_err \- compile MySQL error message file
.SH "SYNOPSIS"
-.HP 19
+.HP \w'\fBcomp_err\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBcomp_err [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBcomp_err\fR
creates the
-\fIerrmsg.sys\fR
+errmsg\&.sys
file that is used by
\fBmysqld\fR
-to determine the error messages to display for different error codes.
+to determine the error messages to display for different error codes\&.
\fBcomp_err\fR
-normally is run automatically when MySQL is built. It compiles the
-\fIerrmsg.sys\fR
+normally is run automatically when MySQL is built\&. It compiles the
+errmsg\&.sys
file from the plaintext file located at
-\fIsql/share/errmsg.txt\fR
-in MySQL source distributions.
+sql/share/errmsg\&.txt
+in MySQL source distributions\&.
.PP
\fBcomp_err\fR
also generates
-\fImysqld_error.h\fR,
-\fImysqld_ername.h\fR, and
-\fIsql_state.h\fR
-header files.
+mysqld_error\&.h,
+mysqld_ername\&.h, and
+sql_state\&.h
+header files\&.
.PP
-For more information about how error messages are defined, see the MySQL Internals Manual.
+For more information about how error messages are defined, see the MySQL Internals Manual\&.
.PP
Invoke
\fBcomp_err\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcomp_err [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBcomp_err\fR
-understands the options described in the following list.
-.TP 3n
-\(bu
+supports the options described in the following list\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: help option
+.\" help option: comp_err
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: charset option
+.\" charset option: comp_err
\fB\-\-charset=\fR\fB\fIpath\fR\fR\fB, \-C \fR\fB\fIpath\fR\fR
.sp
-The character set directory. The default is
-\fI../sql/share/charsets\fR.
-.TP 3n
-\(bu
+The character set directory\&. The default is
+\&.\&./sql/share/charsets\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: debug option
+.\" debug option: comp_err
\fB\-\-debug=\fR\fB\fIdebug_options\fR\fR\fB, \-# \fR\fB\fIdebug_options\fR\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:O,\fIfile_name\fR'. The default is
-\'d:t:O,/tmp/comp_err.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:O,\fIfile_name\fR\'\&. The default is
+\'d:t:O,/tmp/comp_err\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: debug-info option
+.\" debug-info option: comp_err
\fB\-\-debug\-info\fR,
\fB\-T\fR
.sp
-Print some debugging information when the program exits.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: header_file option
+.\" header_file option: comp_err
\fB\-\-header_file=\fR\fB\fIfile_name\fR\fR\fB, \-H \fR\fB\fIfile_name\fR\fR
.sp
-The name of the error header file. The default is
-\fImysqld_error.h\fR.
-.TP 3n
-\(bu
+The name of the error header file\&. The default is
+mysqld_error\&.h\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: in_file option
+.\" in_file option: comp_err
\fB\-\-in_file=\fR\fB\fIfile_name\fR\fR\fB, \-F \fR\fB\fIfile_name\fR\fR
.sp
-The name of the input file. The default is
-\fI../sql/share/errmsg.txt\fR.
-.TP 3n
-\(bu
+The name of the input file\&. The default is
+\&.\&./sql/share/errmsg\&.txt\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: name_file option
+.\" name_file option: comp_err
\fB\-\-name_file=\fR\fB\fIfile_name\fR\fR\fB, \-N \fR\fB\fIfile_name\fR\fR
.sp
-The name of the error name file. The default is
-\fImysqld_ername.h\fR.
-.TP 3n
-\(bu
+The name of the error name file\&. The default is
+mysqld_ername\&.h\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: out_dir option
+.\" out_dir option: comp_err
\fB\-\-out_dir=\fR\fB\fIpath\fR\fR\fB, \-D \fR\fB\fIpath\fR\fR
.sp
-The name of the output base directory. The default is
-\fI../sql/share/\fR.
-.TP 3n
-\(bu
+The name of the output base directory\&. The default is
+\&.\&./sql/share/\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: out_file option
+.\" out_file option: comp_err
\fB\-\-out_file=\fR\fB\fIfile_name\fR\fR\fB, \-O \fR\fB\fIfile_name\fR\fR
.sp
-The name of the output file. The default is
-\fIerrmsg.sys\fR.
-.TP 3n
-\(bu
+The name of the output file\&. The default is
+errmsg\&.sys\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: statefile option
+.\" statefile option: comp_err
\fB\-\-statefile=\fR\fB\fIfile_name\fR\fR\fB, \-S \fR\fB\fIfile_name\fR\fR
.sp
-The name for the SQLSTATE header file. The default is
-\fIsql_state.h\fR.
-.TP 3n
-\(bu
+The name for the SQLSTATE header file\&. The default is
+sql_state\&.h\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" comp_err: version option
+.\" version option: comp_err
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/innochecksum.1'
--- a/man/innochecksum.1 2009-05-25 09:59:47 +0000
+++ b/man/innochecksum.1 2009-09-16 12:03:18 +0000
@@ -1,81 +1,144 @@
+'\" t
.\" Title: \fBinnochecksum\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBINNOCHECKSUM\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBINNOCHECKSUM\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" innochecksum
.SH "NAME"
innochecksum \- offline InnoDB file checksum utility
.SH "SYNOPSIS"
-.HP 33
+.HP \w'\fBinnochecksum\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIfile_name\fR\fR\ 'u
\fBinnochecksum [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR
.SH "DESCRIPTION"
.PP
\fBinnochecksum\fR
prints checksums for
InnoDB
-files.
+files\&.
.PP
Invoke
\fBinnochecksum\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBinnochecksum [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBinnochecksum\fR
-understands the options described in the following list. For options that refer to page numbers, the numbers are zero\-based.
-.TP 3n
-\(bu
+supports the options described in the following list\&. For options that refer to page numbers, the numbers are zero\-based\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-c\fR
.sp
-Print a count of the number of pages in the file.
-.TP 3n
-\(bu
+Print a count of the number of pages in the file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-d\fR
.sp
-Debug mode; prints checksums for each page.
-.TP 3n
-\(bu
+Debug mode; prints checksums for each page\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-e \fR\fB\fInum\fR\fR
.sp
-End at this page number.
-.TP 3n
-\(bu
+End at this page number\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-p \fR\fB\fInum\fR\fR
.sp
-Check only this page number.
-.TP 3n
-\(bu
+Check only this page number\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-s \fR\fB\fInum\fR\fR
.sp
-Start at this page number.
-.TP 3n
-\(bu
+Start at this page number\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-v\fR
.sp
-Verbose mode; print a progress indicator every five seconds.
+Verbose mode; print a progress indicator every five seconds\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/make_win_bin_dist.1'
--- a/man/make_win_bin_dist.1 2009-05-25 09:59:47 +0000
+++ b/man/make_win_bin_dist.1 2009-09-16 12:03:18 +0000
@@ -1,106 +1,185 @@
+'\" t
.\" Title: \fBmake_win_bin_dist\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMAKE_WIN_BIN_DIST" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMAKE_WIN_BIN_DIST" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" make_win_bin_dist
.SH "NAME"
make_win_bin_dist \- package MySQL distribution as ZIP archive
.SH "SYNOPSIS"
-.HP 60
-\fBmake_win_bin_dist [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpackage_basename\fR\fR\fB [\fR\fB\fIcopy_def\fR\fR\fB ...]\fR
+.HP \w'\fBmake_win_bin_dist\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIpackage_basename\fR\fR\fB\ [\fR\fB\fIcopy_def\fR\fR\fB\ \&.\&.\&.]\fR\ 'u
+\fBmake_win_bin_dist [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpackage_basename\fR\fR\fB [\fR\fB\fIcopy_def\fR\fR\fB \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
-This script is used on Windows after building a MySQL distribution from source to create executable programs. It packages the binaries and support files into a ZIP archive that can be unpacked at the location where you want to install MySQL.
+This script is used on Windows after building a MySQL distribution from source to create executable programs\&. It packages the binaries and support files into a ZIP archive that can be unpacked at the location where you want to install MySQL\&.
.PP
\fBmake_win_bin_dist\fR
-is a shell script, so you must have Cygwin installed to use it.
+is a shell script, so you must have Cygwin installed to use it\&.
.PP
-This program's use is subject to change. Currently, you invoke it as follows from the root directory of your source distribution:
+This program\'s use is subject to change\&. Currently, you invoke it as follows from the root directory of your source distribution:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmake_win_bin_dist [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpackage_basename\fR\fR\fB [\fR\fB\fIcopy_def\fR\fR\fB ...]\fR
+shell> \fBmake_win_bin_dist [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpackage_basename\fR\fR\fB [\fR\fB\fIcopy_def\fR\fR\fB \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fIpackage_basename\fR
-argument provides the basename for the resulting ZIP archive. This name will be the name of the directory that results from unpacking the archive.
+argument provides the basename for the resulting ZIP archive\&. This name will be the name of the directory that results from unpacking the archive\&.
.PP
Because you might want to include files of directories from other builds, you can instruct this script do copy them in for you, via
\fIcopy_def\fR
arguments, which of which is of the form
-\fIrelative_dest_name\fR=\fIsource_name\fR.
+\fIrelative_dest_name\fR=\fIsource_name\fR\&.
.PP
Example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-bin/mysqld\-max.exe=../my\-max\-build/sql/release/mysqld.exe
+bin/mysqld\-max\&.exe=\&.\&./my\-max\-build/sql/release/mysqld\&.exe
.fi
+.if n \{\
.RE
+.\}
.PP
-If you specify a directory, the entire directory will be copied.
+If you specify a directory, the entire directory will be copied\&.
.PP
\fBmake_win_bin_dist\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: debug option
+.\" debug option: make_win_bin_dist
\fB\-\-debug\fR
.sp
-Pack the debug binaries and produce an error if they were not built.
-.TP 3n
-\(bu
+Pack the debug binaries and produce an error if they were not built\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: embedded option
+.\" embedded option: make_win_bin_dist
\fB\-\-embedded\fR
.sp
-Pack the embedded server and produce an error if it was not built. The default is to pack it if it was built.
-.TP 3n
-\(bu
+Pack the embedded server and produce an error if it was not built\&. The default is to pack it if it was built\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: exe-suffix option
+.\" exe-suffix option: make_win_bin_dist
\fB\-\-exe\-suffix=\fR\fB\fIsuffix\fR\fR
.sp
Add a suffix to the basename of the
\fBmysql\fR
-binary. For example, a suffix of
+binary\&. For example, a suffix of
\-abc
produces a binary named
-\fBmysqld\-abc.exe\fR.
-.TP 3n
-\(bu
+\fBmysqld\-abc\&.exe\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: no-debug option
+.\" no-debug option: make_win_bin_dist
\fB\-\-no\-debug\fR
.sp
-Don't pack the debug binaries even if they were built.
-.TP 3n
-\(bu
+Do not pack the debug binaries even if they were built\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: no-embedded option
+.\" no-embedded option: make_win_bin_dist
\fB\-\-no\-embedded\fR
.sp
-Don't pack the embedded server even if it was built.
-.TP 3n
-\(bu
+Do not pack the embedded server even if it was built\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" make_win_bin_dist: only-debug option
+.\" only-debug option: make_win_bin_dist
\fB\-\-only\-debug\fR
.sp
Use this option when the target for this build was
Debug, and you just want to replace the normal binaries with debug versions (that is, do not use separate
-\fIdebug\fR
-directories).
+debug
+directories)\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/msql2mysql.1'
--- a/man/msql2mysql.1 2009-05-25 09:59:47 +0000
+++ b/man/msql2mysql.1 2009-09-16 12:03:18 +0000
@@ -1,61 +1,76 @@
+'\" t
.\" Title: \fBmsql2mysql\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMSQL2MYSQL\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMSQL2MYSQL\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" msql2mysql
.SH "NAME"
msql2mysql \- convert mSQL programs for use with MySQL
.SH "SYNOPSIS"
-.HP 28
-\fBmsql2mysql\fR\fB\fIC\-source\-file\fR\fR\fB ...\fR
+.HP \w'\fBmsql2mysql\fR\fB\fIC\-source\-file\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmsql2mysql\fR\fB\fIC\-source\-file\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
-Initially, the MySQL C API was developed to be very similar to that for the mSQL database system. Because of this, mSQL programs often can be converted relatively easily for use with MySQL by changing the names of the C API functions.
+Initially, the MySQL C API was developed to be very similar to that for the mSQL database system\&. Because of this, mSQL programs often can be converted relatively easily for use with MySQL by changing the names of the C API functions\&.
.PP
The
\fBmsql2mysql\fR
-utility performs the conversion of mSQL C API function calls to their MySQL equivalents.
+utility performs the conversion of mSQL C API function calls to their MySQL equivalents\&.
\fBmsql2mysql\fR
-converts the input file in place, so make a copy of the original before converting it. For example, use
+converts the input file in place, so make a copy of the original before converting it\&. For example, use
\fBmsql2mysql\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBcp client\-prog.c client\-prog.c.orig\fR
-shell> \fBmsql2mysql client\-prog.c\fR
-client\-prog.c converted
+shell> \fBcp client\-prog\&.c client\-prog\&.c\&.orig\fR
+shell> \fBmsql2mysql client\-prog\&.c\fR
+client\-prog\&.c converted
.fi
+.if n \{\
.RE
+.\}
.PP
Then examine
-\fIclient\-prog.c\fR
-and make any post\-conversion revisions that may be necessary.
+client\-prog\&.c
+and make any post\-conversion revisions that may be necessary\&.
.PP
\fBmsql2mysql\fR
uses the
\fBreplace\fR
-utility to make the function name substitutions. See
-\fBreplace\fR(1).
+utility to make the function name substitutions\&. See
+\fBreplace\fR(1)\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/my_print_defaults.1'
--- a/man/my_print_defaults.1 2009-05-25 09:59:47 +0000
+++ b/man/my_print_defaults.1 2009-09-16 12:03:18 +0000
@@ -1,111 +1,210 @@
+'\" t
.\" Title: \fBmy_print_defaults\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMY_PRINT_DEFAULTS" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMY_PRINT_DEFAULTS" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" my_print_defaults
.SH "NAME"
my_print_defaults \- display options from option files
.SH "SYNOPSIS"
-.HP 45
-\fBmy_print_defaults [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIoption_group\fR\fR\fB ...\fR
+.HP \w'\fBmy_print_defaults\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIoption_group\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmy_print_defaults [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIoption_group\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
\fBmy_print_defaults\fR
-displays the options that are present in option groups of option files. The output indicates what options will be used by programs that read the specified option groups. For example, the
+displays the options that are present in option groups of option files\&. The output indicates what options will be used by programs that read the specified option groups\&. For example, the
\fBmysqlcheck\fR
program reads the
[mysqlcheck]
and
[client]
-option groups. To see what options are present in those groups in the standard option files, invoke
+option groups\&. To see what options are present in those groups in the standard option files, invoke
\fBmy_print_defaults\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmy_print_defaults mysqlcheck client\fR
\-\-user=myusername
\-\-password=secret
\-\-host=localhost
.fi
+.if n \{\
.RE
+.\}
.PP
-The output consists of options, one per line, in the form that they would be specified on the command line.
+The output consists of options, one per line, in the form that they would be specified on the command line\&.
.PP
\fBmy_print_defaults\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: help option
+.\" help option: my_print_defaults
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: config-file option
+.\" config-file option: my_print_defaults
\fB\-\-config\-file=\fR\fB\fIfile_name\fR\fR,
+.\" my_print_defaults: defaults-file option
+.\" defaults-file option: my_print_defaults
\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-c \fR\fB\fIfile_name\fR\fR
.sp
-Read only the given option file.
-.TP 3n
-\(bu
+Read only the given option file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: debug option
+.\" debug option: my_print_defaults
\fB\-\-debug=\fR\fB\fIdebug_options\fR\fR\fB, \-# \fR\fB\fIdebug_options\fR\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'. The default is
-\'d:t:o,/tmp/my_print_defaults.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/my_print_defaults\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: defaults-extra-file option
+.\" defaults-extra-file option: my_print_defaults
\fB\-\-defaults\-extra\-file=\fR\fB\fIfile_name\fR\fR,
+.\" my_print_defaults: extra-file option
+.\" extra-file option: my_print_defaults
\fB\-\-extra\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-e \fR\fB\fIfile_name\fR\fR
.sp
-Read this option file after the global option file but (on Unix) before the user option file.
-.TP 3n
-\(bu
+Read this option file after the global option file but (on Unix) before the user option file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: defaults-group-suffix option
+.\" defaults-group-suffix option: my_print_defaults
\fB\-\-defaults\-group\-suffix=\fR\fB\fIsuffix\fR\fR,
\fB\-g \fR\fB\fIsuffix\fR\fR
.sp
-In addition to the groups named on the command line, read groups that have the given suffix.
-.TP 3n
-\(bu
+In addition to the groups named on the command line, read groups that have the given suffix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: no-defaults option
+.\" no-defaults option: my_print_defaults
\fB\-\-no\-defaults\fR,
\fB\-n\fR
.sp
-Return an empty string.
-.TP 3n
-\(bu
+Return an empty string\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: verbose option
+.\" verbose option: my_print_defaults
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" my_print_defaults: version option
+.\" version option: my_print_defaults
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/myisam_ftdump.1'
--- a/man/myisam_ftdump.1 2009-05-25 09:59:47 +0000
+++ b/man/myisam_ftdump.1 2009-09-16 12:03:18 +0000
@@ -1,19 +1,28 @@
+'\" t
.\" Title: \fBmyisam_ftdump\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYISAM_FTDUMP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYISAM_FTDUMP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" myisam_ftdump
.SH "NAME"
myisam_ftdump \- display full\-text index information
.SH "SYNOPSIS"
-.HP 43
+.HP \w'\fBmyisam_ftdump\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fItbl_name\fR\fR\fB\ \fR\fB\fIindex_num\fR\fR\ 'u
\fBmyisam_ftdump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \fR\fB\fIindex_num\fR\fR
.SH "DESCRIPTION"
.PP
@@ -22,7 +31,7 @@ displays information about
FULLTEXT
indexes in
MyISAM
-tables. It reads the
+tables\&. It reads the
MyISAM
index file directly, so it must be run on the server host where the table is located
.PP
@@ -30,21 +39,25 @@ Invoke
\fBmyisam_ftdump\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmyisam_ftdump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \fR\fB\fIindex_num\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fItbl_name\fR
argument should be the name of a
MyISAM
-table. You can also specify a table by naming its index file (the file with the
-\fI.MYI\fR
-suffix). If you do not invoke
+table\&. You can also specify a table by naming its index file (the file with the
+\&.MYI
+suffix)\&. If you do not invoke
\fBmyisam_ftdump\fR
-in the directory where the table files are located, the table or index file name must be preceded by the path name to the table's database directory. Index numbers begin with 0.
+in the directory where the table files are located, the table or index file name must be preceded by the path name to the table\'s database directory\&. Index numbers begin with 0\&.
.PP
Example: Suppose that the
test
@@ -52,7 +65,9 @@ database contains a table named
mytexttablel
that has the following definition:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
CREATE TABLE mytexttable
(
@@ -62,7 +77,9 @@ CREATE TABLE mytexttable
FULLTEXT (txt)
);
.fi
+.if n \{\
.RE
+.\}
.PP
The index on
id
@@ -70,82 +87,152 @@ is index 0 and the
FULLTEXT
index on
txt
-is index 1. If your working directory is the
+is index 1\&. If your working directory is the
test
database directory, invoke
\fBmyisam_ftdump\fR
as follows:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmyisam_ftdump mytexttable 1\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If the path name to the
test
database directory is
-\fI/usr/local/mysql/data/test\fR, you can also specify the table name argument using that path name. This is useful if you do not invoke
+/usr/local/mysql/data/test, you can also specify the table name argument using that path name\&. This is useful if you do not invoke
\fBmyisam_ftdump\fR
in the database directory:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmyisam_ftdump /usr/local/mysql/data/test/mytexttable 1\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmyisam_ftdump\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: help option
+.\" help option: myisam_ftdump
\fB\-\-help\fR,
\fB\-h\fR
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: count option
+.\" count option: myisam_ftdump
\fB\-\-count\fR,
\fB\-c\fR
.sp
-Calculate per\-word statistics (counts and global weights).
-.TP 3n
-\(bu
+Calculate per\-word statistics (counts and global weights)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: dump option
+.\" dump option: myisam_ftdump
\fB\-\-dump\fR,
\fB\-d\fR
.sp
-Dump the index, including data offsets and word weights.
-.TP 3n
-\(bu
+Dump the index, including data offsets and word weights\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: length option
+.\" length option: myisam_ftdump
\fB\-\-length\fR,
\fB\-l\fR
.sp
-Report the length distribution.
-.TP 3n
-\(bu
+Report the length distribution\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: stats option
+.\" stats option: myisam_ftdump
\fB\-\-stats\fR,
\fB\-s\fR
.sp
-Report global index statistics. This is the default operation if no other operation is specified.
-.TP 3n
-\(bu
+Report global index statistics\&. This is the default operation if no other operation is specified\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisam_ftdump: verbose option
+.\" verbose option: myisam_ftdump
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more output about what the program does.
+Verbose mode\&. Print more output about what the program does\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/myisamchk.1'
--- a/man/myisamchk.1 2009-05-25 09:59:47 +0000
+++ b/man/myisamchk.1 2009-09-16 12:03:18 +0000
@@ -1,246 +1,381 @@
+'\" t
.\" Title: \fBmyisamchk\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYISAMCHK\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYISAMCHK\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" myisamchk
.SH "NAME"
myisamchk \- MyISAM table\-maintenance utility
.SH "SYNOPSIS"
-.HP 33
-\fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB ...\fR
+.HP \w'\fBmyisamchk\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fItbl_name\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBmyisamchk\fR
-utility gets information about your database tables or checks, repairs, or optimizes them.
+utility gets information about your database tables or checks, repairs, or optimizes them\&.
\fBmyisamchk\fR
works with
MyISAM
tables (tables that have
-\fI.MYD\fR
+\&.MYD
and
-\fI.MYI\fR
-files for storing data and indexes).
+\&.MYI
+files for storing data and indexes)\&.
.PP
The use of
\fBmyisamchk\fR
-with partitioned tables is not supported.
+with partitioned tables is not supported\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBCaution\fR
+.ps -1
+.br
.PP
-It is best to make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss. Possible causes include but are not limited to file system errors.
+It is best to make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss\&. Possible causes include but are not limited to file system errors\&.
+.sp .5v
+.RE
.PP
Invoke
\fBmyisamchk\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB ...\fR
+shell> \fBmyisamchk [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fIoptions\fR
specify what you want
\fBmyisamchk\fR
-to do. They are described in the following sections. You can also get a list of options by invoking
-\fBmyisamchk \-\-help\fR.
+to do\&. They are described in the following sections\&. You can also get a list of options by invoking
+\fBmyisamchk \-\-help\fR\&.
.PP
With no options,
\fBmyisamchk\fR
-simply checks your table as the default operation. To get more information or to tell
+simply checks your table as the default operation\&. To get more information or to tell
\fBmyisamchk\fR
-to take corrective action, specify options as described in the following discussion.
+to take corrective action, specify options as described in the following discussion\&.
.PP
\fItbl_name\fR
-is the database table you want to check or repair. If you run
+is the database table you want to check or repair\&. If you run
\fBmyisamchk\fR
somewhere other than in the database directory, you must specify the path to the database directory, because
\fBmyisamchk\fR
-has no idea where the database is located. In fact,
+has no idea where the database is located\&. In fact,
\fBmyisamchk\fR
-does not actually care whether the files you are working on are located in a database directory. You can copy the files that correspond to a database table into some other location and perform recovery operations on them there.
+does not actually care whether the files you are working on are located in a database directory\&. You can copy the files that correspond to a database table into some other location and perform recovery operations on them there\&.
.PP
You can name several tables on the
\fBmyisamchk\fR
-command line if you wish. You can also specify a table by naming its index file (the file with the
-\fI.MYI\fR
-suffix). This allows you to specify all tables in a directory by using the pattern
-\fI*.MYI\fR. For example, if you are in a database directory, you can check all the
+command line if you wish\&. You can also specify a table by naming its index file (the file with the
+\&.MYI
+suffix)\&. This allows you to specify all tables in a directory by using the pattern
+*\&.MYI\&. For example, if you are in a database directory, you can check all the
MyISAM
tables in that directory like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk *.MYI\fR
+shell> \fBmyisamchk *\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you are not in the database directory, you can check all the tables there by specifying the path to the directory:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \fR\fB\fI/path/to/database_dir/\fR\fR\fB*.MYI\fR
+shell> \fBmyisamchk \fR\fB\fI/path/to/database_dir/\fR\fR\fB*\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
You can even check all tables in all databases by specifying a wildcard with the path to the MySQL data directory:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The recommended way to quickly check all
MyISAM
tables is:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-\-silent \-\-fast \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \-\-silent \-\-fast \fR\fB\fI/path/to/datadir/*/*\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you want to check all
MyISAM
tables and repair any that are corrupted, you can use the following command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-\-silent \-\-force \-\-fast \-\-update\-state \\\fR
- \fB\-\-key_buffer_size=64M \-\-sort_buffer_size=64M \\\fR
- \fB\-\-read_buffer_size=1M \-\-write_buffer_size=1M \\\fR
- \fB\fI/path/to/datadir/*/*\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \-\-silent \-\-force \-\-fast \-\-update\-state \e\fR
+ \fB\-\-key_buffer_size=64M \-\-sort_buffer_size=64M \e\fR
+ \fB\-\-read_buffer_size=1M \-\-write_buffer_size=1M \e\fR
+ \fB\fI/path/to/datadir/*/*\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-This command assumes that you have more than 64MB free. For more information about memory allocation with
+This command assumes that you have more than 64MB free\&. For more information about memory allocation with
\fBmyisamchk\fR, see
-the section called \(lq\fBMYISAMCHK\fR MEMORY USAGE\(rq.
+the section called \(lqMYISAMCHK MEMORY USAGE\(rq\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-\fIYou must ensure that no other program is using the tables while you are running \fR\fI\fBmyisamchk\fR\fR. The most effective means of doing so is to shut down the MySQL server while running
+\fIYou must ensure that no other program is using the tables while you are running \fR\fI\fBmyisamchk\fR\fR\&. The most effective means of doing so is to shut down the MySQL server while running
\fBmyisamchk\fR, or to lock all tables that
\fBmyisamchk\fR
-is being used on.
+is being used on\&.
.PP
Otherwise, when you run
\fBmyisamchk\fR, it may display the following error message:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-warning: clients are using or haven't closed the table properly
+warning: clients are using or haven\'t closed the table properly
.fi
+.if n \{\
.RE
+.\}
.PP
This means that you are trying to check a table that has been updated by another program (such as the
\fBmysqld\fR
-server) that hasn't yet closed the file or that has died without closing the file properly, which can sometimes lead to the corruption of one or more
+server) that hasn\'t yet closed the file or that has died without closing the file properly, which can sometimes lead to the corruption of one or more
MyISAM
-tables.
+tables\&.
.PP
If
\fBmysqld\fR
is running, you must force it to flush any table modifications that are still buffered in memory by using
-FLUSH TABLES. You should then ensure that no one is using the tables while you are running
+FLUSH TABLES\&. You should then ensure that no one is using the tables while you are running
\fBmyisamchk\fR
.PP
However, the easiest way to avoid this problem is to use
CHECK TABLE
instead of
\fBmyisamchk\fR
-to check tables. See
-Section\ 12.5.2.3, \(lqCHECK TABLE Syntax\(rq.
+to check tables\&. See
+Section\ \&12.5.2.3, \(lqCHECK TABLE Syntax\(rq\&.
+.sp .5v
+.RE
.PP
-A complete listing of all the
\fBmyisamchk\fR
-options follows.
-.SH "\fBMYISAMCHK\fR GENERAL OPTIONS"
+supports the options in the following table\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.SH "MYISAMCHK GENERAL OPTIONS"
+.\" options: myisamchk
+.\" myisamchk: options
.PP
The options described in this section can be used for any type of table maintenance operation performed by
-\fBmyisamchk\fR. The sections following this one describe options that pertain only to specific operations, such as table checking or repairing.
-.TP 3n
-\(bu
+\fBmyisamchk\fR\&. The sections following this one describe options that pertain only to specific operations, such as table checking or repairing\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: help option
+.\" help option: myisamchk
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit. Options are grouped by type of operation.
-.TP 3n
-\(bu
+Display a help message and exit\&. Options are grouped by type of operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: HELP option
+.\" HELP option: myisamchk
\fB\-\-HELP\fR,
\fB\-H\fR
.sp
-Display a help message and exit. Options are presented in a single list.
-.TP 3n
-\(bu
+Display a help message and exit\&. Options are presented in a single list\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: debug option
+.\" debug option: myisamchk
\fB\-\-debug=\fR\fB\fIdebug_options\fR\fR\fB, \-# \fR\fB\fIdebug_options\fR\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/myisamchk\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: silent option
+.\" silent option: myisamchk
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Write output only when errors occur. You can use
+Silent mode\&. Write output only when errors occur\&. You can use
\fB\-s\fR
twice (\fB\-ss\fR) to make
\fBmyisamchk\fR
-very silent.
-.TP 3n
-\(bu
+very silent\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: verbose option
+.\" verbose option: myisamchk
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does. This can be used with
+Verbose mode\&. Print more information about what the program does\&. This can be used with
\fB\-d\fR
and
-\fB\-e\fR. Use
+\fB\-e\fR\&. Use
\fB\-v\fR
multiple times (\fB\-vv\fR,
-\fB\-vvv\fR) for even more output.
-.TP 3n
-\(bu
+\fB\-vvv\fR) for even more output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: version option
+.\" version option: myisamchk
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: wait option
+.\" wait option: myisamchk
\fB\-\-wait\fR,
\fB\-w\fR
.sp
-Instead of terminating with an error if the table is locked, wait until the table is unlocked before continuing. If you are running
+Instead of terminating with an error if the table is locked, wait until the table is unlocked before continuing\&. If you are running
\fBmysqld\fR
with external locking disabled, the table can be locked only by another
\fBmyisamchk\fR
-command.
-.sp
+command\&.
.RE
.PP
You can also set the following variables by using
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
syntax:
+.\" decode_bits myisamchk variable
+.\" ft_max_word_len myisamchk variable
+.\" ft_min_word_len myisamchk variable
+.\" ft_stopword_file myisamchk variable
+.\" key_buffer_size myisamchk variable
+.\" myisam_block_size myisamchk variable
+.\" read_buffer_size myisamchk variable
+.\" sort_buffer_size myisamchk variable
+.\" sort_key_blocks myisamchk variable
+.\" stats_method myisamchk variable
+.\" write_buffer_size myisamchk variable
.TS
allbox tab(:);
l l
@@ -261,21 +396,6 @@ T}:T{
\fBDefault Value\fR
T}
T{
-sort_key_blocks
-T}:T{
-16
-T}
-T{
-stats_method
-T}:T{
-nulls_unequal
-T}
-T{
-write_buffer_size
-T}:T{
-262136
-T}
-T{
decode_bits
T}:T{
9
@@ -315,8 +435,23 @@ sort_buffer_size
T}:T{
2097144
T}
+T{
+sort_key_blocks
+T}:T{
+16
+T}
+T{
+stats_method
+T}:T{
+nulls_unequal
+T}
+T{
+write_buffer_size
+T}:T{
+262136
+T}
.TE
-.sp
+.sp 1
.PP
The possible
\fBmyisamchk\fR
@@ -325,98 +460,116 @@ variables and their default values can b
.PP
sort_buffer_size
is used when the keys are repaired by sorting keys, which is the normal case when you use
-\fB\-\-recover\fR.
+\fB\-\-recover\fR\&.
.PP
key_buffer_size
is used when you are checking the table with
\fB\-\-extend\-check\fR
-or when the keys are repaired by inserting keys row by row into the table (like when doing normal inserts). Repairing through the key buffer is used in the following cases:
-.TP 3n
-\(bu
+or when the keys are repaired by inserting keys row by row into the table (like when doing normal inserts)\&. Repairing through the key buffer is used in the following cases:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You use
-\fB\-\-safe\-recover\fR.
-.TP 3n
-\(bu
-The temporary files needed to sort the keys would be more than twice as big as when creating the key file directly. This is often the case when you have large key values for
+\fB\-\-safe\-recover\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+The temporary files needed to sort the keys would be more than twice as big as when creating the key file directly\&. This is often the case when you have large key values for
CHAR,
VARCHAR, or
TEXT
-columns, because the sort operation needs to store the complete key values as it proceeds. If you have lots of temporary space and you can force
+columns, because the sort operation needs to store the complete key values as it proceeds\&. If you have lots of temporary space and you can force
\fBmyisamchk\fR
to repair by sorting, you can use the
\fB\-\-sort\-recover\fR
-option.
-.sp
+option\&.
.RE
.PP
-Repairing through the key buffer takes much less disk space than using sorting, but is also much slower.
+Repairing through the key buffer takes much less disk space than using sorting, but is also much slower\&.
.PP
If you want a faster repair, set the
key_buffer_size
and
sort_buffer_size
-variables to about 25% of your available memory. You can set both variables to large values, because only one of them is used at a time.
+variables to about 25% of your available memory\&. You can set both variables to large values, because only one of them is used at a time\&.
.PP
myisam_block_size
-is the size used for index blocks.
+is the size used for index blocks\&.
.PP
stats_method
influences how
NULL
values are treated for index statistics collection when the
\fB\-\-analyze\fR
-option is given. It acts like the
+option is given\&. It acts like the
myisam_stats_method
-system variable. For more information, see the description of
+system variable\&. For more information, see the description of
myisam_stats_method
in
-Section\ 5.1.3, \(lqServer System Variables\(rq, and
-Section\ 7.4.7, \(lqMyISAM Index Statistics Collection\(rq. For MySQL 5.1,
+Section\ \&5.1.4, \(lqServer System Variables\(rq, and
+Section\ \&7.4.6, \(lqMyISAM Index Statistics Collection\(rq\&. For MySQL 5\&.1,
stats_method
-was added in MySQL 5.0.14. For older versions, the statistics collection method is equivalent to
-nulls_equal.
+was added in MySQL 5\&.0\&.14\&. For older versions, the statistics collection method is equivalent to
+nulls_equal\&.
.PP
The
ft_min_word_len
and
ft_max_word_len
-variables are available as of MySQL 4.0.0.
+variables are available as of MySQL 4\&.0\&.0\&.
ft_stopword_file
-is available as of MySQL 4.0.19.
+is available as of MySQL 4\&.0\&.19\&.
.PP
ft_min_word_len
and
ft_max_word_len
indicate the minimum and maximum word length for
FULLTEXT
-indexes.
+indexes\&.
ft_stopword_file
-names the stopword file. These need to be set under the following circumstances.
+names the stopword file\&. These need to be set under the following circumstances\&.
.PP
If you use
\fBmyisamchk\fR
to perform an operation that modifies table indexes (such as repair or analyze), the
FULLTEXT
-indexes are rebuilt using the default full\-text parameter values for minimum and maximum word length and the stopword file unless you specify otherwise. This can result in queries failing.
+indexes are rebuilt using the default full\-text parameter values for minimum and maximum word length and the stopword file unless you specify otherwise\&. This can result in queries failing\&.
.PP
-The problem occurs because these parameters are known only by the server. They are not stored in
+The problem occurs because these parameters are known only by the server\&. They are not stored in
MyISAM
-index files. To avoid the problem if you have modified the minimum or maximum word length or the stopword file in the server, specify the same
+index files\&. To avoid the problem if you have modified the minimum or maximum word length or the stopword file in the server, specify the same
ft_min_word_len,
ft_max_word_len, and
ft_stopword_file
values to
\fBmyisamchk\fR
that you use for
-\fBmysqld\fR. For example, if you have set the minimum word length to 3, you can repair a table with
+\fBmysqld\fR\&. For example, if you have set the minimum word length to 3, you can repair a table with
\fBmyisamchk\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-\-recover \-\-ft_min_word_len=3 \fR\fB\fItbl_name\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \-\-recover \-\-ft_min_word_len=3 \fR\fB\fItbl_name\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
To ensure that
\fBmyisamchk\fR
@@ -426,14 +579,18 @@ and
[myisamchk]
sections of an option file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld]
ft_min_word_len=3
[myisamchk]
ft_min_word_len=3
.fi
+.if n \{\
.RE
+.\}
.PP
An alternative to using
\fBmyisamchk\fR
@@ -441,280 +598,593 @@ is to use the
REPAIR TABLE,
ANALYZE TABLE,
OPTIMIZE TABLE, or
-ALTER TABLE. These statements are performed by the server, which knows the proper full\-text parameter values to use.
-.SH "\fBMYISAMCHK\fR CHECK OPTIONS"
+ALTER TABLE\&. These statements are performed by the server, which knows the proper full\-text parameter values to use\&.
+.SH "MYISAMCHK CHECK OPTIONS"
+.\" check options: myisamchk
+.\" tables: checking
.PP
\fBmyisamchk\fR
supports the following options for table checking operations:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: check option
+.\" check option: myisamchk
\fB\-\-check\fR,
\fB\-c\fR
.sp
-Check the table for errors. This is the default operation if you specify no option that selects an operation type explicitly.
-.TP 3n
-\(bu
+Check the table for errors\&. This is the default operation if you specify no option that selects an operation type explicitly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: check-only-changed option
+.\" check-only-changed option: myisamchk
\fB\-\-check\-only\-changed\fR,
\fB\-C\fR
.sp
-Check only tables that have changed since the last check.
-.TP 3n
-\(bu
+Check only tables that have changed since the last check\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: extend-check option
+.\" extend-check option: myisamchk
\fB\-\-extend\-check\fR,
\fB\-e\fR
.sp
-Check the table very thoroughly. This is quite slow if the table has many indexes. This option should only be used in extreme cases. Normally,
+Check the table very thoroughly\&. This is quite slow if the table has many indexes\&. This option should only be used in extreme cases\&. Normally,
\fBmyisamchk\fR
or
\fBmyisamchk \-\-medium\-check\fR
-should be able to determine whether there are any errors in the table.
+should be able to determine whether there are any errors in the table\&.
.sp
If you are using
\fB\-\-extend\-check\fR
and have plenty of memory, setting the
key_buffer_size
-variable to a large value helps the repair operation run faster.
-.TP 3n
-\(bu
+variable to a large value helps the repair operation run faster\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: fast option
+.\" fast option: myisamchk
\fB\-\-fast\fR,
\fB\-F\fR
.sp
-Check only tables that haven't been closed properly.
-.TP 3n
-\(bu
+Check only tables that haven\'t been closed properly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: force option
+.\" force option: myisamchk
\fB\-\-force\fR,
\fB\-f\fR
.sp
Do a repair operation automatically if
\fBmyisamchk\fR
-finds any errors in the table. The repair type is the same as that specified with the
+finds any errors in the table\&. The repair type is the same as that specified with the
\fB\-\-recover\fR
or
\fB\-r\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: information option
+.\" information option: myisamchk
\fB\-\-information\fR,
\fB\-i\fR
.sp
-Print informational statistics about the table that is checked.
-.TP 3n
-\(bu
+Print informational statistics about the table that is checked\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: medium-check option
+.\" medium-check option: myisamchk
\fB\-\-medium\-check\fR,
\fB\-m\fR
.sp
Do a check that is faster than an
\fB\-\-extend\-check\fR
-operation. This finds only 99.99% of all errors, which should be good enough in most cases.
-.TP 3n
-\(bu
+operation\&. This finds only 99\&.99% of all errors, which should be good enough in most cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: read-only option
+.\" read-only option: myisamchk
\fB\-\-read\-only\fR,
\fB\-T\fR
.sp
-Do not mark the table as checked. This is useful if you use
+Do not mark the table as checked\&. This is useful if you use
\fBmyisamchk\fR
to check a table that is in use by some other application that does not use locking, such as
\fBmysqld\fR
-when run with external locking disabled.
-.TP 3n
-\(bu
+when run with external locking disabled\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: update-state option
+.\" update-state option: myisamchk
\fB\-\-update\-state\fR,
\fB\-U\fR
.sp
Store information in the
-\fI.MYI\fR
-file to indicate when the table was checked and whether the table crashed. This should be used to get full benefit of the
+\&.MYI
+file to indicate when the table was checked and whether the table crashed\&. This should be used to get full benefit of the
\fB\-\-check\-only\-changed\fR
-option, but you shouldn't use this option if the
+option, but you shouldn\'t use this option if the
\fBmysqld\fR
-server is using the table and you are running it with external locking disabled.
-.SH "\fBMYISAMCHK\fR REPAIR OPTIONS"
+server is using the table and you are running it with external locking disabled\&.
+.RE
+.SH "MYISAMCHK REPAIR OPTIONS"
+.\" repair options: myisamchk
+.\" files: repairing
.PP
\fBmyisamchk\fR
supports the following options for table repair operations:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: backup option
+.\" backup option: myisamchk
\fB\-\-backup\fR,
\fB\-B\fR
.sp
Make a backup of the
-\fI.MYD\fR
+\&.MYD
file as
-\fI\fIfile_name\fR\fR\fI\-\fR\fI\fItime\fR\fR\fI.BAK\fR
-.TP 3n
-\(bu
+\fIfile_name\fR\-\fItime\fR\&.BAK
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: character-sets-dir option
+.\" character-sets-dir option: myisamchk
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: correct-checksum option
+.\" correct-checksum option: myisamchk
\fB\-\-correct\-checksum\fR
.sp
-Correct the checksum information for the table.
-.TP 3n
-\(bu
+Correct the checksum information for the table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: data-file-length option
+.\" data-file-length option: myisamchk
\fB\-\-data\-file\-length=\fR\fB\fIlen\fR\fR\fB, \-D \fR\fB\fIlen\fR\fR
.sp
-Maximum length of the data file (when re\-creating data file when it is
-\(lqfull\(rq).
-.TP 3n
-\(bu
+The maximum length of the data file (when re\-creating data file when it is
+\(lqfull\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: extend-check option
+.\" extend-check option: myisamchk
\fB\-\-extend\-check\fR,
\fB\-e\fR
.sp
-Do a repair that tries to recover every possible row from the data file. Normally, this also finds a lot of garbage rows. Do not use this option unless you are desperate.
-.TP 3n
-\(bu
+Do a repair that tries to recover every possible row from the data file\&. Normally, this also finds a lot of garbage rows\&. Do not use this option unless you are desperate\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: force option
+.\" force option: myisamchk
\fB\-\-force\fR,
\fB\-f\fR
.sp
Overwrite old intermediate files (files with names like
-\fI\fItbl_name\fR\fR\fI.TMD\fR) instead of aborting.
-.TP 3n
-\(bu
+\fItbl_name\fR\&.TMD) instead of aborting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: keys-used option
+.\" keys-used option: myisamchk
\fB\-\-keys\-used=\fR\fB\fIval\fR\fR,
\fB\-k \fR\fB\fIval\fR\fR
.sp
For
-\fBmyisamchk\fR, the option value is a bit\-value that indicates which indexes to update. Each binary bit of the option value corresponds to a table index, where the first index is bit 0. An option value of 0 disables updates to all indexes, which can be used to get faster inserts. Deactivated indexes can be reactivated by using
-\fBmyisamchk \-r\fR.
-.TP 3n
-\(bu
+\fBmyisamchk\fR, the option value is a bit\-value that indicates which indexes to update\&. Each binary bit of the option value corresponds to a table index, where the first index is bit 0\&. An option value of 0 disables updates to all indexes, which can be used to get faster inserts\&. Deactivated indexes can be reactivated by using
+\fBmyisamchk \-r\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: no-symlinks option
+.\" no-symlinks option: myisamchk
\fB\-\-no\-symlinks\fR,
\fB\-l\fR
.sp
-Do not follow symbolic links. Normally
+Do not follow symbolic links\&. Normally
\fBmyisamchk\fR
-repairs the table that a symlink points to. This option does not exist as of MySQL 4.0 because versions from 4.0 on do not remove symlinks during repair operations.
-.TP 3n
-\(bu
+repairs the table that a symlink points to\&. This option does not exist as of MySQL 4\&.0 because versions from 4\&.0 on do not remove symlinks during repair operations\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: max-record-length option
+.\" max-record-length option: myisamchk
\fB\-\-max\-record\-length=\fR\fB\fIlen\fR\fR
.sp
Skip rows larger than the given length if
\fBmyisamchk\fR
-cannot allocate memory to hold them.
-.TP 3n
-\(bu
+cannot allocate memory to hold them\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: parallel-recover option
+.\" parallel-recover option: myisamchk
\fB\-\-parallel\-recover\fR,
\fB\-p\fR
.sp
-Uses the same technique as
+Use the same technique as
\fB\-r\fR
and
-\fB\-n\fR, but creates all the keys in parallel, using different threads.
-\fIThis is beta\-quality code. Use at your own risk!\fR
-.TP 3n
-\(bu
+\fB\-n\fR, but create all the keys in parallel, using different threads\&.
+\fIThis is beta\-quality code\&. Use at your own risk!\fR
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: quick option
+.\" quick option: myisamchk
\fB\-\-quick\fR,
\fB\-q\fR
.sp
-Achieve a faster repair by not modifying the data file. You can specify this option twice to force
+Achieve a faster repair by not modifying the data file\&. You can specify this option twice to force
\fBmyisamchk\fR
-to modify the original data file in case of duplicate keys.
-.TP 3n
-\(bu
+to modify the original data file in case of duplicate keys\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: recover option
+.\" recover option: myisamchk
\fB\-\-recover\fR,
\fB\-r\fR
.sp
Do a repair that can fix almost any problem except unique keys that are not unique (which is an extremely unlikely error with
MyISAM
-tables). If you want to recover a table, this is the option to try first. You should try
+tables)\&. If you want to recover a table, this is the option to try first\&. You should try
\fB\-\-safe\-recover\fR
only if
\fBmyisamchk\fR
reports that the table cannot be recovered using
-\fB\-\-recover\fR. (In the unlikely case that
+\fB\-\-recover\fR\&. (In the unlikely case that
\fB\-\-recover\fR
-fails, the data file remains intact.)
+fails, the data file remains intact\&.)
.sp
If you have lots of memory, you should increase the value of
-sort_buffer_size.
-.TP 3n
-\(bu
+sort_buffer_size\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: safe-recover option
+.\" safe-recover option: myisamchk
\fB\-\-safe\-recover\fR,
\fB\-o\fR
.sp
-Do a repair using an old recovery method that reads through all rows in order and updates all index trees based on the rows found. This is an order of magnitude slower than
+Do a repair using an old recovery method that reads through all rows in order and updates all index trees based on the rows found\&. This is an order of magnitude slower than
\fB\-\-recover\fR, but can handle a couple of very unlikely cases that
\fB\-\-recover\fR
-cannot. This recovery method also uses much less disk space than
-\fB\-\-recover\fR. Normally, you should repair first using
+cannot\&. This recovery method also uses much less disk space than
+\fB\-\-recover\fR\&. Normally, you should repair first using
\fB\-\-recover\fR, and then with
\fB\-\-safe\-recover\fR
only if
\fB\-\-recover\fR
-fails.
+fails\&.
.sp
If you have lots of memory, you should increase the value of
-key_buffer_size.
-.TP 3n
-\(bu
+key_buffer_size\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: set-character-set option
+.\" set-character-set option: myisamchk
\fB\-\-set\-character\-set=\fR\fB\fIname\fR\fR
.sp
-Change the character set used by the table indexes. This option was replaced by
+Change the character set used by the table indexes\&. This option was replaced by
\fB\-\-set\-collation\fR
-in MySQL 5.0.3.
-.TP 3n
-\(bu
+in MySQL 5\&.0\&.3\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: set-collation option
+.\" set-collation option: myisamchk
\fB\-\-set\-collation=\fR\fB\fIname\fR\fR
.sp
-Specify the collation to use for sorting table indexes. The character set name is implied by the first part of the collation name.
-.TP 3n
-\(bu
+Specify the collation to use for sorting table indexes\&. The character set name is implied by the first part of the collation name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: sort-recover option
+.\" sort-recover option: myisamchk
\fB\-\-sort\-recover\fR,
\fB\-n\fR
.sp
Force
\fBmyisamchk\fR
-to use sorting to resolve the keys even if the temporary files would be very large.
-.TP 3n
-\(bu
+to use sorting to resolve the keys even if the temporary files would be very large\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: tmpdir option
+.\" tmpdir option: myisamchk
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR,
\fB\-t \fR\fB\fIpath\fR\fR
.sp
-Path of the directory to be used for storing temporary files. If this is not set,
+The path of the directory to be used for storing temporary files\&. If this is not set,
\fBmyisamchk\fR
uses the value of the
TMPDIR
-environment variable.
+environment variable\&.
tmpdir
-can be set to a list of directory paths that are used successively in round\-robin fashion for creating temporary files. The separator character between directory names is the colon (\(lq:\(rq) on Unix and the semicolon (\(lq;\(rq) on Windows, NetWare, and OS/2.
-.TP 3n
-\(bu
+can be set to a list of directory paths that are used successively in round\-robin fashion for creating temporary files\&. The separator character between directory names is the colon (\(lq:\(rq) on Unix and the semicolon (\(lq;\(rq) on Windows, NetWare, and OS/2\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: unpack option
+.\" unpack option: myisamchk
\fB\-\-unpack\fR,
\fB\-u\fR
.sp
Unpack a table that was packed with
-\fBmyisampack\fR.
+\fBmyisampack\fR\&.
+.RE
.SH "OTHER MYISAMCHK OPTIONS"
.PP
\fBmyisamchk\fR
supports the following options for actions other than table checks and repairs:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: analyze option
+.\" analyze option: myisamchk
\fB\-\-analyze\fR,
\fB\-a\fR
.sp
-Analyze the distribution of key values. This improves join performance by enabling the join optimizer to better choose the order in which to join the tables and which indexes it should use. To obtain information about the key distribution, use a
+Analyze the distribution of key values\&. This improves join performance by enabling the join optimizer to better choose the order in which to join the tables and which indexes it should use\&. To obtain information about the key distribution, use a
\fBmyisamchk \-\-description \-\-verbose \fR\fB\fItbl_name\fR\fR
command or the
SHOW INDEX FROM \fItbl_name\fR
-statement.
-.TP 3n
-\(bu
+statement\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: block-search option
+.\" block-search option: myisamchk
\fB\-\-block\-search=\fR\fB\fIoffset\fR\fR,
\fB\-b \fR\fB\fIoffset\fR\fR
.sp
-Find the record that a block at the given offset belongs to.
-.TP 3n
-\(bu
+Find the record that a block at the given offset belongs to\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: description option
+.\" description option: myisamchk
\fB\-\-description\fR,
\fB\-d\fR
.sp
-Print some descriptive information about the table.
-.TP 3n
-\(bu
+Print some descriptive information about the table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: set-auto-increment[ option
+.\" set-auto-increment[ option: myisamchk
\fB\-\-set\-auto\-increment[=\fR\fB\fIvalue\fR\fR\fB]\fR,
\fB\-A[\fR\fB\fIvalue\fR\fR\fB]\fR
.sp
@@ -722,120 +1192,175 @@ Force
AUTO_INCREMENT
numbering for new records to start at the given value (or higher, if there are existing records with
AUTO_INCREMENT
-values this large). If
+values this large)\&. If
\fIvalue\fR
is not specified,
AUTO_INCREMENT
-numbers for new records begin with the largest value currently in the table, plus one.
-.TP 3n
-\(bu
+numbers for new records begin with the largest value currently in the table, plus one\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: sort-index option
+.\" sort-index option: myisamchk
\fB\-\-sort\-index\fR,
\fB\-S\fR
.sp
-Sort the index tree blocks in high\-low order. This optimizes seeks and makes table scans that use indexes faster.
-.TP 3n
-\(bu
+Sort the index tree blocks in high\-low order\&. This optimizes seeks and makes table scans that use indexes faster\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisamchk: sort-records option
+.\" sort-records option: myisamchk
\fB\-\-sort\-records=\fR\fB\fIN\fR\fR,
\fB\-R \fR\fB\fIN\fR\fR
.sp
-Sort records according to a particular index. This makes your data much more localized and may speed up range\-based
+Sort records according to a particular index\&. This makes your data much more localized and may speed up range\-based
SELECT
and
ORDER BY
-operations that use this index. (The first time you use this option to sort a table, it may be very slow.) To determine a table's index numbers, use
-SHOW INDEX, which displays a table's indexes in the same order that
+operations that use this index\&. (The first time you use this option to sort a table, it may be very slow\&.) To determine a table\'s index numbers, use
+SHOW INDEX, which displays a table\'s indexes in the same order that
\fBmyisamchk\fR
-sees them. Indexes are numbered beginning with 1.
+sees them\&. Indexes are numbered beginning with 1\&.
.sp
If keys are not packed (PACK_KEYS=0), they have the same length, so when
\fBmyisamchk\fR
-sorts and moves records, it just overwrites record offsets in the index. If keys are packed (PACK_KEYS=1),
+sorts and moves records, it just overwrites record offsets in the index\&. If keys are packed (PACK_KEYS=1),
\fBmyisamchk\fR
-must unpack key blocks first, then re\-create indexes and pack the key blocks again. (In this case, re\-creating indexes is faster than updating offsets for each index.)
-.SH "\fBMYISAMCHK\fR MEMORY USAGE"
+must unpack key blocks first, then re\-create indexes and pack the key blocks again\&. (In this case, re\-creating indexes is faster than updating offsets for each index\&.)
+.RE
+.SH "MYISAMCHK MEMORY USAGE"
+.\" memory usage: myisamchk
.PP
Memory allocation is important when you run
-\fBmyisamchk\fR.
+\fBmyisamchk\fR\&.
\fBmyisamchk\fR
-uses no more memory than its memory\-related variables are set to. If you are going to use
+uses no more memory than its memory\-related variables are set to\&. If you are going to use
\fBmyisamchk\fR
-on very large tables, you should first decide how much memory you want it to use. The default is to use only about 3MB to perform repairs. By using larger values, you can get
+on very large tables, you should first decide how much memory you want it to use\&. The default is to use only about 3MB to perform repairs\&. By using larger values, you can get
\fBmyisamchk\fR
-to operate faster. For example, if you have more than 32MB RAM, you could use options such as these (in addition to any other options you might specify):
+to operate faster\&. For example, if you have more than 32MB RAM, you could use options such as these (in addition to any other options you might specify):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-\-sort_buffer_size=16M \-\-key_buffer_size=16M \\\fR
- \fB\-\-read_buffer_size=1M \-\-write_buffer_size=1M ...\fR
+shell> \fBmyisamchk \-\-sort_buffer_size=16M \-\-key_buffer_size=16M \e\fR
+ \fB\-\-read_buffer_size=1M \-\-write_buffer_size=1M \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Using
\fB\-\-sort_buffer_size=16M\fR
-should probably be enough for most cases.
+should probably be enough for most cases\&.
.PP
Be aware that
\fBmyisamchk\fR
uses temporary files in
-TMPDIR. If
+TMPDIR\&. If
TMPDIR
-points to a memory file system, you may easily get out of memory errors. If this happens, run
+points to a memory file system, you may easily get out of memory errors\&. If this happens, run
\fBmyisamchk\fR
with the
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR
-option to specify some directory located on a file system that has more space.
+option to specify some directory located on a file system that has more space\&.
.PP
When repairing,
\fBmyisamchk\fR
also needs a lot of disk space:
-.TP 3n
-\(bu
-Double the size of the data file (the original file and a copy). This space is not needed if you do a repair with
-\fB\-\-quick\fR; in this case, only the index file is re\-created.
-\fIThis space must be available on the same file system as the original data file\fR, as the copy is created in the same directory as the original.
-.TP 3n
-\(bu
-Space for the new index file that replaces the old one. The old index file is truncated at the start of the repair operation, so you usually ignore this space. This space must be available on the same file system as the original data file.
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Double the size of the data file (the original file and a copy)\&. This space is not needed if you do a repair with
+\fB\-\-quick\fR; in this case, only the index file is re\-created\&.
+\fIThis space must be available on the same file system as the original data file\fR, as the copy is created in the same directory as the original\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Space for the new index file that replaces the old one\&. The old index file is truncated at the start of the repair operation, so you usually ignore this space\&. This space must be available on the same file system as the original data file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
When using
\fB\-\-recover\fR
or
\fB\-\-sort\-recover\fR
(but not when using
-\fB\-\-safe\-recover\fR), you need space for a sort buffer. The following formula yields the amount of space required:
+\fB\-\-safe\-recover\fR), you need space for a sort buffer\&. The following formula yields the amount of space required:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
(\fIlargest_key\fR + \fIrow_pointer_length\fR) \(mu \fInumber_of_rows\fR \(mu 2
.fi
+.if n \{\
.RE
+.\}
+.sp
You can check the length of the keys and the
row_pointer_length
with
-\fBmyisamchk \-dv \fR\fB\fItbl_name\fR\fR. This space is allocated in the temporary directory (specified by
+\fBmyisamchk \-dv \fR\fB\fItbl_name\fR\fR\&. This space is allocated in the temporary directory (specified by
TMPDIR
or
-\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR).
-.sp
+\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR)\&.
.RE
.PP
If you have a problem with disk space during repair, you can try
\fB\-\-safe\-recover\fR
instead of
-\fB\-\-recover\fR.
+\fB\-\-recover\fR\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/myisamlog.1'
--- a/man/myisamlog.1 2009-05-25 09:59:47 +0000
+++ b/man/myisamlog.1 2009-09-16 12:03:18 +0000
@@ -1,129 +1,241 @@
+'\" t
.\" Title: \fBmyisamlog\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYISAMLOG\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYISAMLOG\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" myisamlog
+.\" isamlog
.SH "NAME"
myisamlog \- display MyISAM log file contents
.SH "SYNOPSIS"
-.HP 46
-\fBmyisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] ...]\fR
+.HP \w'\fBmyisamlog\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIlog_file\fR\fR\fB\ [\fR\fB\fItbl_name\fR\fR\fB]\ \&.\&.\&.]\fR\ 'u
+\fBmyisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
\fBmyisamlog\fR
processes the contents of a
MyISAM
-log file.
+log file\&.
.PP
Invoke
\fBmyisamlog\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] ...]\fR
-shell> \fBisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] ...]\fR
+shell> \fBmyisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] \&.\&.\&.]\fR
+shell> \fBisamlog [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB] \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-The default operation is update (\fB\-u\fR). If a recovery is done (\fB\-r\fR), all writes and possibly updates and deletes are done and errors are only counted. The default log file name is
-\fImyisam.log\fR
+The default operation is update (\fB\-u\fR)\&. If a recovery is done (\fB\-r\fR), all writes and possibly updates and deletes are done and errors are only counted\&. The default log file name is
+myisam\&.log
for
\fBmyisamlog\fR
and
-\fIisam.log\fR
+isam\&.log
for
\fBisamlog\fR
if no
\fIlog_file\fR
-argument is given. If tables are named on the command line, only those tables are updated.
+argument is given\&. If tables are named on the command line, only those tables are updated\&.
.PP
\fBmyisamlog\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-c \fR\fB\fIN\fR\fR
.sp
Execute only
\fIN\fR
-commands.
-.TP 3n
-\(bu
+commands\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-f \fR\fB\fIN\fR\fR
.sp
-Specify the maximum number of open files.
-.TP 3n
-\(bu
+Specify the maximum number of open files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-i\fR
.sp
-Display extra information before exiting.
-.TP 3n
-\(bu
+Display extra information before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-o \fR\fB\fIoffset\fR\fR
.sp
-Specify the starting offset.
-.TP 3n
-\(bu
+Specify the starting offset\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-p \fR\fB\fIN\fR\fR
.sp
Remove
\fIN\fR
-components from path.
-.TP 3n
-\(bu
+components from path\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-r\fR
.sp
-Perform a recovery operation.
-.TP 3n
-\(bu
+Perform a recovery operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-R \fR\fB\fIrecord_pos_file record_pos\fR\fR
.sp
-Specify record position file and record position.
-.TP 3n
-\(bu
+Specify record position file and record position\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-u\fR
.sp
-Perform an update operation.
-.TP 3n
-\(bu
+Perform an update operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-v\fR
.sp
-Verbose mode. Print more output about what the program does. This option can be given multiple times to produce more and more output.
-.TP 3n
-\(bu
+Verbose mode\&. Print more output about what the program does\&. This option can be given multiple times to produce more and more output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-w \fR\fB\fIwrite_file\fR\fR
.sp
-Specify the write file.
-.TP 3n
-\(bu
+Specify the write file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-V\fR
.sp
-Display version information.
+Display version information\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/myisampack.1'
--- a/man/myisampack.1 2009-05-25 09:59:47 +0000
+++ b/man/myisampack.1 2009-09-16 12:03:18 +0000
@@ -1,198 +1,351 @@
+'\" t
.\" Title: \fBmyisampack\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYISAMPACK\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYISAMPACK\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" myisampack
+.\" compressed tables
+.\" tables: compressed
+.\" MyISAM: compressed tables
.SH "NAME"
myisampack \- generate compressed, read\-only MyISAM tables
.SH "SYNOPSIS"
-.HP 35
-\fBmyisampack [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR\fB ...\fR
+.HP \w'\fBmyisampack\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIfile_name\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmyisampack [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBmyisampack\fR
utility compresses
MyISAM
-tables.
+tables\&.
\fBmyisampack\fR
-works by compressing each column in the table separately. Usually,
+works by compressing each column in the table separately\&. Usually,
\fBmyisampack\fR
-packs the data file 40%\-70%.
+packs the data file 40%\(en70%\&.
.PP
-When the table is used later, the server reads into memory the information needed to decompress columns. This results in much better performance when accessing individual rows, because you only have to uncompress exactly one row.
+When the table is used later, the server reads into memory the information needed to decompress columns\&. This results in much better performance when accessing individual rows, because you only have to uncompress exactly one row\&.
.PP
MySQL uses
mmap()
-when possible to perform memory mapping on compressed tables. If
+when possible to perform memory mapping on compressed tables\&. If
mmap()
-does not work, MySQL falls back to normal read/write file operations.
+does not work, MySQL falls back to normal read/write file operations\&.
.PP
Please note the following:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
If the
\fBmysqld\fR
server was invoked with external locking disabled, it is not a good idea to invoke
\fBmyisampack\fR
-if the table might be updated by the server during the packing process. It is safest to compress tables with the server stopped.
-.TP 3n
-\(bu
-After packing a table, it becomes read only. This is generally intended (such as when accessing packed tables on a CD). Allowing writes to a packed table is on our TODO list, but with low priority.
+if the table might be updated by the server during the packing process\&. It is safest to compress tables with the server stopped\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+After packing a table, it becomes read only\&. This is generally intended (such as when accessing packed tables on a CD)\&. Allowing writes to a packed table is on our TODO list, but with low priority\&.
.RE
.PP
Invoke
\fBmyisampack\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisampack [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR\fB ...\fR
+shell> \fBmyisampack [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIfile_name\fR\fR\fB \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Each file name argument should be the name of an index (\fI.MYI\fR) file. If you are not in the database directory, you should specify the path name to the file. It is permissible to omit the
-\fI.MYI\fR
-extension.
+Each file name argument should be the name of an index (\&.MYI) file\&. If you are not in the database directory, you should specify the path name to the file\&. It is permissible to omit the
+\&.MYI
+extension\&.
.PP
After you compress a table with
\fBmyisampack\fR, you should use
\fBmyisamchk \-rq\fR
-to rebuild its indexes.
-\fBmyisamchk\fR(1).
+to rebuild its indexes\&.
+\fBmyisamchk\fR(1)\&.
.PP
\fBmyisampack\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: help option
+.\" help option: myisampack
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: backup option
+.\" backup option: myisampack
\fB\-\-backup\fR,
\fB\-b\fR
.sp
-Make a backup of each table's data file using the name
-\fI\fItbl_name\fR\fR\fI.OLD\fR.
-.TP 3n
-\(bu
+Make a backup of each table\'s data file using the name
+\fItbl_name\fR\&.OLD\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: character-sets-dir option
+.\" character-sets-dir option: myisampack
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: debug option
+.\" debug option: myisampack
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: force option
+.\" force option: myisampack
\fB\-\-force\fR,
\fB\-f\fR
.sp
Produce a packed table even if it becomes larger than the original or if the intermediate file from an earlier invocation of
\fBmyisampack\fR
-exists. (\fBmyisampack\fR
+exists\&. (\fBmyisampack\fR
creates an intermediate file named
-\fI\fItbl_name\fR\fR\fI.TMD\fR
-in the database directory while it compresses the table. If you kill
+\fItbl_name\fR\&.TMD
+in the database directory while it compresses the table\&. If you kill
\fBmyisampack\fR, the
-\fI.TMD\fR
-file might not be deleted.) Normally,
+\&.TMD
+file might not be deleted\&.) Normally,
\fBmyisampack\fR
exits with an error if it finds that
-\fI\fItbl_name\fR\fR\fI.TMD\fR
-exists. With
+\fItbl_name\fR\&.TMD
+exists\&. With
\fB\-\-force\fR,
\fBmyisampack\fR
-packs the table anyway.
-.TP 3n
-\(bu
+packs the table anyway\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: join option
+.\" join option: myisampack
\fB\-\-join=\fR\fB\fIbig_tbl_name\fR\fR,
\fB\-j \fR\fB\fIbig_tbl_name\fR\fR
.sp
Join all tables named on the command line into a single packed table
-\fIbig_tbl_name\fR. All tables that are to be combined
+\fIbig_tbl_name\fR\&. All tables that are to be combined
\fImust\fR
-have identical structure (same column names and types, same indexes, and so forth).
+have identical structure (same column names and types, same indexes, and so forth)\&.
.sp
\fIbig_tbl_name\fR
-must not exist prior to the join operation. All source tables named on the command line to be merged into
+must not exist prior to the join operation\&. All source tables named on the command line to be merged into
\fIbig_tbl_name\fR
-must exist. The source tables are read for the join operation but not modified. The join operation does not create a
-\fI.frm\fR
+must exist\&. The source tables are read for the join operation but not modified\&. The join operation does not create a
+\&.frm
file for
\fIbig_tbl_name\fR, so after the join operation finishes, copy the
-\fI.frm\fR
+\&.frm
file from one of the source tables and name it
-\fI\fIbig_tbl_name\fR\fR\fI.frm\fR.
-.TP 3n
-\(bu
+\fIbig_tbl_name\fR\&.frm\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: silent option
+.\" silent option: myisampack
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Write output only when errors occur.
-.TP 3n
-\(bu
+Silent mode\&. Write output only when errors occur\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: test option
+.\" test option: myisampack
\fB\-\-test\fR,
\fB\-t\fR
.sp
-Do not actually pack the table, just test packing it.
-.TP 3n
-\(bu
+Do not actually pack the table, just test packing it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: tmpdir option
+.\" tmpdir option: myisampack
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR,
\fB\-T \fR\fB\fIpath\fR\fR
.sp
Use the named directory as the location where
\fBmyisampack\fR
-creates temporary files.
-.TP 3n
-\(bu
+creates temporary files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: verbose option
+.\" verbose option: myisampack
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Write information about the progress of the packing operation and its result.
-.TP 3n
-\(bu
+Verbose mode\&. Write information about the progress of the packing operation and its result\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: version option
+.\" version option: myisampack
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" myisampack: wait option
+.\" wait option: myisampack
\fB\-\-wait\fR,
\fB\-w\fR
.sp
-Wait and retry if the table is in use. If the
+Wait and retry if the table is in use\&. If the
\fBmysqld\fR
server was invoked with external locking disabled, it is not a good idea to invoke
\fBmyisampack\fR
-if the table might be updated by the server during the packing process.
-.sp
+if the table might be updated by the server during the packing process\&.
.RE
+.\" examples: compressed tables
.PP
The following sequence of commands illustrates a typical table compression session:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBls \-l station.*\fR
-\-rw\-rw\-r\-\- 1 monty my 994128 Apr 17 19:00 station.MYD
-\-rw\-rw\-r\-\- 1 monty my 53248 Apr 17 19:00 station.MYI
-\-rw\-rw\-r\-\- 1 monty my 5767 Apr 17 19:00 station.frm
+shell> \fBls \-l station\&.*\fR
+\-rw\-rw\-r\-\- 1 monty my 994128 Apr 17 19:00 station\&.MYD
+\-rw\-rw\-r\-\- 1 monty my 53248 Apr 17 19:00 station\&.MYI
+\-rw\-rw\-r\-\- 1 monty my 5767 Apr 17 19:00 station\&.frm
shell> \fBmyisamchk \-dvv station\fR
MyISAM file: station
Isam\-version: 2
@@ -207,7 +360,7 @@ Record format: Fixed length
table description:
Key Start Len Index Type Root Blocksize Rec/key
1 2 4 unique unsigned long 1024 1024 1
-2 32 30 multip. text 10240 1024 1
+2 32 30 multip\&. text 10240 1024 1
Field Start Length Type
1 1 1
2 2 4
@@ -266,19 +419,19 @@ Field Start Length Type
55 807 20
56 827 4
57 831 4
-shell> \fBmyisampack station.MYI\fR
-Compressing station.MYI: (1192 records)
+shell> \fBmyisampack station\&.MYI\fR
+Compressing station\&.MYI: (1192 records)
\- Calculating statistics
normal: 20 empty\-space: 16 empty\-zero: 12 empty\-fill: 11
pre\-space: 0 end\-space: 12 table\-lookups: 5 zero: 7
Original trees: 57 After join: 17
\- Compressing file
-87.14%
+87\&.14%
Remember to run myisamchk \-rq on compressed tables
-shell> \fBls \-l station.*\fR
-\-rw\-rw\-r\-\- 1 monty my 127874 Apr 17 19:00 station.MYD
-\-rw\-rw\-r\-\- 1 monty my 55296 Apr 17 19:04 station.MYI
-\-rw\-rw\-r\-\- 1 monty my 5767 Apr 17 19:00 station.frm
+shell> \fBls \-l station\&.*\fR
+\-rw\-rw\-r\-\- 1 monty my 127874 Apr 17 19:00 station\&.MYD
+\-rw\-rw\-r\-\- 1 monty my 55296 Apr 17 19:04 station\&.MYI
+\-rw\-rw\-r\-\- 1 monty my 5767 Apr 17 19:00 station\&.frm
shell> \fBmyisamchk \-dvv station\fR
MyISAM file: station
Isam\-version: 2
@@ -293,7 +446,7 @@ Record format: Compressed
table description:
Key Start Len Index Type Root Blocksize Rec/key
1 2 4 unique unsigned long 10240 1024 1
-2 32 30 multip. text 54272 1024 1
+2 32 30 multip\&. text 54272 1024 1
Field Start Length Type Huff tree Bits
1 1 1 constant 1 0
2 2 4 zerofill(1) 2 9
@@ -353,171 +506,341 @@ Field Start Length Type
56 827 4 no zeros, zerofill(2) 2 9
57 831 4 no zeros, zerofill(1) 2 9
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmyisampack\fR
displays the following kinds of information:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
normal
.sp
-The number of columns for which no extra packing is used.
-.TP 3n
-\(bu
+The number of columns for which no extra packing is used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
empty\-space
.sp
-The number of columns containing values that are only spaces. These occupy one bit.
-.TP 3n
-\(bu
+The number of columns containing values that are only spaces\&. These occupy one bit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
empty\-zero
.sp
-The number of columns containing values that are only binary zeros. These occupy one bit.
-.TP 3n
-\(bu
+The number of columns containing values that are only binary zeros\&. These occupy one bit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
empty\-fill
.sp
-The number of integer columns that do not occupy the full byte range of their type. These are changed to a smaller type. For example, a
+The number of integer columns that do not occupy the full byte range of their type\&. These are changed to a smaller type\&. For example, a
BIGINT
column (eight bytes) can be stored as a
TINYINT
column (one byte) if all its values are in the range from
\-128
to
-127.
-.TP 3n
-\(bu
+127\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
pre\-space
.sp
-The number of decimal columns that are stored with leading spaces. In this case, each value contains a count for the number of leading spaces.
-.TP 3n
-\(bu
+The number of decimal columns that are stored with leading spaces\&. In this case, each value contains a count for the number of leading spaces\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
end\-space
.sp
-The number of columns that have a lot of trailing spaces. In this case, each value contains a count for the number of trailing spaces.
-.TP 3n
-\(bu
+The number of columns that have a lot of trailing spaces\&. In this case, each value contains a count for the number of trailing spaces\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
table\-lookup
.sp
The column had only a small number of different values, which were converted to an
ENUM
-before Huffman compression.
-.TP 3n
-\(bu
+before Huffman compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
zero
.sp
-The number of columns for which all values are zero.
-.TP 3n
-\(bu
+The number of columns for which all values are zero\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Original trees
.sp
-The initial number of Huffman trees.
-.TP 3n
-\(bu
-After join
+The initial number of Huffman trees\&.
+.RE
.sp
-The number of distinct Huffman trees left after joining trees to save some header space.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+After join
.sp
+The number of distinct Huffman trees left after joining trees to save some header space\&.
.RE
.PP
After a table has been compressed,
\fBmyisamchk \-dvv\fR
prints additional information about each column:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Type
.sp
-The data type. The value may contain any of the following descriptors:
-.RS 3n
-.TP 3n
-\(bu
+The data type\&. The value may contain any of the following descriptors:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
constant
.sp
-All rows have the same value.
-.TP 3n
-\(bu
+All rows have the same value\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
no endspace
.sp
-Do not store endspace.
-.TP 3n
-\(bu
+Do not store endspace\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
no endspace, not_always
.sp
-Do not store endspace and do not do endspace compression for all values.
-.TP 3n
-\(bu
+Do not store endspace and do not do endspace compression for all values\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
no endspace, no empty
.sp
-Do not store endspace. Do not store empty values.
-.TP 3n
-\(bu
+Do not store endspace\&. Do not store empty values\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
table\-lookup
.sp
The column was converted to an
-ENUM.
-.TP 3n
-\(bu
+ENUM\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
zerofill(\fIN\fR)
.sp
The most significant
\fIN\fR
-bytes in the value are always 0 and are not stored.
-.TP 3n
-\(bu
+bytes in the value are always 0 and are not stored\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
no zeros
.sp
-Do not store zeros.
-.TP 3n
-\(bu
+Do not store zeros\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
always zero
.sp
-Zero values are stored using one bit.
+Zero values are stored using one bit\&.
.RE
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Huff tree
.sp
-The number of the Huffman tree associated with the column.
-.TP 3n
-\(bu
-Bits
+The number of the Huffman tree associated with the column\&.
+.RE
.sp
-The number of bits used in the Huffman tree.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Bits
.sp
+The number of bits used in the Huffman tree\&.
.RE
.PP
After you run
\fBmyisampack\fR, you must run
\fBmyisamchk\fR
-to re\-create any indexes. At this time, you can also sort the index blocks and create statistics needed for the MySQL optimizer to work more efficiently:
+to re\-create any indexes\&. At this time, you can also sort the index blocks and create statistics needed for the MySQL optimizer to work more efficiently:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmyisamchk \-rq \-\-sort\-index \-\-analyze \fR\fB\fItbl_name\fR\fR\fB.MYI\fR
+shell> \fBmyisamchk \-rq \-\-sort\-index \-\-analyze \fR\fB\fItbl_name\fR\fR\fB\&.MYI\fR
.fi
+.if n \{\
.RE
+.\}
.PP
After you have installed the packed table into the MySQL database directory, you should execute
\fBmysqladmin flush\-tables\fR
to force
\fBmysqld\fR
-to start using the new table.
+to start using the new table\&.
.PP
To unpack a packed table, use the
\fB\-\-unpack\fR
option to
-\fBmyisamchk\fR.
+\fBmyisamchk\fR\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql-stress-test.pl.1'
--- a/man/mysql-stress-test.pl.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql-stress-test.pl.1 2009-09-16 12:03:18 +0000
@@ -1,234 +1,519 @@
-.\" Title: \fBmysql\-stress\-test.pl\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/27/2009
+'\" t
+.\" Title: \fBmysql-stress-test.pl\fR
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/08/2009
.\" Manual: MySQL Database System
.\" Source: MySQL
+.\" Language: English
.\"
-.TH "\fBMYSQL\-STRESS\-TEST" "1" "03/27/2009" "MySQL" "MySQL Database System"
+.TH "\FBMYSQL\-STRESS\-TE" "1" "08/08/2009" "MySQL" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql-stress-test.pl
.SH "NAME"
-mysql\-stress\-test.pl \- server stress test program
+mysql-stress-test.pl \- server stress test program
.SH "SYNOPSIS"
-.HP 31
-\fBmysql\-stress\-test.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
+.HP \w'\fBmysql\-stress\-test\&.pl\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
+\fBmysql\-stress\-test\&.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
The
-\fBmysql\-stress\-test.pl\fR
-Perl script performs stress\-testing of the MySQL server. (MySQL 5.0 and up only)
+\fBmysql\-stress\-test\&.pl\fR
+Perl script performs stress\-testing of the MySQL server\&. (MySQL 5\&.0 and up only)
.PP
-\fBmysql\-stress\-test.pl\fR
-requires a version of Perl that has been built with threads support.
+\fBmysql\-stress\-test\&.pl\fR
+requires a version of Perl that has been built with threads support\&.
.PP
Invoke
-\fBmysql\-stress\-test.pl\fR
+\fBmysql\-stress\-test\&.pl\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql\-stress\-test.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
+shell> \fBmysql\-stress\-test\&.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-\fBmysql\-stress\-test.pl\fR
+\fBmysql\-stress\-test\&.pl\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: help option
+.\" help option: mysql-stress-test.pl
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: abort-on-error option
+.\" abort-on-error option: mysql-stress-test.pl
\fB\-\-abort\-on\-error\fR
.sp
-Unknown.
-.TP 3n
-\(bu
+Unknown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: check-tests-file option
+.\" check-tests-file option: mysql-stress-test.pl
\fB\-\-check\-tests\-file\fR
.sp
-Periodically check the file that lists the tests to be run. If it has been modified, reread the file. This can be useful if you update the list of tests to be run during a stress test.
-.TP 3n
-\(bu
+Periodically check the file that lists the tests to be run\&. If it has been modified, reread the file\&. This can be useful if you update the list of tests to be run during a stress test\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: cleanup option
+.\" cleanup option: mysql-stress-test.pl
\fB\-\-cleanup\fR
.sp
-Force cleanup of the working directory.
-.TP 3n
-\(bu
+Force cleanup of the working directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: log-error-details option
+.\" log-error-details option: mysql-stress-test.pl
\fB\-\-log\-error\-details\fR
.sp
-Log error details in the global error log file.
-.TP 3n
-\(bu
+Log error details in the global error log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: loop-count option
+.\" loop-count option: mysql-stress-test.pl
\fB\-\-loop\-count=\fR\fB\fIN\fR\fR
.sp
-In sequential test mode, the number of loops to execute before exiting.
-.TP 3n
-\(bu
+In sequential test mode, the number of loops to execute before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: mysqltest option
+.\" mysqltest option: mysql-stress-test.pl
\fB\-\-mysqltest=\fR\fB\fIpath\fR\fR
.sp
The path name to the
\fBmysqltest\fR
-program.
-.TP 3n
-\(bu
+program\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-database option
+.\" server-database option: mysql-stress-test.pl
\fB\-\-server\-database=\fR\fB\fIdb_name\fR\fR
.sp
-The database to use for the tests.
-.TP 3n
-\(bu
+The database to use for the tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-host option
+.\" server-host option: mysql-stress-test.pl
\fB\-\-server\-host=\fR\fB\fIhost_name\fR\fR
.sp
-The host name of the local host to use for making a TCP/IP connection to the local server. By default, the connection is made to
+The host name of the local host to use for making a TCP/IP connection to the local server\&. By default, the connection is made to
localhost
-using a Unix socket file.
-.TP 3n
-\(bu
+using a Unix socket file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-logs-dir option
+.\" server-logs-dir option: mysql-stress-test.pl
\fB\-\-server\-logs\-dir=\fR\fB\fIpath\fR\fR
.sp
-This option is required.
+This option is required\&.
\fIpath\fR
-is the directory where all client session logs will be stored. Usually this is the shared directory that is associated with the server used for testing.
-.TP 3n
-\(bu
+is the directory where all client session logs will be stored\&. Usually this is the shared directory that is associated with the server used for testing\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-password option
+.\" server-password option: mysql-stress-test.pl
\fB\-\-server\-password=\fR\fB\fIpassword\fR\fR
.sp
-The password to use when connecting to the server.
-.TP 3n
-\(bu
+The password to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-port option
+.\" server-port option: mysql-stress-test.pl
\fB\-\-server\-port=\fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for connecting to the server. The default is 3306.
-.TP 3n
-\(bu
+The TCP/IP port number to use for connecting to the server\&. The default is 3306\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-socket option
+.\" server-socket option: mysql-stress-test.pl
\fB\-\-server\-socket=\fR\fB\fIfile_name\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use. The default if
-\fI/tmp/mysql.sock\fR.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&. The default if
+/tmp/mysql\&.sock\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: server-user option
+.\" server-user option: mysql-stress-test.pl
\fB\-\-server\-user=\fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server. The default is
-root.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&. The default is
+root\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: sleep-time option
+.\" sleep-time option: mysql-stress-test.pl
\fB\-\-sleep\-time=\fR\fB\fIN\fR\fR
.sp
-The delay in seconds between test executions.
-.TP 3n
-\(bu
+The delay in seconds between test executions\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-basedir option
+.\" stress-basedir option: mysql-stress-test.pl
\fB\-\-stress\-basedir=\fR\fB\fIpath\fR\fR
.sp
-This option is required.
+This option is required\&.
\fIpath\fR
-is the working directory for the test run. It is used as the temporary location for result tracking during testing.
-.TP 3n
-\(bu
+is the working directory for the test run\&. It is used as the temporary location for result tracking during testing\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-datadir option
+.\" stress-datadir option: mysql-stress-test.pl
\fB\-\-stress\-datadir=\fR\fB\fIpath\fR\fR
.sp
-The directory of data files to be used during testing. The default location is the
-\fIdata\fR
+The directory of data files to be used during testing\&. The default location is the
+data
directory under the location given by the
\fB\-\-stress\-suite\-basedir\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-init-file option
+.\" stress-init-file option: mysql-stress-test.pl
\fB\-\-stress\-init\-file[=\fR\fB\fIpath\fR\fR\fB]\fR
.sp
\fIfile_name\fR
-is the location of the file that contains the list of tests. If missing, the default file is
-\fIstress_init.txt\fR
-in the test suite directory.
-.TP 3n
-\(bu
+is the location of the file that contains the list of tests\&. If missing, the default file is
+stress_init\&.txt
+in the test suite directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-mode option
+.\" stress-mode option: mysql-stress-test.pl
\fB\-\-stress\-mode=\fR\fB\fImode\fR\fR
.sp
-This option indicates the test order in stress\-test mode. The
+This option indicates the test order in stress\-test mode\&. The
\fImode\fR
value is either
random
to select tests in random order or
seq
-to run tests in each thread in the order specified in the test list file. The default mode is
-random.
-.TP 3n
-\(bu
+to run tests in each thread in the order specified in the test list file\&. The default mode is
+random\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-suite-basedir option
+.\" stress-suite-basedir option: mysql-stress-test.pl
\fB\-\-stress\-suite\-basedir=\fR\fB\fIpath\fR\fR
.sp
-This option is required.
+This option is required\&.
\fIpath\fR
is the directory that has the
-\fIt\fR
+t
and
\fIr\fR
-subdirectories containing the test case and result files. This directory is also the default location of the
-\fIstress\-test.txt\fR
-file that contains the list of tests. (A different location can be specified with the
+subdirectories containing the test case and result files\&. This directory is also the default location of the
+stress\-test\&.txt
+file that contains the list of tests\&. (A different location can be specified with the
\fB\-\-stress\-tests\-file\fR
-option.)
-.TP 3n
-\(bu
+option\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: stress-tests-file option
+.\" stress-tests-file option: mysql-stress-test.pl
\fB\-\-stress\-tests\-file[=\fR\fB\fIfile_name\fR\fR\fB]\fR
.sp
-Use this option to run the stress tests.
+Use this option to run the stress tests\&.
\fIfile_name\fR
-is the location of the file that contains the list of tests. If
+is the location of the file that contains the list of tests\&. If
\fIfile_name\fR
is omitted, the default file is
-\fIstress\-test.txt\fR
-in the stress suite directory. (See
-\fB\-\-stress\-suite\-basedir\fR.)
-.TP 3n
-\(bu
+stress\-test\&.txt
+in the stress suite directory\&. (See
+\fB\-\-stress\-suite\-basedir\fR\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: suite option
+.\" suite option: mysql-stress-test.pl
\fB\-\-suite=\fR\fB\fIsuite_name\fR\fR
.sp
-Run the named test suite. The default name is
+Run the named test suite\&. The default name is
main
(the regular test suite located in the
-\fImysql\-test\fR
-directory).
-.TP 3n
-\(bu
+mysql\-test
+directory)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: test-count option
+.\" test-count option: mysql-stress-test.pl
\fB\-\-test\-count=\fR\fB\fIN\fR\fR
.sp
-The number of tests to execute before exiting.
-.TP 3n
-\(bu
+The number of tests to execute before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: test-duration option
+.\" test-duration option: mysql-stress-test.pl
\fB\-\-test\-duration=\fR\fB\fIN\fR\fR
.sp
-The duration of stress testing in seconds.
-.TP 3n
-\(bu
+The duration of stress testing in seconds\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: test-suffix option
+.\" test-suffix option: mysql-stress-test.pl
\fB\-\-test\-suffix=\fR\fB\fIstr\fR\fR
.sp
-Unknown.
-.TP 3n
-\(bu
+Unknown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: threads option
+.\" threads option: mysql-stress-test.pl
\fB\-\-threads=\fR\fB\fIN\fR\fR
.sp
-The number of threads. The default is 1.
-.TP 3n
-\(bu
+The number of threads\&. The default is 1\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-stress-test.pl: verbose option
+.\" verbose option: mysql-stress-test.pl
\fB\-\-verbose\fR
.sp
-Verbose mode. Print more information about what the program does.
+Verbose mode\&. Print more information about what the program does\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql-test-run.pl.1'
--- a/man/mysql-test-run.pl.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql-test-run.pl.1 2009-09-16 12:03:18 +0000
@@ -1,138 +1,159 @@
-.\" Title: \fBmysql\-test\-run.pl\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/27/2009
+'\" t
+.\" Title: \fBmysql-test-run.pl\fR
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/08/2009
.\" Manual: MySQL Database System
.\" Source: MySQL
+.\" Language: English
.\"
-.TH "\fBMYSQL\-TEST\-RUN.PL" "1" "03/27/2009" "MySQL" "MySQL Database System"
+.TH "\FBMYSQL\-TEST\-RUN\" "1" "08/08/2009" "MySQL" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql-test-run.pl
.SH "NAME"
-mysql\-test\-run.pl \- run MySQL test suite
+mysql-test-run.pl \- run MySQL test suite
.SH "SYNOPSIS"
-.HP 28
-\fBmysql\-test\-run.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
+.HP \w'\fBmysql\-test\-run\&.pl\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
+\fBmysql\-test\-run\&.pl [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
The
-\fBmysql\-test\-run.pl\fR
-Perl script is the main application used to run the MySQL test suite. It invokes
+\fBmysql\-test\-run\&.pl\fR
+Perl script is the main application used to run the MySQL test suite\&. It invokes
\fBmysqltest\fR
-to run individual test cases. (Prior to MySQL 4.1, a similar shell script,
-\fBmysql\-test\-run\fR, can be used instead.)
+to run individual test cases\&. (Prior to MySQL 4\&.1, a similar shell script,
+\fBmysql\-test\-run\fR, can be used instead\&.)
.PP
Invoke
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
in the
-\fImysql\-test\fR
+mysql\-test
directory like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql\-test\-run.pl [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] ...\fR
+shell> \fBmysql\-test\-run\&.pl [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Each
\fItest_name\fR
-argument names a test case. The test case file that corresponds to the test name is
-\fIt/\fR\fI\fItest_name\fR\fR\fI.test\fR.
+argument names a test case\&. The test case file that corresponds to the test name is
+t/\fItest_name\fR\&.test\&.
.PP
For each
\fItest_name\fR
argument,
-\fBmysql\-test\-run.pl\fR
-runs the named test case. With no
+\fBmysql\-test\-run\&.pl\fR
+runs the named test case\&. With no
\fItest_name\fR
arguments,
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
runs all
-\fI.test\fR
+\&.test
files in the
-\fIt\fR
-subdirectory.
+t
+subdirectory\&.
.PP
If no suffix is given for the test name, a suffix of
-\fI.test\fR
-is assumed. Any leading path name is ignored. These commands are equivalent:
+\&.test
+is assumed\&. Any leading path name is ignored\&. These commands are equivalent:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql\-test\-run.pl mytest\fR
-shell> \fBmysql\-test\-run.pl mytest.test\fR
-shell> \fBmysql\-test\-run.pl t/mytest.test\fR
+shell> \fBmysql\-test\-run\&.pl mytest\fR
+shell> \fBmysql\-test\-run\&.pl mytest\&.test\fR
+shell> \fBmysql\-test\-run\&.pl t/mytest\&.test\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-As of MySQL 5.1.23, a suite name can be given as part of the test name. That is, the syntax for naming a test is:
+As of MySQL 5\&.1\&.23, a suite name can be given as part of the test name\&. That is, the syntax for naming a test is:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-[\fIsuite_name\fR.]\fItest_name\fR[.\fIsuffix\fR]
+[\fIsuite_name\fR\&.]\fItest_name\fR[\&.\fIsuffix\fR]
.fi
+.if n \{\
.RE
+.\}
.PP
If a suite name is given,
-\fBmysql\-test\-run.pl\fR
-looks in that suite for the test. With no suite name,
-\fBmysql\-test\-run.pl\fR
-looks in the default list of suites for a match and runs the test in any suites where it finds the test. Suppose that the default suite list is
+\fBmysql\-test\-run\&.pl\fR
+looks in that suite for the test\&. With no suite name,
+\fBmysql\-test\-run\&.pl\fR
+looks in the default list of suites for a match and runs the test in any suites where it finds the test\&. Suppose that the default suite list is
main,
binlog,
rpl, and that a test
-\fImytest.test\fR
+mytest\&.test
exists in the
main
and
rpl
-suites. With an argument of
+suites\&. With an argument of
mytest
or
-mytest.test,
-\fBmysql\-test\-run.pl\fR
+mytest\&.test,
+\fBmysql\-test\-run\&.pl\fR
will run
-\fImytest.test\fR
+mytest\&.test
from the
main
and
rpl
-suites.
+suites\&.
.PP
To run a family of test cases for which the names share a common prefix, use the
\fB\-\-do\-test=\fR\fB\fIprefix\fR\fR
-option. For example,
+option\&. For example,
\fB\-\-do\-test=rpl\fR
runs the replication tests (test cases that have names beginning with
-rpl).
+rpl)\&.
\fB\-\-skip\-test\fR
-has the opposite effect of skipping test cases for which the names share a common prefix.
+has the opposite effect of skipping test cases for which the names share a common prefix\&.
.PP
-As of MySQL 5.0.54/5.1.23/6.0.5, the argument for the
+As of MySQL 5\&.0\&.54/5\&.1\&.23/6\&.0\&.5, the argument for the
\fB\-\-do\-test\fR
and
\fB\-\-skip\-test\fR
-options allows more flexible specification of which tests to perform or skip. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern. If the argument contains a lone period or does not contain any pattern metacharacters, it is interpreted the same way as previously and matches test names that begin with the argument value. For example,
+options allows more flexible specification of which tests to perform or skip\&. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern\&. If the argument contains a lone period or does not contain any pattern metacharacters, it is interpreted the same way as previously and matches test names that begin with the argument value\&. For example,
\fB\-\-do\-test=testa\fR
matches tests that begin with
testa,
-\fB\-\-do\-test=main.testa\fR
+\fB\-\-do\-test=main\&.testa\fR
matches tests in the
main
test suite that begin with
testa, and
-\fB\-\-do\-test=main.*testa\fR
+\fB\-\-do\-test=main\&.*testa\fR
matches test names that contain
main
followed by
testa
-with anything in between. In the latter case, the pattern match is not anchored to the beginning of the test name, so it also matches names such as
-xmainytestz.
+with anything in between\&. In the latter case, the pattern match is not anchored to the beginning of the test name, so it also matches names such as
+xmainytestz\&.
.PP
To perform setup prior to running tests,
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
needs to invoke
\fBmysqld\fR
with the
@@ -140,72 +161,84 @@ with the
and
\fB\-\-skip\-grant\-tables\fR
options (see
-[1]\&\fITypical \fBconfigure\fR Options\fR). If MySQL was configured with the
+\m[blue]\fBTypical \fBconfigure\fR Options\fR\m[]\&\s-2\u[1]\d\s+2)\&. If MySQL was configured with the
\fB\-\-disable\-grant\-options\fR
option,
\fB\-\-bootstrap\fR,
\fB\-\-skip\-grant\-tables\fR, and
\fB\-\-init\-file\fR
-will be disabled. To handle this, set the
+will be disabled\&. To handle this, set the
MYSQLD_BOOTSTRAP
-environment variable to the full path name of a server that has all options enabled.
-\fBmysql\-test\-run.pl\fR
-will use that server to perform setup; it is not used to run the tests.
+environment variable to the full path name of a server that has all options enabled\&.
+\fBmysql\-test\-run\&.pl\fR
+will use that server to perform setup; it is not used to run the tests\&.
.PP
The
init_file
test will fail if
\fB\-\-init\-file\fR
-is disabled. This is an expected failure that can be handled as follows:
+is disabled\&. This is an expected failure that can be handled as follows:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBexport MYSQLD_BOOTSTRAP\fR
shell> \fBMYSQLD_BOOTSTRAP=/full/path/to/mysqld\fR
shell> \fBmake test force="\-\-skip\-test=init_file"\fR
.fi
+.if n \{\
.RE
+.\}
.PP
To run
-\fBmysql\-test\-run.pl\fR
-on Windows, you'll need either Cygwin or ActiveState Perl to run it. You may also need to install the modules required by the script. To run the test script, change location into the
-\fImysql\-test\fR
+\fBmysql\-test\-run\&.pl\fR
+on Windows, you\'ll need either Cygwin or ActiveState Perl to run it\&. You may also need to install the modules required by the script\&. To run the test script, change location into the
+mysql\-test
directory, set the
MTR_VS_CONFIG
environment variable to the configuration you selected earlier (or use the
\fB\-\-vs\-config\fR
option), and invoke
-\fBmysql\-test\-run.pl\fR. For example (using Cygwin and the
+\fBmysql\-test\-run\&.pl\fR\&. For example (using Cygwin and the
\fBbash\fR
shell):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcd mysql\-test\fR
-shell> \fBexport MTS_VS_CONFIG=debug\fR
-shell> \fB./mysqltest\-run.pl \-\-force \-\-timer\fR
-shell> \fB./mysqltest\-run.pl \-\-force \-\-timer \-\-ps\-protocol\fR
+shell> \fBexport MTR_VS_CONFIG=debug\fR
+shell> \fB\&./mysqltest\-run\&.pl \-\-force \-\-timer\fR
+shell> \fB\&./mysqltest\-run\&.pl \-\-force \-\-timer \-\-ps\-protocol\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you have a copy of
\fBmysqld\fR
running on the machine where you want to run the test suite, you do not have to stop it, as long as it is not using ports
9306
or
-9307. If either of those ports is taken, you should set the
+9307\&. If either of those ports is taken, you should set the
MTR_BUILD_THREAD
-environment variable to an appropriate value, and the test suite will use a different set of ports for master, slave, NDB, and Instance Manager). For example:
+environment variable to an appropriate value, and the test suite will use a different set of ports for master, slave, NDB, and Instance Manager)\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBexport MTR_BUILD_THREAD=31\fR
-shell> \fB./mysql\-test\-run.pl [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB]\fR
+shell> \fB\&./mysql\-test\-run\&.pl [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-\fBmysql\-test\-run.pl\fR
-defines several environment variables. Some of them are listed in the following table.
+\fBmysql\-test\-run\&.pl\fR
+defines several environment variables\&. Some of them are listed in the following table\&.
.TS
allbox tab(:);
l l
@@ -227,7 +260,7 @@ T}
T{
MYSQLTEST_VARDIR
T}:T{
-Path name to the \fIvar\fR directory that is used for
+Path name to the var directory that is used for
logs, temporary files, and so forth
T}
T{
@@ -246,127 +279,266 @@ T}:T{
???
T}
.TE
-.sp
+.sp 1
.PP
-Tests sometimes rely on certain environment variables being defined. For example, certain tests assume that
+Tests sometimes rely on certain environment variables being defined\&. For example, certain tests assume that
MYSQL_TEST
is defined so that
\fBmysqltest\fR
can invoke itself with
-exec $MYSQL_TEST.
+exec $MYSQL_TEST\&.
.PP
-\fBmysql\-test\-run.pl\fR
-supports the options in the following list. An argument of
+\fBmysql\-test\-run\&.pl\fR
+supports the options in the following list\&. An argument of
\fB\-\-\fR
tells
-\fBmysql\-test\-run.pl\fR
-not to process any following arguments as options. (A description of differences between the options supported by
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
+not to process any following arguments as options\&. (A description of differences between the options supported by
+\fBmysql\-test\-run\&.pl\fR
and
\fBmysql\-test\-run\fR
-appears following the list.)
-.TP 3n
-\(bu
+appears following the list\&.)
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: help option
+.\" help option: mysql-test-run.pl
\fB\-\-help\fR,
\fB\-h\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: bench option
+.\" bench option: mysql-test-run.pl
\fB\-\-bench\fR
.sp
-Run the benchmark suite.
-.TP 3n
-\(bu
+Run the benchmark suite\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: benchdir option
+.\" benchdir option: mysql-test-run.pl
\fB\-\-benchdir=\fR\fB\fIpath\fR\fR
.sp
-The directory where the benchmark suite is located. The default path is
-\fI../../mysql\-bench\fR.
-.TP 3n
-\(bu
+The directory where the benchmark suite is located\&. The default path is
+\&.\&./\&.\&./mysql\-bench\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: big option
+.\" big option: mysql-test-run.pl
\fB\-\-big\-test\fR
.sp
Pass the
\fB\-\-big\-test\fR
option to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: check-testcases option
+.\" check-testcases option: mysql-test-run.pl
\fB\-\-check\-testcases\fR
.sp
-Check test cases for side effects.
-.TP 3n
-\(bu
+Check test cases for side effects\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-bindir option
+.\" client-bindir option: mysql-test-run.pl
\fB\-\-client\-bindir\fR
.sp
-The path to the directory where client binaries are located. This option was added in MySQL 5.0.66/5.1.27.
-.TP 3n
-\(bu
+The path to the directory where client binaries are located\&. This option was added in MySQL 5\&.0\&.66/5\&.1\&.27\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-ddd option
+.\" client-ddd option: mysql-test-run.pl
\fB\-\-client\-ddd\fR
.sp
Start
\fBmysqltest\fR
in the
\fBddd\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-debugger option
+.\" client-debugger option: mysql-test-run.pl
\fB\-\-client\-debugger\fR
.sp
Start
\fBmysqltest\fR
-in the named debugger.
-.TP 3n
-\(bu
+in the named debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-gdb option
+.\" client-gdb option: mysql-test-run.pl
\fB\-\-client\-gdb\fR
.sp
Start
\fBmysqltest\fR
in the
\fBgdb\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: client-libdir option
+.\" client-libdir option: mysql-test-run.pl
\fB\-\-client\-libdir\fR
.sp
-The path to the directory where client libraries are located. This option was added in MySQL 5.0.66/5.1.27.
-.TP 3n
-\(bu
+The path to the directory where client libraries are located\&. This option was added in MySQL 5\&.0\&.66/5\&.1\&.27\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: combination option
+.\" combination option: mysql-test-run.pl
\fB\-\-combination=\fR\fB\fIvalue\fR\fR
.sp
Extra options to pass to
-\fBmysqld\fR. The value should consist of one or more comma\-separated
+\fBmysqld\fR\&. The value should consist of one or more comma\-separated
\fBmysqld\fR
-options. This option is similar to
+options\&. This option is similar to
\fB\-\-mysqld\fR
-but should be given two or more times.
-\fBmysql\-test\-run.pl\fR
+but should be given two or more times\&.
+\fBmysql\-test\-run\&.pl\fR
executes multiple test runs, using the options for each instance of
\fB\-\-combination\fR
-in successive runs. If
+in successive runs\&. If
\fB\-\-combination\fR
-is given only once, it has no effect. For test runs specific to a given test suite, an alternative to the use of
+is given only once, it has no effect\&. For test runs specific to a given test suite, an alternative to the use of
\fB\-\-combination\fR
is to create a
-\fIcombinations\fR
-file in the suite directory. The file should contain a section of options for each test run. See
-Section\ 4.9, \(lqPassing Options from \fBmysql\-test\-run.pl\fR to \fBmysqld\fR or \fBmysqltest\fR\(rq.
-.sp
-This option was added in MySQL 5.1.23/6.0.4.
-.TP 3n
-\(bu
+combinations
+file in the suite directory\&. The file should contain a section of options for each test run\&. See
+Section\ \&4.9, \(lqPassing Options from mysql-test-run.pl to mysqld or mysqltest\(rq\&.
+.sp
+This option was added in MySQL 5\&.1\&.23/6\&.0\&.4\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: comment option
+.\" comment option: mysql-test-run.pl
\fB\-\-comment=\fR\fB\fIstr\fR\fR
.sp
Write
\fIstr\fR
-to the output.
-.TP 3n
-\(bu
+to the output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: compress option
+.\" compress option: mysql-test-run.pl
\fB\-\-compress\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: cursor-protocol option
+.\" cursor-protocol option: mysql-test-run.pl
\fB\-\-cursor\-protocol\fR
.sp
Pass the
@@ -374,592 +546,1365 @@ Pass the
option to
\fBmysqltest\fR
(implies
-\fB\-\-ps\-protocol\fR).
-.TP 3n
-\(bu
+\fB\-\-ps\-protocol\fR)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ddd option
+.\" ddd option: mysql-test-run.pl
\fB\-\-ddd\fR
.sp
Start
\fBmysqld\fR
in the
\fBddd\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: debug option
+.\" debug option: mysql-test-run.pl
\fB\-\-debug\fR
.sp
-Dump trace output for all clients and servers.
-.TP 3n
-\(bu
+Dump trace output for all clients and servers\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: debugger option
+.\" debugger option: mysql-test-run.pl
\fB\-\-debugger\fR
.sp
Start
\fBmysqld\fR
-using the named debugger.
-.TP 3n
-\(bu
+using the named debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: debug-sync-timeout option
+.\" debug-sync-timeout option: mysql-test-run.pl
\fB\-\-debug\-sync\-timeout=\fR\fB\fIN\fR\fR
.sp
-Controls whether the Debug Sync facility for testing and debugging is enabled. The option value is a timeout in seconds. The default value is 300. A value of 0 disables Debug Sync. The value of this option also becomes the default timeout for individual synchronization points.
+Controls whether the Debug Sync facility for testing and debugging is enabled\&. The option value is a timeout in seconds\&. The default value is 300\&. A value of 0 disables Debug Sync\&. The value of this option also becomes the default timeout for individual synchronization points\&.
.sp
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
passes
\fB\-\-loose\-debug\-sync\-timeout=\fR\fB\fIN\fR\fR
to
-\fBmysqld\fR. The
+\fBmysqld\fR\&. The
\fB\-\-loose\fR
prefix is used so that
\fBmysqld\fR
-does not fail if Debug Sync is not compiled in.
+does not fail if Debug Sync is not compiled in\&.
.sp
For information about using the Debug Sync facility for testing, see
-Section\ 4.14, \(lqThread Synchronization in Test Cases\(rq.
+Section\ \&4.14, \(lqThread Synchronization in Test Cases\(rq\&.
+.sp
+This option was added in MySQL 5\&.4\&.4/6\&.0\&.6\&.
+.RE
.sp
-This option was added in MySQL 6.0.6.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: do-test option
+.\" do-test option: mysql-test-run.pl
\fB\-\-do\-test=\fR\fB\fIprefix\fR\fR
.sp
Run all test cases having a name that begins with the given
\fIprefix\fR
-value. This option provides a convenient way to run a family of similarly named tests.
+value\&. This option provides a convenient way to run a family of similarly named tests\&.
.sp
-As of MySQL 5.0.54/5.1.23/6.0.5, the argument for the
+As of MySQL 5\&.0\&.54/5\&.1\&.23/6\&.0\&.5, the argument for the
\fB\-\-do\-test\fR
-option allows more flexible specification of which tests to perform. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern. If the argument contains a lone period or does not contain any pattern metacharacters, it is interpreted the same way as previously and matches test names that begin with the argument value. For example,
+option allows more flexible specification of which tests to perform\&. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern\&. If the argument contains a lone period or does not contain any pattern metacharacters, it is interpreted the same way as previously and matches test names that begin with the argument value\&. For example,
\fB\-\-do\-test=testa\fR
matches tests that begin with
testa,
-\fB\-\-do\-test=main.testa\fR
+\fB\-\-do\-test=main\&.testa\fR
matches tests in the
main
test suite that begin with
testa, and
-\fB\-\-do\-test=main.*testa\fR
+\fB\-\-do\-test=main\&.*testa\fR
matches test names that contain
main
followed by
testa
-with anything in between. In the latter case, the pattern match is not anchored to the beginning of the test name, so it also matches names such as
-xmainytestz.
-.TP 3n
-\(bu
+with anything in between\&. In the latter case, the pattern match is not anchored to the beginning of the test name, so it also matches names such as
+xmainytestz\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: embedded-server option
+.\" embedded-server option: mysql-test-run.pl
\fB\-\-embedded\-server\fR
.sp
Use a version of
\fBmysqltest\fR
-built with the embedded server.
-.TP 3n
-\(bu
+built with the embedded server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: experimental option
+.\" experimental option: mysql-test-run.pl
\fB\-\-experimental=\fR\fB\fIfile_name\fR\fR
.sp
Specify a file that contains a list of test cases that should be displayed with the
[ exp\-fail ]
code rather than
[ fail ]
-if they fail. This option was added in MySQL 5.1.33/6.0.11.
-.TP 3n
-\(bu
+if they fail\&. This option was added in MySQL 5\&.1\&.33/6\&.0\&.11\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: extern option
+.\" extern option: mysql-test-run.pl
\fB\-\-extern\fR
.sp
-Use an already running server.
+Use an already running server\&.
.sp
Note: If a test case has an
-\fI.opt\fR
-file that requires the server to be restarted with specific options, the file will not be used. The test case likely will fail as a result.
-.TP 3n
-\(bu
+\&.opt
+file that requires the server to be restarted with specific options, the file will not be used\&. The test case likely will fail as a result\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: fast option
+.\" fast option: mysql-test-run.pl
\fB\-\-fast\fR
.sp
-Do not clean up from earlier test runs.
-.TP 3n
-\(bu
+Do not clean up from earlier test runs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: force option
+.\" force option: mysql-test-run.pl
\fB\-\-force\fR
.sp
Normally,
-\fBmysql\-test\-run.pl\fR
-exits if a test case fails.
+\fBmysql\-test\-run\&.pl\fR
+exits if a test case fails\&.
\fB\-\-force\fR
-causes execution to continue regardless of test case failure.
-.TP 3n
-\(bu
+causes execution to continue regardless of test case failure\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: gcov option
+.\" gcov option: mysql-test-run.pl
\fB\-\-gcov\fR
.sp
Run tests with the
\fBgcov\fR
-test coverage tool.
-.TP 3n
-\(bu
+test coverage tool\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: gdb option
+.\" gdb option: mysql-test-run.pl
\fB\-\-gdb\fR
.sp
Start
\fBmysqld\fR
in the
\fBgdb\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: gprof option
+.\" gprof option: mysql-test-run.pl
\fB\-\-gprof\fR
.sp
Run tests with the
\fBgprof\fR
-profiling tool.
-.TP 3n
-\(bu
+profiling tool\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: im-mysqld1-port option
+.\" im-mysqld1-port option: mysql-test-run.pl
\fB\-\-im\-mysqld1\-port\fR
.sp
TCP/IP port number to use for the first
-\fBmysqld\fR, controlled by Instance Manager.
-.TP 3n
-\(bu
+\fBmysqld\fR, controlled by Instance Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: im-mysqld2-port option
+.\" im-mysqld2-port option: mysql-test-run.pl
\fB\-\-im\-mysqld2\-port\fR
.sp
TCP/IP port number to use for the second
-\fBmysqld\fR, controlled by Instance Manager.
-.TP 3n
-\(bu
+\fBmysqld\fR, controlled by Instance Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: im-port option
+.\" im-port option: mysql-test-run.pl
\fB\-\-im\-port\fR
.sp
TCP/IP port number to use for
-\fBmysqld\fR, controlled by Instance Manager.
-.TP 3n
-\(bu
+\fBmysqld\fR, controlled by Instance Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: log-warnings option
+.\" log-warnings option: mysql-test-run.pl
\fB\-\-log\-warnings\fR
.sp
Pass the
\fB\-\-log\-warnings\fR
option to
-\fBmysqld\fR.
-.TP 3n
-\(bu
+\fBmysqld\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: manual-debug option
+.\" manual-debug option: mysql-test-run.pl
\fB\-\-manual\-debug\fR
.sp
-Use a server that has already been started by the user in a debugger.
-.TP 3n
-\(bu
+Use a server that has already been started by the user in a debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: manual-gdb option
+.\" manual-gdb option: mysql-test-run.pl
\fB\-\-manual\-gdb\fR
.sp
Use a server that has already been started by the user in the
\fBgdb\fR
-debugger.
-.TP 3n
-\(bu
+debugger\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: master-binary option
+.\" master-binary option: mysql-test-run.pl
\fB\-\-master\-binary=\fR\fB\fIpath\fR\fR
.sp
Specify the path of the
\fBmysqld\fR
-binary to use for master servers.
-.TP 3n
-\(bu
+binary to use for master servers\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: master_port option
+.\" master_port option: mysql-test-run.pl
\fB\-\-master_port=\fR\fB\fIport_num\fR\fR
.sp
-Specify the TCP/IP port number for the first master server to use. Observe that the option name has an underscore and not a dash.
-.TP 3n
-\(bu
+Specify the TCP/IP port number for the first master server to use\&. Observe that the option name has an underscore and not a dash\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: mem option
+.\" mem option: mysql-test-run.pl
\fB\-\-mem\fR
.sp
-Run the test suite in memory, using tmpfs or ramdisk. This can decrease test times significantly.
-\fBmysql\-test\-run.pl\fR
+Run the test suite in memory, using tmpfs or ramdisk\&. This can decrease test times significantly\&.
+\fBmysql\-test\-run\&.pl\fR
attempts to find a suitable location using a built\-in list of standard locations for tmpfs and puts the
-\fIvar\fR
-directory there. This option also affects placement of temporary files, which are created in
-\fIvar/tmp\fR.
+var
+directory there\&. This option also affects placement of temporary files, which are created in
+var/tmp\&.
.sp
The default list includes
-\fI/dev/shm\fR. You can also enable this option by setting the environment variable
-MTR_MEM[=\fIdir_name\fR]. If
+/dev/shm\&. You can also enable this option by setting the environment variable
+MTR_MEM[=\fIdir_name\fR]\&. If
\fIdir_name\fR
-is given, it is added to the beginning of the list of locations to search, so it takes precedence over any built\-in locations.
+is given, it is added to the beginning of the list of locations to search, so it takes precedence over any built\-in locations\&.
.sp
-This option was added in MySQL 4.1.22, 5.0.30, and 5.1.13.
-.TP 3n
-\(bu
+This option was added in MySQL 4\&.1\&.22, 5\&.0\&.30, and 5\&.1\&.13\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: mysqld option
+.\" mysqld option: mysql-test-run.pl
\fB\-\-mysqld=\fR\fB\fIvalue\fR\fR
.sp
Extra options to pass to
-\fBmysqld\fR. The value should consist of one or more comma\-separated
+\fBmysqld\fR\&. The value should consist of one or more comma\-separated
\fBmysqld\fR
-options. See
-Section\ 4.9, \(lqPassing Options from \fBmysql\-test\-run.pl\fR to \fBmysqld\fR or \fBmysqltest\fR\(rq.
-.TP 3n
-\(bu
+options\&. See
+Section\ \&4.9, \(lqPassing Options from mysql-test-run.pl to mysqld or mysqltest\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: mysqltest option
+.\" mysqltest option: mysql-test-run.pl
\fB\-\-mysqltest=\fR\fB\fIvalue\fR\fR
.sp
Extra options to pass to
-\fBmysqltest\fR. The value should consist of one or more comma\-separated
+\fBmysqltest\fR\&. The value should consist of one or more comma\-separated
\fBmysqltest\fR
-options. See
-Section\ 4.9, \(lqPassing Options from \fBmysql\-test\-run.pl\fR to \fBmysqld\fR or \fBmysqltest\fR\(rq. This option was added in MySQL 6.0.6.
-.TP 3n
-\(bu
+options\&. See
+Section\ \&4.9, \(lqPassing Options from mysql-test-run.pl to mysqld or mysqltest\(rq\&. This option was added in MySQL 6\&.0\&.6\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndb-connectstring option
+.\" ndb-connectstring option: mysql-test-run.pl
\fB\-\-ndb\-connectstring=\fR\fB\fIstr\fR\fR
.sp
Pass
\fB\-\-ndb\-connectstring=\fR\fB\fIstr\fR\fR
-to the master MySQL server. This option also prevents
-\fBmysql\-test\-run.pl\fR
-from starting a cluster. It is assumed that there is already a cluster running to which the server can connect with the given connectstring.
-.TP 3n
-\(bu
+to the master MySQL server\&. This option also prevents
+\fBmysql\-test\-run\&.pl\fR
+from starting a cluster\&. It is assumed that there is already a cluster running to which the server can connect with the given connectstring\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndb-connectstring-slave option
+.\" ndb-connectstring-slave option: mysql-test-run.pl
\fB\-\-ndb\-connectstring\-slave=\fR\fB\fIstr\fR\fR
.sp
Pass
\fB\-\-ndb\-connectstring=\fR\fB\fIstr\fR\fR
-to slave MySQL servers. This option also prevents
-\fBmysql\-test\-run.pl\fR
-from starting a cluster. It is assumed that there is already a cluster running to which the server can connect with the given connectstring.
-.TP 3n
-\(bu
+to slave MySQL servers\&. This option also prevents
+\fBmysql\-test\-run\&.pl\fR
+from starting a cluster\&. It is assumed that there is already a cluster running to which the server can connect with the given connectstring\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndb-extra-test option
+.\" ndb-extra-test option: mysql-test-run.pl
\fB\-\-ndb\-extra\-test\fR
.sp
-Unknown.
-.TP 3n
-\(bu
+Unknown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndbcluster-port option
+.\" ndbcluster-port option: mysql-test-run.pl
+.\" mysql-test-run.pl: ndbcluster_port option
+.\" ndbcluster_port option: mysql-test-run.pl
\fB\-\-ndbcluster\-port=\fR\fB\fIport_num\fR\fR,
\fB\-\-ndbcluster_port=\fR\fB\fIport_num\fR\fR
.sp
-Specify the TCP/IP port number that NDB Cluster should use.
-.TP 3n
-\(bu
+Specify the TCP/IP port number that NDB Cluster should use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ndbcluster-port-slave option
+.\" ndbcluster-port-slave option: mysql-test-run.pl
\fB\-\-ndbcluster\-port\-slave=\fR\fB\fIport_num\fR\fR
.sp
-Specify the TCP/IP port number that the slave NDB Cluster should use.
-.TP 3n
-\(bu
+Specify the TCP/IP port number that the slave NDB Cluster should use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: netware option
+.\" netware option: mysql-test-run.pl
\fB\-\-netware\fR
.sp
Run
\fBmysqld\fR
-with options needed on NetWare.
-.TP 3n
-\(bu
+with options needed on NetWare\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: notimer option
+.\" notimer option: mysql-test-run.pl
\fB\-\-notimer\fR
.sp
Cause
\fBmysqltest\fR
-not to generate a timing file.
-.TP 3n
-\(bu
+not to generate a timing file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ps-protocol option
+.\" ps-protocol option: mysql-test-run.pl
\fB\-\-ps\-protocol\fR
.sp
Pass the
\fB\-\-ps\-protocol\fR
option to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: record option
+.\" record option: mysql-test-run.pl
\fB\-\-record\fR
.sp
Pass the
\fB\-\-record\fR
option to
-\fBmysqltest\fR. This option requires a specific test case to be named on the command line.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&. This option requires a specific test case to be named on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: reorder option
+.\" reorder option: mysql-test-run.pl
\fB\-\-reorder\fR
.sp
-Reorder tests to minimize the number of server restarts needed.
-.TP 3n
-\(bu
+Reorder tests to minimize the number of server restarts needed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: report-features option
+.\" report-features option: mysql-test-run.pl
\fB\-\-report\-features\fR
.sp
Display the output of
SHOW ENGINES
and
-SHOW VARIABLES. This can be used to verify that binaries are built with all required features.
+SHOW VARIABLES\&. This can be used to verify that binaries are built with all required features\&.
.sp
-This option was added in MySQL 4.1.23, 5.0.30, and 5.1.14.
-.TP 3n
-\(bu
+This option was added in MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: script-debug option
+.\" script-debug option: mysql-test-run.pl
\fB\-\-script\-debug\fR
.sp
Enable debug output for
-\fBmysql\-test\-run.pl\fR
-itself.
-.TP 3n
-\(bu
+\fBmysql\-test\-run\&.pl\fR
+itself\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-im option
+.\" skip-im option: mysql-test-run.pl
\fB\-\-skip\-im\fR
.sp
-Do not start Instance Manager; skip Instance Manager test cases.
-.TP 3n
-\(bu
+Do not start Instance Manager; skip Instance Manager test cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-master-binlog option
+.\" skip-master-binlog option: mysql-test-run.pl
\fB\-\-skip\-master\-binlog\fR
.sp
-Do not enable master server binary logging.
-.TP 3n
-\(bu
+Do not enable master server binary logging\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-ndbcluster option
+.\" skip-ndbcluster option: mysql-test-run.pl
\fB\-\-skip\-ndbcluster\fR,
+.\" mysql-test-run.pl: skip-ndb option
+.\" skip-ndb option: mysql-test-run.pl
\fB\-\-skip\-ndb\fR
.sp
-Do not start NDB Cluster; skip Cluster test cases.
-.TP 3n
-\(bu
+Do not start NDB Cluster; skip Cluster test cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-ndbcluster-slave option
+.\" skip-ndbcluster-slave option: mysql-test-run.pl
\fB\-\-skip\-ndbcluster\-slave\fR,
+.\" mysql-test-run.pl: skip-ndb-slave option
+.\" skip-ndb-slave option: mysql-test-run.pl
\fB\-\-skip\-ndb\-slave\fR
.sp
-Do not start an NDB Cluster slave.
-.TP 3n
-\(bu
+Do not start an NDB Cluster slave\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-rpl option
+.\" skip-rpl option: mysql-test-run.pl
\fB\-\-skip\-rpl\fR
.sp
-Skip replication test cases.
-.TP 3n
-\(bu
+Skip replication test cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-slave-binlog option
+.\" skip-slave-binlog option: mysql-test-run.pl
\fB\-\-skip\-slave\-binlog\fR
.sp
-Do not enable master server binary logging.
-.TP 3n
-\(bu
+Do not enable master server binary logging\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-ssl option
+.\" skip-ssl option: mysql-test-run.pl
\fB\-\-skip\-ssl\fR
.sp
Do not start
\fBmysqld\fR
-with support for SSL connections.
-.TP 3n
-\(bu
+with support for SSL connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: skip-test option
+.\" skip-test option: mysql-test-run.pl
\fB\-\-skip\-test=\fR\fB\fIregex\fR\fR
.sp
-Specify a regular expression to be applied to test case names. Cases with names that match the expression are skipped. tests to skip.
+Specify a regular expression to be applied to test case names\&. Cases with names that match the expression are skipped\&. tests to skip\&.
.sp
-As of MySQL 5.0.54/5.1.23/6.0.5, the argument for the
+As of MySQL 5\&.0\&.54/5\&.1\&.23/6\&.0\&.5, the argument for the
\fB\-\-skip\-test\fR
-option allows more flexible specification of which tests to skip. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern. See the description of the
+option allows more flexible specification of which tests to skip\&. If the argument contains a pattern metacharacter other than a lone period, it is interpreted as a Perl regular expression and applies to test names that match the pattern\&. See the description of the
\fB\-\-do\-test\fR
-option for details.
-.TP 3n
-\(bu
+option for details\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-\-skip\-*\fR
.sp
\fB\-\-skip\-*\fR
options not otherwise recognized by
-\fBmysql\-test\-run.pl\fR
-are passed to the master server.
-.TP 3n
-\(bu
+\fBmysql\-test\-run\&.pl\fR
+are passed to the master server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: slave-binary option
+.\" slave-binary option: mysql-test-run.pl
\fB\-\-slave\-binary=\fR\fB\fIpath\fR\fR
.sp
Specify the path of the
\fBmysqld\fR
-binary to use for slave servers.
-.TP 3n
-\(bu
+binary to use for slave servers\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: slave_port option
+.\" slave_port option: mysql-test-run.pl
\fB\-\-slave_port=\fR\fB\fIport_num\fR\fR
.sp
-Specify the TCP/IP port number for the first master server to use. Observe that the option name has an underscore and not a dash.
-.TP 3n
-\(bu
+Specify the TCP/IP port number for the first master server to use\&. Observe that the option name has an underscore and not a dash\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: sleep option
+.\" sleep option: mysql-test-run.pl
\fB\-\-sleep=\fR\fB\fIN\fR\fR
.sp
Pass
\fB\-\-sleep=\fR\fB\fIN\fR\fR
to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: small-bench option
+.\" small-bench option: mysql-test-run.pl
\fB\-\-small\-bench\fR
.sp
Run the benchmarks with the
\fB\-\-small\-tests\fR
and
\fB\-\-small\-tables\fR
-options.
-.TP 3n
-\(bu
+options\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: socket option
+.\" socket option: mysql-test-run.pl
\fB\-\-socket=\fR\fB\fIfile_name\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: sp-protocol option
+.\" sp-protocol option: mysql-test-run.pl
\fB\-\-sp\-protocol\fR
.sp
Pass the
\fB\-\-sp\-protocol\fR
option to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: ssl option
+.\" ssl option: mysql-test-run.pl
\fB\-\-ssl\fR
.sp
If
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
is started with the
\fB\-\-ssl\fR
-option, it sets up a secure conection for all test cases. In this case, if
+option, it sets up a secure conection for all test cases\&. In this case, if
\fBmysqld\fR
does not support SSL,
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
exits with an error message:
-Couldn't find support for SSL
-.TP 3n
-\(bu
+Couldn\'t find support for SSL
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: start option
+.\" start option: mysql-test-run.pl
\fB\-\-start\fR
.sp
-Initialize and start servers with the startup settings for the first specified test case. For example:
+Initialize and start servers with the startup settings for the first specified test case\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcd mysql\-test\fR
-shell> \fB./mysql\-test\-run.pl \-\-start alias &\fR
+shell> \fB\&./mysql\-test\-run\&.pl \-\-start alias &\fR
.fi
+.if n \{\
+.RE
+.\}
+.sp
+This option was added in MySQL 5\&.1\&.32/6\&.0\&.11\&.
.RE
-This option was added in MySQL 5.1.32/6.0.11.
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: start-and-exit option
+.\" start-and-exit option: mysql-test-run.pl
\fB\-\-start\-and\-exit\fR
.sp
-Initialize and start servers with the startup settings for the specified test case or cases, if any, and then exit. You can use this option to start a server to which you can connect later. For example, after building a source distribution you can start a server and connect to it with the
+Initialize and start servers with the startup settings for the specified test case or cases, if any, and then exit\&. You can use this option to start a server to which you can connect later\&. For example, after building a source distribution you can start a server and connect to it with the
\fBmysql\fR
client like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcd mysql\-test\fR
-shell> \fB./mysql\-test\-run.pl \-\-start\-and\-exit\fR
-shell> \fB../mysql \-S ./var/tmp/master.sock \-h localhost \-u root\fR
+shell> \fB\&./mysql\-test\-run\&.pl \-\-start\-and\-exit\fR
+shell> \fB\&.\&./mysql \-S \&./var/tmp/master\&.sock \-h localhost \-u root\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: start-dirty option
+.\" start-dirty option: mysql-test-run.pl
\fB\-\-start\-dirty\fR
.sp
-Start servers (without initialization) for the specified test case or cases, if any, and then exit. You can then manually run the test cases.
-.TP 3n
-\(bu
+Start servers (without initialization) for the specified test case or cases, if any, and then exit\&. You can then manually run the test cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: start-from option
+.\" start-from option: mysql-test-run.pl
\fB\-\-start\-from=\fR\fB\fItest_name\fR\fR
.sp
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
sorts the list of names of the test cases to be run, and then begins with
-\fItest_name\fR.
-.TP 3n
-\(bu
+\fItest_name\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: strace-client option
+.\" strace-client option: mysql-test-run.pl
\fB\-\-strace\-client\fR
.sp
Create
\fBstrace\fR
output for
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress option
+.\" stress option: mysql-test-run.pl
\fB\-\-stress\fR
.sp
-Run the stress test. The other
+Run the stress test\&. The other
\fB\-\-stress\-\fR\fB\fIxxx\fR\fR
-options apply in this case.
-.TP 3n
-\(bu
+options apply in this case\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-init-file option
+.\" stress-init-file option: mysql-test-run.pl
\fB\-\-stress\-init\-file=\fR\fB\fIfile_name\fR\fR
.sp
\fIfile_name\fR
-is the location of the file that contains the list of tests. The default file is
-\fIstress_init.txt\fR
-in the test suite directory.
-.TP 3n
-\(bu
+is the location of the file that contains the list of tests\&. The default file is
+stress_init\&.txt
+in the test suite directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-loop-count option
+.\" stress-loop-count option: mysql-test-run.pl
\fB\-\-stress\-loop\-count=\fR\fB\fIN\fR\fR
.sp
-In sequential stress\-test mode, the number of loops to execute before exiting.
-.TP 3n
-\(bu
+In sequential stress\-test mode, the number of loops to execute before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-mode option
+.\" stress-mode option: mysql-test-run.pl
\fB\-\-stress\-mode=\fR\fB\fImode\fR\fR
.sp
-This option indicates the test order in stress\-test mode. The
+This option indicates the test order in stress\-test mode\&. The
\fImode\fR
value is either
random
to select tests in random order or
seq
-to run tests in each thread in the order specified in the test list file. The default mode is
-random.
-.TP 3n
-\(bu
+to run tests in each thread in the order specified in the test list file\&. The default mode is
+random\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-suite option
+.\" stress-suite option: mysql-test-run.pl
\fB\-\-stress\-suite=\fR\fB\fIsuite_name\fR\fR
.sp
-The name of the test suite to use for stress testing. The default suite name is
+The name of the test suite to use for stress testing\&. The default suite name is
main
(the regular test suite located in the
-\fImysql\-test\fR
-directory).
-.TP 3n
-\(bu
+mysql\-test
+directory)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-test-count option
+.\" stress-test-count option: mysql-test-run.pl
\fB\-\-stress\-test\-count=\fR\fB\fIN\fR\fR
.sp
-For stress testing, the number of tests to execute before exiting.
-.TP 3n
-\(bu
+For stress testing, the number of tests to execute before exiting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-test-duration option
+.\" stress-test-duration option: mysql-test-run.pl
\fB\-\-stress\-test\-duration=\fR\fB\fIN\fR\fR
.sp
-For stress testing, the duration of stress testing in seconds.
-.TP 3n
-\(bu
+For stress testing, the duration of stress testing in seconds\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-test-file option
+.\" stress-test-file option: mysql-test-run.pl
\fB\-\-stress\-test\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The file that contains the list of tests to use in stress testing. The tests should be named without the
-\fI.test\fR
-extension. The default file is
-\fIstress_tests.txt\fR
-in the test suite directory.
-.TP 3n
-\(bu
+The file that contains the list of tests to use in stress testing\&. The tests should be named without the
+\&.test
+extension\&. The default file is
+stress_tests\&.txt
+in the test suite directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: stress-threads option
+.\" stress-threads option: mysql-test-run.pl
\fB\-\-stress\-threads=\fR\fB\fIN\fR\fR
.sp
-The number of threads to use in stress testing. The default is 5.
-.TP 3n
-\(bu
+The number of threads to use in stress testing\&. The default is 5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: suite option
+.\" suite option: mysql-test-run.pl
\fB\-\-suite=\fR\fB\fIsuite_name\fR\fR
.sp
-Run the named test suite. The default name is
+Run the named test suite\&. The default name is
main
(the regular test suite located in the
-\fImysql\-test\fR
-directory).
-.TP 3n
-\(bu
+mysql\-test
+directory)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: suite-timeout option
+.\" suite-timeout option: mysql-test-run.pl
\fB\-\-suite\-timeout=\fR\fB\fIminutes\fR\fR
.sp
-Specify the maximum test suite runtime.
-.TP 3n
-\(bu
+Specify the maximum test suite runtime\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: testcase-timeout option
+.\" testcase-timeout option: mysql-test-run.pl
\fB\-\-testcase\-timeout\fR
.sp
-Specify the maximum test case runtime.
-.TP 3n
-\(bu
+Specify the maximum test case runtime\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: timer option
+.\" timer option: mysql-test-run.pl
\fB\-\-timer\fR
.sp
Cause
\fBmysqltest\fR
-to generate a timing file. The default file is named
-\fI./var/log/timer\fR.
-.TP 3n
-\(bu
+to generate a timing file\&. The default file is named
+\&./var/log/timer\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: tmpdir option
+.\" tmpdir option: mysql-test-run.pl
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR
.sp
-The directory where temporary file are stored. The default location is
-\fI./var/tmp\fR.
-.TP 3n
-\(bu
+The directory where temporary file are stored\&. The default location is
+\&./var/tmp\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: unified-diff option
+.\" unified-diff option: mysql-test-run.pl
\fB\-\-unified\-diff\fR,
\fB\-\-udiff\fR
.sp
-Use unified diff format when presenting differences between expected and actual test case results.
-.TP 3n
-\(bu
+Use unified diff format when presenting differences between expected and actual test case results\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: use-old-data option
+.\" use-old-data option: mysql-test-run.pl
\fB\-\-use\-old\-data\fR
.sp
-Do not install the test databases. (Use existing ones.)
-.TP 3n
-\(bu
+Do not install the test databases\&. (Use existing ones\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: user-test option
+.\" user-test option: mysql-test-run.pl
\fB\-\-user\-test=\fR\fB\fIval\fR\fR
.sp
-Unused.
-.TP 3n
-\(bu
+Unused\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: user option
+.\" user option: mysql-test-run.pl
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind option
+.\" valgrind option: mysql-test-run.pl
\fB\-\-valgrind\fR
.sp
Run
@@ -967,9 +1912,19 @@ Run
and
\fBmysqld\fR
with
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-all option
+.\" valgrind-all option: mysql-test-run.pl
\fB\-\-valgrind\-all\fR
.sp
Like
@@ -978,17 +1933,37 @@ Like
and
\fB\-\-show\-reachable\fR
options to
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-mysqltest option
+.\" valgrind-mysqltest option: mysql-test-run.pl
\fB\-\-valgrind\-mysqltest\fR
.sp
Run
\fBmysqltest\fR
with
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-mysqltest-all option
+.\" valgrind-mysqltest-all option: mysql-test-run.pl
\fB\-\-valgrind\-mysqltest\-all\fR
.sp
Like
@@ -997,92 +1972,217 @@ Like
and
\fB\-\-show\-reachable\fR
options to
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-options option
+.\" valgrind-options option: mysql-test-run.pl
\fB\-\-valgrind\-options=\fR\fB\fIstr\fR\fR
.sp
Extra options to pass to
-\fBvalgrind\fR.
-.TP 3n
-\(bu
+\fBvalgrind\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: valgrind-path option
+.\" valgrind-path option: mysql-test-run.pl
\fB\-\-valgrind\-path=\fR\fB\fIpath\fR\fR
.sp
Specify the path name to the
\fBvalgrind\fR
-executable.
-.TP 3n
-\(bu
+executable\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: vardir option
+.\" vardir option: mysql-test-run.pl
\fB\-\-vardir=\fR\fB\fIpath\fR\fR
.sp
-Specify the path where files generated during the test run are stored. The default location is
-\fI./var\fR.
-.TP 3n
-\(bu
+Specify the path where files generated during the test run are stored\&. The default location is
+\&./var\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: view-protocol option
+.\" view-protocol option: mysql-test-run.pl
\fB\-\-view\-protocol\fR
.sp
Pass the
\fB\-\-view\-protocol\fR
option to
-\fBmysqltest\fR.
-.TP 3n
-\(bu
+\fBmysqltest\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: vs-config option
+.\" vs-config option: mysql-test-run.pl
\fB\-\-vs\-config=\fR\fB\fIconfig_val\fR\fR
.sp
Specify the configuration used to build MySQL (for example,
\fB\-\-vs\-config=debug\fR
-\fB\-\-vs\-config=release\fR). This option is for Windows only. It is available as of MySQL 4.1.23, 5.0.30, and 5.1.14.
-.TP 3n
-\(bu
+\fB\-\-vs\-config=release\fR)\&. This option is for Windows only\&. It is available as of MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: wait-timeout option
+.\" wait-timeout option: mysql-test-run.pl
\fB\-\-wait\-timeout=\fR\fB\fIN\fR\fR
.sp
Unused?
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: warnings option
+.\" warnings option: mysql-test-run.pl
\fB\-\-warnings\fR
.sp
This option is a synonym for
-\fB\-\-log\-warnings\fR.
-.TP 3n
-\(bu
+\fB\-\-log\-warnings\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-ndbcluster option
+.\" with-ndbcluster option: mysql-test-run.pl
\fB\-\-with\-ndbcluster\fR
.sp
-Use NDB Cluster and enable test cases that require it.
-.TP 3n
-\(bu
+Use NDB Cluster and enable test cases that require it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-ndbcluster-all option
+.\" with-ndbcluster-all option: mysql-test-run.pl
\fB\-\-with\-ndbcluster\-all\fR
.sp
-Use NDB Cluster in all tests.
-.TP 3n
-\(bu
+Use NDB Cluster in all tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-ndbcluster-only option
+.\" with-ndbcluster-only option: mysql-test-run.pl
\fB\-\-with\-ndbcluster\-only\fR
.sp
Run only test cases that have
ndb
-in their name.
-.TP 3n
-\(bu
+in their name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-ndbcluster-slave option
+.\" with-ndbcluster-slave option: mysql-test-run.pl
\fB\-\-with\-ndbcluster\-slave\fR
.sp
-Unknown.
-.TP 3n
-\(bu
+Unknown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql-test-run.pl: with-openssl option
+.\" with-openssl option: mysql-test-run.pl
\fB\-\-with\-openssl\fR
.sp
This option is a synonym for
-\fB\-\-ssl\fR.
-.sp
+\fB\-\-ssl\fR\&.
.RE
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
\fBmysql\-test\-run\fR
supports the following options not supported by
-\fBmysql\-test\-run.pl\fR:
+\fBmysql\-test\-run\&.pl\fR:
\fB\-\-local\fR,
\fB\-\-local\-master\fR,
\fB\-\-ndb\-verbose\fR,
@@ -1092,10 +2192,10 @@ supports the following options not suppo
\fB\-\-old\-master\fR,
\fB\-\-purify\fR,
\fB\-\-use\-old\-data\fR,
-\fB\-\-valgrind\-mysqltest\-all\fR.
+\fB\-\-valgrind\-mysqltest\-all\fR\&.
.PP
Conversely,
-\fBmysql\-test\-run.pl\fR
+\fBmysql\-test\-run\&.pl\fR
supports the following options not supported by
\fBmysql\-test\-run\fR:
\fB\-\-benchdir\fR,
@@ -1123,23 +2223,29 @@ supports the following options not suppo
\fB\-\-unified\-diff\fR,,
\fB\-\-valgrind\-path\fR,
\fB\-\-vardir\fR,
-\fB\-\-view\-protocol\fR.
+\fB\-\-view\-protocol\fR\&.
+.sp .5v
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ Typical configure Options
-\%http://dev.mysql.com/doc/refman/5.1/en/configure\-options.html
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Typical \fBconfigure\fR Options
+.RS 4
+\%http://dev.mysql.com/doc/refman/5.1/en/configure-options.html
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql.1'
--- a/man/mysql.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql.1 2009-09-16 12:03:18 +0000
@@ -1,425 +1,851 @@
+'\" t
.\" Title: \fBmysql\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql
+.\" command-line tool
+.\" tools: command-line
+.\" scripts: SQL
+.\" SQL scripts
+.\" batch SQL files
.SH "NAME"
mysql \- the MySQL command\-line tool
.SH "SYNOPSIS"
-.HP 24
+.HP \w'\fBmysql\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIdb_name\fR\fR\ 'u
\fBmysql [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql\fR
is a simple SQL shell (with GNU
readline
-capabilities). It supports interactive and non\-interactive use. When used interactively, query results are presented in an ASCII\-table format. When used non\-interactively (for example, as a filter), the result is presented in tab\-separated format. The output format can be changed using command options.
+capabilities)\&. It supports interactive and noninteractive use\&. When used interactively, query results are presented in an ASCII\-table format\&. When used noninteractively (for example, as a filter), the result is presented in tab\-separated format\&. The output format can be changed using command options\&.
.PP
If you have problems due to insufficient memory for large result sets, use the
\fB\-\-quick\fR
-option. This forces
+option\&. This forces
\fBmysql\fR
-to retrieve results from the server a row at a time rather than retrieving the entire result set and buffering it in memory before displaying it. This is done by returning the result set using the
+to retrieve results from the server a row at a time rather than retrieving the entire result set and buffering it in memory before displaying it\&. This is done by returning the result set using the
mysql_use_result()
C API function in the client/server library rather than
-mysql_store_result().
+mysql_store_result()\&.
.PP
Using
\fBmysql\fR
-is very easy. Invoke it from the prompt of your command interpreter as follows:
+is very easy\&. Invoke it from the prompt of your command interpreter as follows:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Or:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \-\-user=\fR\fB\fIuser_name\fR\fR\fB \-\-password=\fR\fB\fIyour_password\fR\fR\fB \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Then type an SQL statement, end it with
\(lq;\(rq,
-\\g, or
-\\G
-and press Enter.
+\eg, or
+\eG
+and press Enter\&.
.PP
-As of MySQL 5.1.10, typing Control\-C causes
+As of MySQL 5\&.1\&.10, typing Control\-C causes
\fBmysql\fR
-to attempt to kill the current statement. If this cannot be done, or Control\-C is typed again before the statement is killed,
+to attempt to kill the current statement\&. If this cannot be done, or Control\-C is typed again before the statement is killed,
\fBmysql\fR
-exits. Previously, Control\-C caused
+exits\&. Previously, Control\-C caused
\fBmysql\fR
-to exit in all cases.
+to exit in all cases\&.
.PP
You can execute SQL statements in a script file (batch file) like this:
.sp
-.RS 3n
-.nf
-shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fIscript.sql\fR\fR\fB > \fR\fB\fIoutput.tab\fR\fR
-.fi
-.RE
-.SH "\fBMYSQL\fR OPTIONS"
-.PP
-\fBmysql\fR
-supports the following options:
-.TP 3n
-\(bu
+.if n \{\
+.RS 4
+.\}
+.nf
+shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fIscript\&.sql\fR\fR\fB > \fR\fB\fIoutput\&.tab\fR\fR
+.fi
+.if n \{\
+.RE
+.\}
+.SH "MYSQL OPTIONS"
+.\" mysql command options
+.\" command options: mysql
+.\" options: command-line: mysql
+.\" startup parameters: mysql
+.PP
+\fBmysql\fR
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: help option
+.\" help option: mysql
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: auto-rehash option
+.\" auto-rehash option: mysql
\fB\-\-auto\-rehash\fR
.sp
-Enable automatic rehashing. This option is on by default, which enables database, table, and column name completion. Use
+Enable automatic rehashing\&. This option is on by default, which enables database, table, and column name completion\&. Use
\fB\-\-disable\-auto\-rehash\fR
-to disable rehashing. That causes
+to disable rehashing\&. That causes
\fBmysql\fR
to start faster, but you must issue the
rehash
-command if you want to use name completion.
+command if you want to use name completion\&.
.sp
-To complete a name, enter the first part and press Tab. If the name is unambiguous,
+To complete a name, enter the first part and press Tab\&. If the name is unambiguous,
\fBmysql\fR
-completes it. Otherwise, you can press Tab again to see the possible names that begin with what you have typed so far. Completion does not occur if there is no default database.
-.TP 3n
-\(bu
+completes it\&. Otherwise, you can press Tab again to see the possible names that begin with what you have typed so far\&. Completion does not occur if there is no default database\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: batch option
+.\" batch option: mysql
\fB\-\-batch\fR,
\fB\-B\fR
.sp
-Print results using tab as the column separator, with each row on a new line. With this option,
+Print results using tab as the column separator, with each row on a new line\&. With this option,
\fBmysql\fR
-does not use the history file.
+does not use the history file\&.
.sp
-Batch mode results in non\-tabular output format and escaping of special characters. Escaping may be disabled by using raw mode; see the description for the
+Batch mode results in nontabular output format and escaping of special characters\&. Escaping may be disabled by using raw mode; see the description for the
\fB\-\-raw\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: character-sets-dir option
+.\" character-sets-dir option: mysql
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: column-names option
+.\" column-names option: mysql
\fB\-\-column\-names\fR
.sp
-Write column names in results.
-.TP 3n
-\(bu
+Write column names in results\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: column-type-info option
+.\" column-type-info option: mysql
\fB\-\-column\-type\-info\fR,
\fB\-m\fR
.sp
-Display result set metadata. This option was added in MySQL 5.1.14. (Before that, use
-\fB\-\-debug\-info\fR.) The
+Display result set metadata\&. This option was added in MySQL 5\&.1\&.14\&. (Before that, use
+\fB\-\-debug\-info\fR\&.) The
\fB\-m\fR
-short option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+short option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: comments option
+.\" comments option: mysql
\fB\-\-comments\fR,
\fB\-c\fR
.sp
-Whether to preserve comments in statements sent to the server. The default is \-\-skip\-comments (discard comments), enable with \-\-comments (preserve comments). This option was added in MySQL 5.1.23.
-.TP 3n
-\(bu
+Whether to preserve comments in statements sent to the server\&. The default is \-\-skip\-comments (discard comments), enable with \-\-comments (preserve comments)\&. This option was added in MySQL 5\&.1\&.23\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: compress option
+.\" compress option: mysql
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: database option
+.\" database option: mysql
\fB\-\-database=\fR\fB\fIdb_name\fR\fR,
\fB\-D \fR\fB\fIdb_name\fR\fR
.sp
-The database to use. This is useful primarily in an option file.
-.TP 3n
-\(bu
+The database to use\&. This is useful primarily in an option file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: debug option
+.\" debug option: mysql
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'. The default is
-\'d:t:o,/tmp/mysql.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/mysql\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: debug-check option
+.\" debug-check option: mysql
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: debug-info option
+.\" debug-info option: mysql
\fB\-\-debug\-info\fR,
\fB\-T\fR
.sp
-Before MySQL 5.1.14, this option prints debugging information and memory and CPU usage statistics when the program exits, and also causes display of result set metadata during execution. As of MySQL 5.1.14, use
+Before MySQL 5\&.1\&.14, this option prints debugging information and memory and CPU usage statistics when the program exits, and also causes display of result set metadata during execution\&. As of MySQL 5\&.1\&.14, use
\fB\-\-column\-type\-info\fR
-to display result set metadata.
-.TP 3n
-\(bu
+to display result set metadata\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: default-character-set option
+.\" default-character-set option: mysql
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: delimiter option
+.\" delimiter option: mysql
\fB\-\-delimiter=\fR\fB\fIstr\fR\fR
.sp
-Set the statement delimiter. The default is the semicolon character (\(lq;\(rq).
-.TP 3n
-\(bu
+Set the statement delimiter\&. The default is the semicolon character (\(lq;\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: disable named commands
+.\" disable named command: mysql
\fB\-\-disable\-named\-commands\fR
.sp
-Disable named commands. Use the
-\\*
-form only, or use named commands only at the beginning of a line ending with a semicolon (\(lq;\(rq).
+Disable named commands\&. Use the
+\e*
+form only, or use named commands only at the beginning of a line ending with a semicolon (\(lq;\(rq)\&.
\fBmysql\fR
starts with this option
\fIenabled\fR
-by default. However, even with this option, long\-format commands still work from the first line. See
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq.
-.TP 3n
-\(bu
+by default\&. However, even with this option, long\-format commands still work from the first line\&. See
+the section called \(lqMYSQL COMMANDS\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: execute option
+.\" execute option: mysql
\fB\-\-execute=\fR\fB\fIstatement\fR\fR,
\fB\-e \fR\fB\fIstatement\fR\fR
.sp
-Execute the statement and quit. The default output format is like that produced with
-\fB\-\-batch\fR. See
-Section\ 4.2.3.1, \(lqUsing Options on the Command Line\(rq, for some examples.
-.TP 3n
-\(bu
+Execute the statement and quit\&. The default output format is like that produced with
+\fB\-\-batch\fR\&. See
+Section\ \&4.2.3.1, \(lqUsing Options on the Command Line\(rq, for some examples\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: force option
+.\" force option: mysql
\fB\-\-force\fR,
\fB\-f\fR
.sp
-Continue even if an SQL error occurs.
-.TP 3n
-\(bu
+Continue even if an SQL error occurs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: host option
+.\" host option: mysql
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: html option
+.\" html option: mysql
\fB\-\-html\fR,
\fB\-H\fR
.sp
-Produce HTML output.
-.TP 3n
-\(bu
+Produce HTML output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: ignore-spaces option
+.\" ignore-spaces option: mysql
\fB\-\-ignore\-spaces\fR,
\fB\-i\fR
.sp
-Ignore spaces after function names. The effect of this is described in the discussion for the
+Ignore spaces after function names\&. The effect of this is described in the discussion for the
IGNORE_SPACE
SQL mode (see
-Section\ 5.1.7, \(lqServer SQL Modes\(rq).
-.TP 3n
-\(bu
+Section\ \&5.1.8, \(lqServer SQL Modes\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: line-numbers option
+.\" line-numbers option: mysql
\fB\-\-line\-numbers\fR
.sp
-Write line numbers for errors. Disable this with
-\fB\-\-skip\-line\-numbers\fR.
-.TP 3n
-\(bu
+Write line numbers for errors\&. Disable this with
+\fB\-\-skip\-line\-numbers\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: local-infile option
+.\" local-infile option: mysql
\fB\-\-local\-infile[={0|1}]\fR
.sp
Enable or disable
LOCAL
capability for
-LOAD DATA INFILE. With no value, the option enables
-LOCAL. The option may be given as
+LOAD DATA INFILE\&. With no value, the option enables
+LOCAL\&. The option may be given as
\fB\-\-local\-infile=0\fR
or
\fB\-\-local\-infile=1\fR
to explicitly disable or enable
-LOCAL. Enabling
+LOCAL\&. Enabling
LOCAL
-has no effect if the server does not also support it.
-.TP 3n
-\(bu
+has no effect if the server does not also support it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: named-commands option
+.\" named-commands option: mysql
\fB\-\-named\-commands\fR,
\fB\-G\fR
.sp
Enable named
\fBmysql\fR
-commands. Long\-format commands are allowed, not just short\-format commands. For example,
+commands\&. Long\-format commands are allowed, not just short\-format commands\&. For example,
quit
and
-\\q
-both are recognized. Use
+\eq
+both are recognized\&. Use
\fB\-\-skip\-named\-commands\fR
-to disable named commands. See
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq.
-.TP 3n
-\(bu
+to disable named commands\&. See
+the section called \(lqMYSQL COMMANDS\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-auto-rehash option
+.\" no-auto-rehash option: mysql
\fB\-\-no\-auto\-rehash\fR,
\fB\-A\fR
.sp
Deprecated form of
-\fB\-skip\-auto\-rehash\fR. Use
+\fB\-skip\-auto\-rehash\fR\&. Use
\fB\-\-disable\-auto\-rehash\fR
-instead. See the description for
-\fB\-\-auto\-rehash\fR.
-.TP 3n
-\(bu
+instead\&. See the description for
+\fB\-\-auto\-rehash\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-beep option
+.\" no-beep option: mysql
\fB\-\-no\-beep\fR,
\fB\-b\fR
.sp
-Do not beep when errors occur.
-.TP 3n
-\(bu
+Do not beep when errors occur\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-named-commands option
+.\" no-named-commands option: mysql
\fB\-\-no\-named\-commands\fR,
\fB\-g\fR
.sp
Deprecated, use
\fB\-\-disable\-named\-commands\fR
-instead.
-.TP 3n
-\(bu
+instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-pager option
+.\" no-pager option: mysql
\fB\-\-no\-pager\fR
.sp
Deprecated form of
-\fB\-\-skip\-pager\fR. See the
+\fB\-\-skip\-pager\fR\&. See the
\fB\-\-pager\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: no-tee option
+.\" no-tee option: mysql
\fB\-\-no\-tee\fR
.sp
-Do not copy output to a file.
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq, discusses tee files further.
-.TP 3n
-\(bu
+Do not copy output to a file\&.
+the section called \(lqMYSQL COMMANDS\(rq, discusses tee files further\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: one-database option
+.\" one-database option: mysql
\fB\-\-one\-database\fR,
\fB\-o\fR
.sp
-Ignore statements except those for the default database named on the command line. This is useful for skipping updates to other databases in the binary log.
-.TP 3n
-\(bu
+Ignore statements except those for the default database named on the command line\&. This is useful for skipping updates to other databases in the binary log\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: pager option
+.\" pager option: mysql
\fB\-\-pager[=\fR\fB\fIcommand\fR\fR\fB]\fR
.sp
-Use the given command for paging query output. If the command is omitted, the default pager is the value of your
+Use the given command for paging query output\&. If the command is omitted, the default pager is the value of your
PAGER
-environment variable. Valid pagers are
+environment variable\&. Valid pagers are
\fBless\fR,
\fBmore\fR,
-\fBcat [> filename]\fR, and so forth. This option works only on Unix. It does not work in batch mode. To disable paging, use
-\fB\-\-skip\-pager\fR.
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq, discusses output paging further.
-.TP 3n
-\(bu
+\fBcat [> filename]\fR, and so forth\&. This option works only on Unix\&. It does not work in batch mode\&. To disable paging, use
+\fB\-\-skip\-pager\fR\&.
+the section called \(lqMYSQL COMMANDS\(rq, discusses output paging further\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: password option
+.\" password option: mysql
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: pipe option
+.\" pipe option: mysql
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: port option
+.\" port option: mysql
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: prompt option
+.\" prompt option: mysql
\fB\-\-prompt=\fR\fB\fIformat_str\fR\fR
.sp
-Set the prompt to the specified format. The default is
-mysql>. The special sequences that the prompt can contain are described in
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq.
-.TP 3n
-\(bu
+Set the prompt to the specified format\&. The default is
+mysql>\&. The special sequences that the prompt can contain are described in
+the section called \(lqMYSQL COMMANDS\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: protocol option
+.\" protocol option: mysql
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: quick option
+.\" quick option: mysql
\fB\-\-quick\fR,
\fB\-q\fR
.sp
-Do not cache each query result, print each row as it is received. This may slow down the server if the output is suspended. With this option,
+Do not cache each query result, print each row as it is received\&. This may slow down the server if the output is suspended\&. With this option,
\fBmysql\fR
-does not use the history file.
-.TP 3n
-\(bu
+does not use the history file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: raw option
+.\" raw option: mysql
\fB\-\-raw\fR,
\fB\-r\fR
.sp
For tabular output, the
\(lqboxing\(rq
-around columns enables one column value to be distinguished from another. For non\-tabular output (such as is produced in batch mode or when the
+around columns enables one column value to be distinguished from another\&. For nontabular output (such as is produced in batch mode or when the
\fB\-\-batch\fR
or
\fB\-\-silent\fR
-option is given), special characters are escaped in the output so they can be identified easily. Newline, tab,
+option is given), special characters are escaped in the output so they can be identified easily\&. Newline, tab,
NUL, and backslash are written as
-\\n,
-\\t,
-\\0, and
-\\\\. The
+\en,
+\et,
+\e0, and
+\e\e\&. The
\fB\-\-raw\fR
-option disables this character escaping.
+option disables this character escaping\&.
.sp
-The following example demonstrates tabular versus non\-tabular output and the use of raw mode to disable escaping:
+The following example demonstrates tabular versus nontabular output and the use of raw mode to disable escaping:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
% \fBmysql\fR
mysql> SELECT CHAR(92);
+\-\-\-\-\-\-\-\-\-\-+
| CHAR(92) |
+\-\-\-\-\-\-\-\-\-\-+
-| \\ |
+| \e |
+\-\-\-\-\-\-\-\-\-\-+
% \fBmysql \-s\fR
mysql> SELECT CHAR(92);
CHAR(92)
-\\\\
+\e\e
% \fBmysql \-s \-r\fR
mysql> SELECT CHAR(92);
CHAR(92)
-\\
+\e
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: reconnect option
+.\" reconnect option: mysql
\fB\-\-reconnect\fR
.sp
-If the connection to the server is lost, automatically try to reconnect. A single reconnect attempt is made each time the connection is lost. To suppress reconnection behavior, use
-\fB\-\-skip\-reconnect\fR.
-.TP 3n
-\(bu
+If the connection to the server is lost, automatically try to reconnect\&. A single reconnect attempt is made each time the connection is lost\&. To suppress reconnection behavior, use
+\fB\-\-skip\-reconnect\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: safe-updates option
+.\" safe-updates option: mysql
+.\" mysql: i-am-a-dummy option
+.\" i-am-a-dummy option: mysql
\fB\-\-safe\-updates\fR,
\fB\-\-i\-am\-a\-dummy\fR,
\fB\-U\fR
@@ -428,160 +854,345 @@ Allow only those
UPDATE
and
DELETE
-statements that specify which rows to modify by using key values. If you have set this option in an option file, you can override it by using
+statements that specify which rows to modify by using key values\&. If you have set this option in an option file, you can override it by using
\fB\-\-safe\-updates\fR
-on the command line. See
-the section called \(lq\fBMYSQL\fR TIPS\(rq, for more information about this option.
-.TP 3n
-\(bu
+on the command line\&. See
+the section called \(lqMYSQL TIPS\(rq, for more information about this option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: secure-auth option
+.\" secure-auth option: mysql
\fB\-\-secure\-auth\fR
.sp
-Do not send passwords to the server in old (pre\-4.1.1) format. This prevents connections except for servers that use the newer password format.
-.TP 3n
-\(bu
+Do not send passwords to the server in old (pre\-4\&.1\&.1) format\&. This prevents connections except for servers that use the newer password format\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: show-warnings option
+.\" show-warnings option: mysql
\fB\-\-show\-warnings\fR
.sp
-Cause warnings to be shown after each statement if there are any. This option applies to interactive and batch mode.
-.TP 3n
-\(bu
+Cause warnings to be shown after each statement if there are any\&. This option applies to interactive and batch mode\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: sigint-ignore option
+.\" sigint-ignore option: mysql
\fB\-\-sigint\-ignore\fR
.sp
Ignore
SIGINT
-signals (typically the result of typing Control\-C).
-.TP 3n
-\(bu
+signals (typically the result of typing Control\-C)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: silent option
+.\" silent option: mysql
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Produce less output. This option can be given multiple times to produce less and less output.
+Silent mode\&. Produce less output\&. This option can be given multiple times to produce less and less output\&.
.sp
-This option results in non\-tabular output format and escaping of special characters. Escaping may be disabled by using raw mode; see the description for the
+This option results in nontabular output format and escaping of special characters\&. Escaping may be disabled by using raw mode; see the description for the
\fB\-\-raw\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: skip-column-names option
+.\" skip-column-names option: mysql
\fB\-\-skip\-column\-names\fR,
\fB\-N\fR
.sp
-Do not write column names in results. The short format,
+Do not write column names in results\&. The short format,
\fB\-N\fR
-is deprecated, use the long format instead.
-.TP 3n
-\(bu
+is deprecated, use the long format instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: skip-line-numbers option
+.\" skip-line-numbers option: mysql
\fB\-\-skip\-line\-numbers\fR,
\fB\-L\fR
.sp
-Do not write line numbers for errors. Useful when you want to compare result files that include error messages. The short format,
+Do not write line numbers for errors\&. Useful when you want to compare result files that include error messages\&. The short format,
\fB\-L\fR
-is deprecated, use the long format instead.
-.TP 3n
-\(bu
+is deprecated, use the long format instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: socket option
+.\" socket option: mysql
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: SSL options
+.\" SSL options: mysql
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: table option
+.\" table option: mysql
\fB\-\-table\fR,
\fB\-t\fR
.sp
-Display output in table format. This is the default for interactive use, but can be used to produce table output in batch mode.
-.TP 3n
-\(bu
+Display output in table format\&. This is the default for interactive use, but can be used to produce table output in batch mode\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: tee option
+.\" tee option: mysql
\fB\-\-tee=\fR\fB\fIfile_name\fR\fR
.sp
-Append a copy of output to the given file. This option does not work in batch mode.
-the section called \(lq\fBMYSQL\fR COMMANDS\(rq, discusses tee files further.
-.TP 3n
-\(bu
+Append a copy of output to the given file\&. This option does not work in batch mode\&.
+the section called \(lqMYSQL COMMANDS\(rq, discusses tee files further\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: unbuffered option
+.\" unbuffered option: mysql
\fB\-\-unbuffered\fR,
\fB\-n\fR
.sp
-Flush the buffer after each query.
-.TP 3n
-\(bu
+Flush the buffer after each query\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: user option
+.\" user option: mysql
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: verbose option
+.\" verbose option: mysql
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Produce more output about what the program does. This option can be given multiple times to produce more and more output. (For example,
+Verbose mode\&. Produce more output about what the program does\&. This option can be given multiple times to produce more and more output\&. (For example,
\fB\-v \-v \-v\fR
-produces table output format even in batch mode.)
-.TP 3n
-\(bu
+produces table output format even in batch mode\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: version option
+.\" version option: mysql
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: vertical option
+.\" vertical option: mysql
\fB\-\-vertical\fR,
\fB\-E\fR
.sp
-Print query output rows vertically (one line per column value). Without this option, you can specify vertical output for individual statements by terminating them with
-\\G.
-.TP 3n
-\(bu
+Print query output rows vertically (one line per column value)\&. Without this option, you can specify vertical output for individual statements by terminating them with
+\eG\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: wait option
+.\" wait option: mysql
\fB\-\-wait\fR,
\fB\-w\fR
.sp
-If the connection cannot be established, wait and retry instead of aborting.
-.TP 3n
-\(bu
+If the connection cannot be established, wait and retry instead of aborting\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: xml option
+.\" xml option: mysql
\fB\-\-xml\fR,
\fB\-X\fR
.sp
-Produce XML output.
+Produce XML output\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
-Prior to MySQL 5.1.12, there was no differentiation in the output when using this option between columns containing the
+.ps -1
+.br
+Prior to MySQL 5\&.1\&.12, there was no differentiation in the output when using this option between columns containing the
NULL
value and columns containing the string literal
-\'NULL'; both were represented as
+\'NULL\'; both were represented as
+.sp .5v
+.RE
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
<field name="\fIcolumn_name\fR">NULL</field>
.fi
+.if n \{\
.RE
-Beginning with MySQL 5.1.12, the output when
+.\}
+.sp
+Beginning with MySQL 5\&.1\&.12, the output when
\fB\-\-xml\fR
is used with
\fBmysql\fR
matches that of
-\fBmysqldump \fR\fB\fB\-\-xml\fR\fR. See
+\fBmysqldump \fR\fB\fB\-\-xml\fR\fR\&. See
\fBmysqldump\fR(1)
-for details.
+for details\&.
.sp
-Beginning with MySQL 5.1.18, the XML output also uses an XML namespace, as shown here:
+Beginning with MySQL 5\&.1\&.18, the XML output also uses an XML namespace, as shown here:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-\-xml \-uroot \-e "SHOW VARIABLES LIKE 'version%'"\fR
-<?xml version="1.0"?>
-<resultset statement="SHOW VARIABLES LIKE 'version%'" xmlns:xsi="http://www.w3.org/2001/XMLSchema\-instance">
+shell> \fBmysql \-\-xml \-uroot \-e "SHOW VARIABLES LIKE \'version%\'"\fR
+<?xml version="1\&.0"?>
+<resultset statement="SHOW VARIABLES LIKE \'version%\'" xmlns:xsi="http://www\&.w3\&.org/2001/XMLSchema\-instance">
<row>
<field name="Variable_name">version</field>
-<field name="Value">5.0.40\-debug</field>
+<field name="Value">5\&.0\&.40\-debug</field>
</row>
<row>
<field name="Variable_name">version_comment</field>
@@ -597,440 +1208,776 @@ shell> \fBmysql \-\-xml \-uroot \-e "SHO
</row>
</resultset>
.fi
+.if n \{\
.RE
+.\}
.sp
(See
-[1]\&\fIBug#25946\fR.)
-.sp
+\m[blue]\fBBug#25946\fR\m[]\&\s-2\u[1]\d\s+2\&.)
.RE
.PP
You can also set the following variables by using
-\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR. The
+\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR\&. The
\fB\-\-set\-variable\fR
-format is deprecated.
-.TP 3n
-\(bu
+format is deprecated\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" timeout: connect_timeout variable
+.\" connect_timeout variable
connect_timeout
.sp
-The number of seconds before connection timeout. (Default value is
-0.)
-.TP 3n
-\(bu
+The number of seconds before connection timeout\&. (Default value is
+0\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" max_allowed_packet variable
max_allowed_packet
.sp
-The maximum packet length to send to or receive from the server. (Default value is 16MB.)
-.TP 3n
-\(bu
+The maximum packet length to send to or receive from the server\&. (Default value is 16MB\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" max_join_size variable
max_join_size
.sp
The automatic limit for rows in a join when using
-\fB\-\-safe\-updates\fR. (Default value is 1,000,000.)
-.TP 3n
-\(bu
+\fB\-\-safe\-updates\fR\&. (Default value is 1,000,000\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" net_buffer_length variable
net_buffer_length
.sp
-The buffer size for TCP/IP and socket communication. (Default value is 16KB.)
-.TP 3n
-\(bu
+The buffer size for TCP/IP and socket communication\&. (Default value is 16KB\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" select_limit variable
select_limit
.sp
The automatic limit for
SELECT
statements when using
-\fB\-\-safe\-updates\fR. (Default value is 1,000.)
-.sp
+\fB\-\-safe\-updates\fR\&. (Default value is 1,000\&.)
.RE
+.\" MYSQL_HISTFILE environment variable
+.\" environment variable: MYSQL_HISTFILE
+.\" HOME environment variable
+.\" environment variable: HOME
+.\" mysql history file
+.\" command-line history: mysql
+.\" .mysql_history file
.PP
On Unix, the
\fBmysql\fR
-client writes a record of executed statements to a history file. By default, this file is named
-\fI.mysql_history\fR
-and is created in your home directory. To specify a different file, set the value of the
+client writes a record of executed statements to a history file\&. By default, this file is named
+\&.mysql_history
+and is created in your home directory\&. To specify a different file, set the value of the
MYSQL_HISTFILE
-environment variable.
+environment variable\&.
.PP
The
-\fI.mysql_history\fR
-should be protected with a restrictive access mode because sensitive information might be written to it, such as the text of SQL statements that contain passwords. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
+\&.mysql_history
+should be protected with a restrictive access mode because sensitive information might be written to it, such as the text of SQL statements that contain passwords\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
.PP
If you do not want to maintain a history file, first remove
-\fI.mysql_history\fR
+\&.mysql_history
if it exists, and then use either of the following techniques:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Set the
MYSQL_HISTFILE
variable to
-\fI/dev/null\fR. To cause this setting to take effect each time you log in, put the setting in one of your shell's startup files.
-.TP 3n
-\(bu
+/dev/null\&. To cause this setting to take effect each time you log in, put the setting in one of your shell\'s startup files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Create
-\fI.mysql_history\fR
+\&.mysql_history
as a symbolic link to
-\fI/dev/null\fR:
+/dev/null:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBln \-s /dev/null $HOME/.mysql_history\fR
+shell> \fBln \-s /dev/null $HOME/\&.mysql_history\fR
.fi
+.if n \{\
.RE
-You need do this only once.
-.SH "\fBMYSQL\fR COMMANDS"
+.\}
+.sp
+You need do this only once\&.
+.RE
+.SH "MYSQL COMMANDS"
.PP
\fBmysql\fR
-sends each SQL statement that you issue to the server to be executed. There is also a set of commands that
+sends each SQL statement that you issue to the server to be executed\&. There is also a set of commands that
\fBmysql\fR
-itself interprets. For a list of these commands, type
+itself interprets\&. For a list of these commands, type
help
or
-\\h
+\eh
at the
mysql>
prompt:
+.\" mysql commands: list of
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp\fR
List of all MySQL commands:
-Note that all text commands must be first on line and end with ';'
-? (\\?) Synonym for `help'.
-clear (\\c) Clear command.
-connect (\\r) Reconnect to the server. Optional arguments are db and host.
-delimiter (\\d) Set statement delimiter.
-edit (\\e) Edit command with $EDITOR.
-ego (\\G) Send command to mysql server, display result vertically.
-exit (\\q) Exit mysql. Same as quit.
-go (\\g) Send command to mysql server.
-help (\\h) Display this help.
-nopager (\\n) Disable pager, print to stdout.
-notee (\\t) Don't write into outfile.
-pager (\\P) Set PAGER [to_pager]. Print the query results via PAGER.
-print (\\p) Print current command.
-prompt (\\R) Change your mysql prompt.
-quit (\\q) Quit mysql.
-rehash (\\#) Rebuild completion hash.
-source (\\.) Execute an SQL script file. Takes a file name as an argument.
-status (\\s) Get status information from the server.
-system (\\!) Execute a system shell command.
-tee (\\T) Set outfile [to_outfile]. Append everything into given
- outfile.
-use (\\u) Use another database. Takes database name as argument.
-charset (\\C) Switch to another charset. Might be needed for processing
- binlog with multi\-byte charsets.
-warnings (\\W) Show warnings after every statement.
-nowarning (\\w) Don't show warnings after every statement.
-For server side help, type 'help contents'
+Note that all text commands must be first on line and end with \';\'
+? (\e?) Synonym for `help\'\&.
+clear (\ec) Clear command\&.
+connect (\er) Reconnect to the server\&. Optional arguments are db and host\&.
+delimiter (\ed) Set statement delimiter\&.
+edit (\ee) Edit command with $EDITOR\&.
+ego (\eG) Send command to mysql server, display result vertically\&.
+exit (\eq) Exit mysql\&. Same as quit\&.
+go (\eg) Send command to mysql server\&.
+help (\eh) Display this help\&.
+nopager (\en) Disable pager, print to stdout\&.
+notee (\et) Don\'t write into outfile\&.
+pager (\eP) Set PAGER [to_pager]\&. Print the query results via PAGER\&.
+print (\ep) Print current command\&.
+prompt (\eR) Change your mysql prompt\&.
+quit (\eq) Quit mysql\&.
+rehash (\e#) Rebuild completion hash\&.
+source (\e\&.) Execute an SQL script file\&. Takes a file name as an argument\&.
+status (\es) Get status information from the server\&.
+system (\e!) Execute a system shell command\&.
+tee (\eT) Set outfile [to_outfile]\&. Append everything into given
+ outfile\&.
+use (\eu) Use another database\&. Takes database name as argument\&.
+charset (\eC) Switch to another charset\&. Might be needed for processing
+ binlog with multi\-byte charsets\&.
+warnings (\eW) Show warnings after every statement\&.
+nowarning (\ew) Don\'t show warnings after every statement\&.
+For server side help, type \'help contents\'
.fi
+.if n \{\
.RE
+.\}
.PP
-Each command has both a long and short form. The long form is not case sensitive; the short form is. The long form can be followed by an optional semicolon terminator, but the short form should not.
+Each command has both a long and short form\&. The long form is not case sensitive; the short form is\&. The long form can be followed by an optional semicolon terminator, but the short form should not\&.
.PP
The use of short\-form commands within multi\-line
-/* ... */
-comments is not supported.
-.TP 3n
-\(bu
+/* \&.\&.\&. */
+comments is not supported\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: help command
+.\" help command: mysql
\fBhelp [\fR\fB\fIarg\fR\fR\fB]\fR,
-\fB\\h [\fR\fB\fIarg\fR\fR\fB]\fR,
-\fB\\? [\fR\fB\fIarg\fR\fR\fB]\fR,
+\fB\eh [\fR\fB\fIarg\fR\fR\fB]\fR,
+\fB\e? [\fR\fB\fIarg\fR\fR\fB]\fR,
\fB? [\fR\fB\fIarg\fR\fR\fB]\fR
.sp
-Displays a help message listing the available
+Display a help message listing the available
\fBmysql\fR
-commands.
+commands\&.
.sp
If you provide an argument to the
help
command,
\fBmysql\fR
-uses it as a search string to access server\-side help from the contents of the MySQL Reference Manual. For more information, see
-the section called \(lq\fBMYSQL\fR SERVER\-SIDE HELP\(rq.
-.TP 3n
-\(bu
+uses it as a search string to access server\-side help from the contents of the MySQL Reference Manual\&. For more information, see
+the section called \(lqMYSQL SERVER-SIDE HELP\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: charset command
+.\" charset command: mysql
\fBcharset \fR\fB\fIcharset_name\fR\fR,
-\fB\\C \fR\fB\fIcharset_name\fR\fR
+\fB\eC \fR\fB\fIcharset_name\fR\fR
.sp
-The
-charset
-command changes the default character set and issues a
+Change the default character set and issue a
SET NAMES
-statement. This enables the character set to remain synchronized on the client and server if
+statement\&. This enables the character set to remain synchronized on the client and server if
\fBmysql\fR
-is run with auto\-reconnect enabled (which is not recommended), because the specified character set is used for reconnects. This command was added in MySQL 5.1.7.
-.TP 3n
-\(bu
+is run with auto\-reconnect enabled (which is not recommended), because the specified character set is used for reconnects\&. This command was added in MySQL 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: clear command
+.\" clear command: mysql
\fBclear\fR,
-\fB\\c\fR
+\fB\ec\fR
+.sp
+Clear the current input\&. Use this if you change your mind about executing the statement that you are entering\&.
+.RE
.sp
-Clears the current input. Use this if you change your mind about executing the statement that you are entering.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: connect command
+.\" connect command: mysql
\fBconnect [\fR\fB\fIdb_name\fR\fR\fB \fR\fB\fIhost_name\fR\fR\fB]]\fR,
-\fB\\r [\fR\fB\fIdb_name\fR\fR\fB \fR\fB\fIhost_name\fR\fR\fB]]\fR
+\fB\er [\fR\fB\fIdb_name\fR\fR\fB \fR\fB\fIhost_name\fR\fR\fB]]\fR
.sp
-Reconnects to the server. The optional database name and host name arguments may be given to specify the default database or the host where the server is running. If omitted, the current values are used.
-.TP 3n
-\(bu
+Reconnect to the server\&. The optional database name and host name arguments may be given to specify the default database or the host where the server is running\&. If omitted, the current values are used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: delimiter command
+.\" delimiter command: mysql
\fBdelimiter \fR\fB\fIstr\fR\fR,
-\fB\\d \fR\fB\fIstr\fR\fR
+\fB\ed \fR\fB\fIstr\fR\fR
.sp
-The
-delimiter
-command changes the string that
+Change the string that
\fBmysql\fR
-interprets as the separator between SQL statements. The default is the semicolon character (\(lq;\(rq).
+interprets as the separator between SQL statements\&. The default is the semicolon character (\(lq;\(rq)\&.
.sp
-The delimiter can be specified as an unquoted or quoted argument. Quoting can be done with either single quote (') or douple quote (") characters. To include a quote within a quoted string, either quote the string with the other quote character or escape the quote with a backslash (\(lq\\\(rq) character. Backslash should be avoided outside of quoted strings because it is the escape character for MySQL. For an unquoted argument, the delmiter is read up to the first space or end of line. For a quoted argument, the delimiter is read up to the matching quote on the line.
+The delimiter can be specified as an unquoted or quoted argument\&. Quoting can be done with either single quote (\') or douple quote (") characters\&. To include a quote within a quoted string, either quote the string with the other quote character or escape the quote with a backslash (\(lq\e\(rq) character\&. Backslash should be avoided outside of quoted strings because it is the escape character for MySQL\&. For an unquoted argument, the delmiter is read up to the first space or end of line\&. For a quoted argument, the delimiter is read up to the matching quote on the line\&.
.sp
When the delimiter recognized by
\fBmysql\fR
is set to something other than the default of
-\(lq;\(rq, instances of that character are sent to the server without interpretation. However, the server itself still interprets
+\(lq;\(rq, instances of that character are sent to the server without interpretation\&. However, the server itself still interprets
\(lq;\(rq
-as a statement delimiter and processes statements accordingly. This behavior on the server side comes into play for multiple\-statement execution (see
-Section\ 21.10.12, \(lqC API Support for Multiple Statement Execution\(rq), and for parsing the body of stored procedures and functions, triggers, and events (see
-Section\ 19.1, \(lqDefining Stored Programs\(rq).
-.TP 3n
-\(bu
+as a statement delimiter and processes statements accordingly\&. This behavior on the server side comes into play for multiple\-statement execution (see
+Section\ \&21.10.12, \(lqC API Support for Multiple Statement Execution\(rq), and for parsing the body of stored procedures and functions, triggers, and events (see
+Section\ \&19.1, \(lqDefining Stored Programs\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: edit command
+.\" edit command: mysql
\fBedit\fR,
-\fB\\e\fR
+\fB\ee\fR
.sp
-Edits the current input statement.
+Edit the current input statement\&.
\fBmysql\fR
checks the values of the
EDITOR
and
VISUAL
-environment variables to determine which editor to use. The default editor is
+environment variables to determine which editor to use\&. The default editor is
\fBvi\fR
-if neither variable is set.
+if neither variable is set\&.
.sp
The
\fBedit\fR
-command works only in Unix.
-.TP 3n
-\(bu
+command works only in Unix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: ego command
+.\" ego command: mysql
\fBego\fR,
-\fB\\G\fR
+\fB\eG\fR
.sp
-Sends the current statement to the server to be executed and displays the result using vertical format.
-.TP 3n
-\(bu
+Send the current statement to the server to be executed and display the result using vertical format\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: exit command
+.\" exit command: mysql
\fBexit\fR,
-\fB\\q\fR
+\fB\eq\fR
+.sp
+Exit
+\fBmysql\fR\&.
+.RE
.sp
-Exits
-\fBmysql\fR.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: go command
+.\" go command: mysql
\fBgo\fR,
-\fB\\g\fR
+\fB\eg\fR
+.sp
+Send the current statement to the server to be executed\&.
+.RE
.sp
-Sends the current statement to the server to be executed.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: nopager command
+.\" nopager command: mysql
\fBnopager\fR,
-\fB\\n\fR
+\fB\en\fR
.sp
-Disables output paging. See the description for
-\fBpager\fR.
+Disable output paging\&. See the description for
+\fBpager\fR\&.
.sp
The
\fBnopager\fR
-command works only in Unix.
-.TP 3n
-\(bu
+command works only in Unix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: notee command
+.\" notee command: mysql
\fBnotee\fR,
-\fB\\t\fR
+\fB\et\fR
+.sp
+Disable output copying to the tee file\&. See the description for
+\fBtee\fR\&.
+.RE
.sp
-Disables output copying to the tee file. See the description for
-\fBtee\fR.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: nowarning command
+.\" nowarning command: mysql
\fBnowarning\fR,
-\fB\\w\fR
+\fB\ew\fR
+.sp
+Enable display of warnings after each statement\&.
+.RE
.sp
-Enables display of warnings after each statement.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: pager command
+.\" pager command: mysql
\fBpager [\fR\fB\fIcommand\fR\fR\fB]\fR,
-\fB\\P [\fR\fB\fIcommand\fR\fR\fB]\fR
+\fB\eP [\fR\fB\fIcommand\fR\fR\fB]\fR
.sp
-By using the
+Enable output paging\&. By using the
\fB\-\-pager\fR
option when you invoke
\fBmysql\fR, it is possible to browse or search query results in interactive mode with Unix programs such as
\fBless\fR,
-\fBmore\fR, or any other similar program. If you specify no value for the option,
+\fBmore\fR, or any other similar program\&. If you specify no value for the option,
\fBmysql\fR
checks the value of the
PAGER
-environment variable and sets the pager to that.
+environment variable and sets the pager to that\&.
.sp
Output paging can be enabled interactively with the
\fBpager\fR
command and disabled with
-\fBnopager\fR. The command takes an optional argument; if given, the paging program is set to that. With no argument, the pager is set to the pager that was set on the command line, or
+\fBnopager\fR\&. The command takes an optional argument; if given, the paging program is set to that\&. With no argument, the pager is set to the pager that was set on the command line, or
stdout
-if no pager was specified.
+if no pager was specified\&.
.sp
Output paging works only in Unix because it uses the
popen()
-function, which does not exist on Windows. For Windows, the
+function, which does not exist on Windows\&. For Windows, the
\fBtee\fR
option can be used instead to save query output, although it is not as convenient as
\fBpager\fR
-for browsing output in some situations.
-.TP 3n
-\(bu
+for browsing output in some situations\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: print command
+.\" print command: mysql
\fBprint\fR,
-\fB\\p\fR
+\fB\ep\fR
+.sp
+Print the current input statement without executing it\&.
+.RE
.sp
-Prints the current input statement without executing it.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: prompt command
+.\" prompt command: mysql
\fBprompt [\fR\fB\fIstr\fR\fR\fB]\fR,
-\fB\\R [\fR\fB\fIstr\fR\fR\fB]\fR
+\fB\eR [\fR\fB\fIstr\fR\fR\fB]\fR
.sp
-Reconfigures the
+Reconfigure the
\fBmysql\fR
-prompt to the given string. The special character sequences that can be used in the prompt are described later in this section.
+prompt to the given string\&. The special character sequences that can be used in the prompt are described later in this section\&.
.sp
If you specify the
prompt
command with no argument,
\fBmysql\fR
resets the prompt to the default of
-mysql>.
-.TP 3n
-\(bu
+mysql>\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: quit command
+.\" quit command: mysql
\fBquit\fR,
-\fB\\q\fR
+\fB\eq\fR
.sp
-Exits
-\fBmysql\fR.
-.TP 3n
-\(bu
+Exit
+\fBmysql\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: rehash command
+.\" rehash command: mysql
\fBrehash\fR,
-\fB\\#\fR
+\fB\e#\fR
.sp
-Rebuilds the completion hash that enables database, table, and column name completion while you are entering statements. (See the description for the
+Rebuild the completion hash that enables database, table, and column name completion while you are entering statements\&. (See the description for the
\fB\-\-auto\-rehash\fR
-option.)
-.TP 3n
-\(bu
+option\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: source command
+.\" source command: mysql
\fBsource \fR\fB\fIfile_name\fR\fR,
-\fB\\. \fR\fB\fIfile_name\fR\fR
+\fB\e\&. \fR\fB\fIfile_name\fR\fR
.sp
-Reads the named file and executes the statements contained therein. On Windows, you can specify path name separators as
+Read the named file and executes the statements contained therein\&. On Windows, you can specify path name separators as
/
or
-\\\\.
-.TP 3n
-\(bu
+\e\e\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: status command
+.\" status command: mysql
\fBstatus\fR,
-\fB\\s\fR
+\fB\es\fR
.sp
-The
-status
-command provides some information about the connection and the server you are using. If you are running in
+Provide status information about the connection and the server you are using\&. If you are running in
\fB\-\-safe\-updates\fR
mode,
status
also prints the values for the
\fBmysql\fR
-variables that affect your queries.
-.TP 3n
-\(bu
+variables that affect your queries\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: system command
+.\" system command: mysql
\fBsystem \fR\fB\fIcommand\fR\fR,
-\fB\\! \fR\fB\fIcommand\fR\fR
+\fB\e! \fR\fB\fIcommand\fR\fR
.sp
-Executes the given command using your default command interpreter.
+Execute the given command using your default command interpreter\&.
.sp
The
\fBsystem\fR
-command works only in Unix.
-.TP 3n
-\(bu
+command works only in Unix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: tee command
+.\" tee command: mysql
\fBtee [\fR\fB\fIfile_name\fR\fR\fB]\fR,
-\fB\\T [\fR\fB\fIfile_name\fR\fR\fB]\fR
+\fB\eT [\fR\fB\fIfile_name\fR\fR\fB]\fR
.sp
By using the
\fB\-\-tee\fR
option when you invoke
-\fBmysql\fR, you can log statements and their output. All the data displayed on the screen is appended into a given file. This can be very useful for debugging purposes also.
+\fBmysql\fR, you can log statements and their output\&. All the data displayed on the screen is appended into a given file\&. This can be very useful for debugging purposes also\&.
\fBmysql\fR
-flushes results to the file after each statement, just before it prints its next prompt.
+flushes results to the file after each statement, just before it prints its next prompt\&.
.sp
You can enable this feature interactively with the
\fBtee\fR
-command. Without a parameter, the previous file is used. The
+command\&. Without a parameter, the previous file is used\&. The
\fBtee\fR
file can be disabled with the
\fBnotee\fR
-command. Executing
+command\&. Executing
\fBtee\fR
-again re\-enables logging.
-.TP 3n
-\(bu
+again re\-enables logging\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: use command
+.\" use command: mysql
\fBuse \fR\fB\fIdb_name\fR\fR,
-\fB\\u \fR\fB\fIdb_name\fR\fR
+\fB\eu \fR\fB\fIdb_name\fR\fR
.sp
-Uses
+Use
\fIdb_name\fR
-as the default database.
-.TP 3n
-\(bu
-\fBwarnings\fR,
-\fB\\W\fR
+as the default database\&.
+.RE
.sp
-Enables display of warnings after each statement (if there are any).
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql: warnings command
+.\" warnings command: mysql
+\fBwarnings\fR,
+\fB\eW\fR
.sp
+Enable display of warnings after each statement (if there are any)\&.
.RE
.PP
Here are a few tips about the
\fBpager\fR
command:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can use it to write to a file and the results go only to the file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBpager cat > /tmp/log.txt\fR
+mysql> \fBpager cat > /tmp/log\&.txt\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
You can also pass any options for the program that you want to use as your pager:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBpager less \-n \-i \-S\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
In the preceding example, note the
\fB\-S\fR
-option. You may find it very useful for browsing wide query results. Sometimes a very wide result set is difficult to read on the screen. The
+option\&. You may find it very useful for browsing wide query results\&. Sometimes a very wide result set is difficult to read on the screen\&. The
\fB\-S\fR
option to
\fBless\fR
-can make the result set much more readable because you can scroll it horizontally using the left\-arrow and right\-arrow keys. You can also use
+can make the result set much more readable because you can scroll it horizontally using the left\-arrow and right\-arrow keys\&. You can also use
\fB\-S\fR
interactively within
\fBless\fR
-to switch the horizontal\-browse mode on and off. For more information, read the
+to switch the horizontal\-browse mode on and off\&. For more information, read the
\fBless\fR
manual page:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBman less\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The
\fB\-F\fR
and
@@ -1039,41 +1986,57 @@ options may be used with
\fBless\fR
to cause it to exit if output fits on one screen, which is convenient when no scrolling is necessary:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBpager less \-n \-i \-S \-F \-X\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can specify very complex pager commands for handling query output:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBpager cat | tee /dr1/tmp/res.txt \\\fR
- \fB| tee /dr2/tmp/res2.txt | less \-n \-i \-S\fR
+mysql> \fBpager cat | tee /dr1/tmp/res\&.txt \e\fR
+ \fB| tee /dr2/tmp/res2\&.txt | less \-n \-i \-S\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
In this example, the command would send query results to two files in two different directories on two different file systems mounted on
-\fI/dr1\fR
+/dr1
and
-\fI/dr2\fR, yet still display the results onscreen via
-\fBless\fR.
-.sp
+/dr2, yet still display the results onscreen via
+\fBless\fR\&.
.RE
.PP
You can also combine the
\fBtee\fR
and
\fBpager\fR
-functions. Have a
+functions\&. Have a
\fBtee\fR
file enabled and
\fBpager\fR
set to
\fBless\fR, and you are able to browse the results using the
\fBless\fR
-program and still have everything appended into a file the same time. The difference between the Unix
+program and still have everything appended into a file the same time\&. The difference between the Unix
\fBtee\fR
used with the
\fBpager\fR
@@ -1085,22 +2048,23 @@ command is that the built\-in
\fBtee\fR
works even if you do not have the Unix
\fBtee\fR
-available. The built\-in
+available\&. The built\-in
\fBtee\fR
also logs everything that is printed on the screen, whereas the Unix
\fBtee\fR
used with
\fBpager\fR
-does not log quite that much. Additionally,
+does not log quite that much\&. Additionally,
\fBtee\fR
file logging can be turned on and off interactively from within
-\fBmysql\fR. This is useful when you want to log some queries to a file, but not others.
+\fBmysql\fR\&. This is useful when you want to log some queries to a file, but not others\&.
+.\" mysql prompt command
.PP
The
\fBprompt\fR
command reconfigures the default
mysql>
-prompt. The string for defining the prompt can contain the following special sequences.
+prompt\&. The string for defining the prompt can contain the following special sequences\&.
.TS
allbox tab(:);
l l
@@ -1138,267 +2102,332 @@ T}:T{
\fBDescription\fR
T}
T{
-\\o
+\ec
T}:T{
-The current month in numeric format
+A counter that increments for each statement you issue
T}
T{
-\\P
+\eD
T}:T{
-am/pm
+The full current date
T}
T{
-\\p
+\ed
T}:T{
-The current TCP/IP port or socket file
+The default database
T}
T{
-\\R
+\eh
T}:T{
-The current time, in 24\-hour military time (0\-23)
+The server host
T}
T{
-\\r
+\el
T}:T{
-The current time, standard 12\-hour time (1\-12)
+The current delimiter (new in 5\&.1\&.12)
T}
T{
-\\S
+\em
T}:T{
-Semicolon
+Minutes of the current time
T}
T{
-\\s
+\en
T}:T{
-Seconds of the current time
+A newline character
T}
T{
-\\t
+\eO
T}:T{
-A tab character
+The current month in three\-letter format (Jan, Feb, \&...)
T}
T{
-\\U
+\eo
T}:T{
-Your full
- \fIuser_name\fR@\fIhost_name\fR
- account name
+The current month in numeric format
T}
T{
-\\u
+\eP
T}:T{
-Your user name
+am/pm
T}
T{
-\\c
+\ep
T}:T{
-A counter that increments for each statement you issue
+The current TCP/IP port or socket file
T}
T{
-\\v
+\eR
T}:T{
-The server version
+The current time, in 24\-hour military time (0\(en23)
T}
T{
-\\w
+\er
T}:T{
-The current day of the week in three\-letter format (Mon, Tue, \&...)
+The current time, standard 12\-hour time (1\(en12)
T}
T{
-\\Y
+\eS
T}:T{
-The current year, four digits
+Semicolon
T}
T{
-\\y
+\es
T}:T{
-The current year, two digits
+Seconds of the current time
T}
T{
-\\_
+\et
T}:T{
-A space
+A tab character
T}
T{
-\\\
+\eU
T}:T{
-A space (a space follows the backslash)
+.PP
+Your full
+\fIuser_name\fR@\fIhost_name\fR
+account name
T}
T{
-\\'
+\eu
T}:T{
-Single quote
+Your user name
T}
T{
-\\"
+\ev
T}:T{
-Double quote
+The server version
T}
T{
-\\\\
+\ew
T}:T{
-A literal \(lq\\\(rq backslash character
+The current day of the week in three\-letter format (Mon, Tue, \&...)
T}
T{
-\\\fIx\fR
+\eY
T}:T{
-\fIx\fR, for any
- \(lq\fIx\fR\(rq not listed
- above
+The current year, four digits
T}
T{
-\\D
+\ey
T}:T{
-The full current date
+The current year, two digits
T}
T{
-\\d
+\e_
T}:T{
-The default database
+A space
T}
T{
-\\h
+\e\ \&
T}:T{
-The server host
+A space (a space follows the backslash)
T}
T{
-\\l
+\e\'
T}:T{
-The current delimiter (new in 5.1.12)
+Single quote
T}
T{
-\\m
+\e"
T}:T{
-Minutes of the current time
+Double quote
T}
T{
-\\n
+\e\e
T}:T{
-A newline character
+A literal \(lq\e\(rq backslash character
T}
T{
-\\O
+\e\fIx\fR
T}:T{
-The current month in three\-letter format (Jan, Feb, \&...)
+.PP
+\fIx\fR, for any
+\(lq\fIx\fR\(rq
+not listed above
T}
.TE
-.sp
+.sp 1
.PP
You can set the prompt in several ways:
-.TP 3n
-\(bu
-\fIUse an environment variable.\fR
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIUse an environment variable\&.\fR
You can set the
MYSQL_PS1
-environment variable to a prompt string. For example:
+environment variable to a prompt string\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBexport MYSQL_PS1="(\\u@\\h) [\\d]> "\fR
+shell> \fBexport MYSQL_PS1="(\eu@\eh) [\ed]> "\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
-\fIUse a command\-line option.\fR
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIUse a command\-line option\&.\fR
You can set the
\fB\-\-prompt\fR
option on the command line to
-\fBmysql\fR. For example:
+\fBmysql\fR\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-\-prompt="(\\u@\\h) [\\d]> "\fR
+shell> \fBmysql \-\-prompt="(\eu@\eh) [\ed]> "\fR
(user@host) [database]>
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
-\fIUse an option file.\fR
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIUse an option file\&.\fR
You can set the
prompt
option in the
[mysql]
group of any MySQL option file, such as
-\fI/etc/my.cnf\fR
+/etc/my\&.cnf
or the
-\fI.my.cnf\fR
-file in your home directory. For example:
+\&.my\&.cnf
+file in your home directory\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysql]
-prompt=(\\\\u@\\\\h) [\\\\d]>\\\\_
+prompt=(\e\eu@\e\eh) [\e\ed]>\e\e_
.fi
+.if n \{\
.RE
-In this example, note that the backslashes are doubled. If you set the prompt using the
+.\}
+.sp
+In this example, note that the backslashes are doubled\&. If you set the prompt using the
prompt
-option in an option file, it is advisable to double the backslashes when using the special prompt options. There is some overlap in the set of allowable prompt options and the set of special escape sequences that are recognized in option files. (These sequences are listed in
-Section\ 4.2.3.2, \(lqUsing Option Files\(rq.) The overlap may cause you problems if you use single backslashes. For example,
-\\s
-is interpreted as a space rather than as the current seconds value. The following example shows how to define a prompt within an option file to include the current time in
+option in an option file, it is advisable to double the backslashes when using the special prompt options\&. There is some overlap in the set of allowable prompt options and the set of special escape sequences that are recognized in option files\&. (These sequences are listed in
+Section\ \&4.2.3.3, \(lqUsing Option Files\(rq\&.) The overlap may cause you problems if you use single backslashes\&. For example,
+\es
+is interpreted as a space rather than as the current seconds value\&. The following example shows how to define a prompt within an option file to include the current time in
HH:MM:SS>
format:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysql]
-prompt="\\\\r:\\\\m:\\\\s> "
+prompt="\e\er:\e\em:\e\es> "
.fi
+.if n \{\
.RE
-.TP 3n
-\(bu
-\fISet the prompt interactively.\fR
+.\}
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fISet the prompt interactively\&.\fR
You can change your prompt interactively by using the
prompt
(or
-\\R) command. For example:
+\eR) command\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBprompt (\\u@\\h) [\\d]>\\_\fR
-PROMPT set to '(\\u@\\h) [\\d]>\\_'
+mysql> \fBprompt (\eu@\eh) [\ed]>\e_\fR
+PROMPT set to \'(\eu@\eh) [\ed]>\e_\'
(\fIuser\fR@\fIhost\fR) [\fIdatabase\fR]>
(\fIuser\fR@\fIhost\fR) [\fIdatabase\fR]> prompt
Returning to default PROMPT of mysql>
mysql>
.fi
+.if n \{\
.RE
-.SH "\fBMYSQL\fR SERVER\-SIDE HELP"
+.\}
+.RE
+.SH "MYSQL SERVER-SIDE HELP"
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp \fR\fB\fIsearch_string\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you provide an argument to the
help
command,
\fBmysql\fR
-uses it as a search string to access server\-side help from the contents of the MySQL Reference Manual. The proper operation of this command requires that the help tables in the
+uses it as a search string to access server\-side help from the contents of the MySQL Reference Manual\&. The proper operation of this command requires that the help tables in the
mysql
database be initialized with help topic information (see
-Section\ 5.1.8, \(lqServer\-Side Help\(rq).
+Section\ \&5.1.9, \(lqServer-Side Help\(rq)\&.
.PP
If there is no match for the search string, the search fails:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp me\fR
Nothing found
-Please try to run 'help contents' for a list of all accessible topics
+Please try to run \'help contents\' for a list of all accessible topics
.fi
+.if n \{\
.RE
+.\}
.PP
Use
\fBhelp contents\fR
to see a list of the help categories:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp contents\fR
You asked for help about help category: "Contents"
-For more information, type 'help <item>', where <item> is one of the
+For more information, type \'help <item>\', where <item> is one of the
following categories:
Account Management
Administration
@@ -1416,163 +2445,206 @@ following categories:
Transactions
Triggers
.fi
+.if n \{\
.RE
+.\}
.PP
If the search string matches multiple items,
\fBmysql\fR
shows a list of matching topics:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp logs\fR
-Many help items for your request exist.
-To make a more specific request, please type 'help <item>',
+Many help items for your request exist\&.
+To make a more specific request, please type \'help <item>\',
where <item> is one of the following topics:
SHOW
SHOW BINARY LOGS
SHOW ENGINE
SHOW LOGS
.fi
+.if n \{\
.RE
+.\}
.PP
Use a topic as the search string to see the help entry for that topic:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBhelp show binary logs\fR
-Name: 'SHOW BINARY LOGS'
+Name: \'SHOW BINARY LOGS\'
Description:
Syntax:
SHOW BINARY LOGS
SHOW MASTER LOGS
-Lists the binary log files on the server. This statement is used as
+Lists the binary log files on the server\&. This statement is used as
part of the procedure described in [purge\-binary\-logs], that shows how
-to determine which logs can be purged.
+to determine which logs can be purged\&.
mysql> SHOW BINARY LOGS;
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+
| Log_name | File_size |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+
-| binlog.000015 | 724935 |
-| binlog.000016 | 733481 |
+| binlog\&.000015 | 724935 |
+| binlog\&.000016 | 733481 |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
.RE
+.\}
.SH "EXECUTING SQL STATEMENTS FROM A TEXT FILE"
+.\" executing SQL statements from text files
+.\" importing: data
+.\" data: importing
+.\" files: text
+.\" text files: importing
+.\" source (mysql client command)
+.\" \. (mysql client command)
+.\" mysql source (command for reading from text files)
+.\" mysql \. (command for reading from text files)
.PP
The
\fBmysql\fR
client typically is used interactively, like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
However, it is also possible to put your SQL statements in a file and then tell
\fBmysql\fR
-to read its input from that file. To do so, create a text file
+to read its input from that file\&. To do so, create a text file
\fItext_file\fR
-that contains the statements you wish to execute. Then invoke
+that contains the statements you wish to execute\&. Then invoke
\fBmysql\fR
as shown here:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fItext_file\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you place a
USE \fIdb_name\fR
statement as the first statement in the file, it is unnecessary to specify the database name on the command line:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql < text_file\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you are already running
\fBmysql\fR, you can execute an SQL script file using the
source
command or
-\\.
+\e\&.
command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBsource \fR\fB\fIfile_name\fR\fR
-mysql> \fB\\. \fR\fB\fIfile_name\fR\fR
+mysql> \fB\e\&. \fR\fB\fIfile_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Sometimes you may want your script to display progress information to the user. For this you can insert statements like this:
+Sometimes you may want your script to display progress information to the user\&. For this you can insert statements like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-SELECT '<info_to_display>' AS ' ';
+SELECT \'<info_to_display>\' AS \' \';
.fi
+.if n \{\
.RE
+.\}
.PP
The statement shown outputs
-<info_to_display>.
+<info_to_display>\&.
.PP
-As of MySQL 5.1.23,
+As of MySQL 5\&.1\&.23,
\fBmysql\fR
-ignores Unicode byte order mark (BOM) characters at the beginning of input files. Previously, it read them and sent them to the server, resulting in a syntax error. Presence of a BOM does not cause
+ignores Unicode byte order mark (BOM) characters at the beginning of input files\&. Previously, it read them and sent them to the server, resulting in a syntax error\&. Presence of a BOM does not cause
\fBmysql\fR
-to change its default character set. To do that, invoke
+to change its default character set\&. To do that, invoke
\fBmysql\fR
with an option such as
-\fB\-\-default\-character\-set=utf8\fR.
+\fB\-\-default\-character\-set=utf8\fR\&.
.PP
For more information about batch mode, see
-Section\ 3.5, \(lqUsing \fBmysql\fR in Batch Mode\(rq.
-.SH "\fBMYSQL\fR TIPS"
+Section\ \&3.5, \(lqUsing mysql in Batch Mode\(rq\&.
+.SH "MYSQL TIPS"
.PP
This section describes some techniques that can help you use
\fBmysql\fR
-more effectively.
+more effectively\&.
.SS "Displaying Query Results Vertically"
.PP
-Some query results are much more readable when displayed vertically, instead of in the usual horizontal table format. Queries can be displayed vertically by terminating the query with \\G instead of a semicolon. For example, longer text values that include newlines often are much easier to read with vertical output:
+Some query results are much more readable when displayed vertically, instead of in the usual horizontal table format\&. Queries can be displayed vertically by terminating the query with \eG instead of a semicolon\&. For example, longer text values that include newlines often are much easier to read with vertical output:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBSELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\\G\fR
-*************************** 1. row ***************************
+mysql> \fBSELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\eG\fR
+*************************** 1\&. row ***************************
msg_nro: 3068
date: 2000\-03\-01 23:29:50
time_zone: +0200
mail_from: Monty
- reply: monty(a)no.spam.com
- mail_to: "Thimble Smith" <tim(a)no.spam.com>
+ reply: monty(a)no\&.spam\&.com
+ mail_to: "Thimble Smith" <tim(a)no\&.spam\&.com>
sbj: UTF\-8
txt: >>>>> "Thimble" == Thimble Smith writes:
-Thimble> Hi. I think this is a good idea. Is anyone familiar
-Thimble> with UTF\-8 or Unicode? Otherwise, I'll put this on my
-Thimble> TODO list and see what happens.
-Yes, please do that.
+Thimble> Hi\&. I think this is a good idea\&. Is anyone familiar
+Thimble> with UTF\-8 or Unicode? Otherwise, I\'ll put this on my
+Thimble> TODO list and see what happens\&.
+Yes, please do that\&.
Regards,
Monty
file: inbox\-jani\-1
hash: 190402944
-1 row in set (0.09 sec)
+1 row in set (0\&.09 sec)
.fi
+.if n \{\
.RE
-.\" end of SS subsection "Displaying Query Results Vertically"
+.\}
.SS "Using the \-\-safe\-updates Option"
+.\" safe-updates option
.PP
For beginners, a useful startup option is
\fB\-\-safe\-updates\fR
(or
-\fB\-\-i\-am\-a\-dummy\fR, which has the same effect). It is helpful for cases when you might have issued a
+\fB\-\-i\-am\-a\-dummy\fR, which has the same effect)\&. It is helpful for cases when you might have issued a
DELETE FROM \fItbl_name\fR
statement but forgotten the
WHERE
-clause. Normally, such a statement deletes all rows from the table. With
-\fB\-\-safe\-updates\fR, you can delete rows only by specifying the key values that identify them. This helps prevent accidents.
+clause\&. Normally, such a statement deletes all rows from the table\&. With
+\fB\-\-safe\-updates\fR, you can delete rows only by specifying the key values that identify them\&. This helps prevent accidents\&.
.PP
When you use the
\fB\-\-safe\-updates\fR
@@ -1580,20 +2652,31 @@ option,
\fBmysql\fR
issues the following statement when it connects to the MySQL server:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;
.fi
+.if n \{\
.RE
+.\}
.PP
See
-Section\ 5.1.4, \(lqSession System Variables\(rq.
+Section\ \&5.1.5, \(lqSession System Variables\(rq\&.
.PP
The
SET
statement has the following effects:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You are not allowed to execute an
UPDATE
or
@@ -1602,27 +2685,46 @@ statement unless you specify a key const
WHERE
clause or provide a
LIMIT
-clause (or both). For example:
+clause (or both)\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
UPDATE \fItbl_name\fR SET \fInot_key_column\fR=\fIval\fR WHERE \fIkey_column\fR=\fIval\fR;
UPDATE \fItbl_name\fR SET \fInot_key_column\fR=\fIval\fR LIMIT 1;
.fi
+.if n \{\
.RE
-.TP 3n
-\(bu
+.\}
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The server limits all large
SELECT
results to 1,000 rows unless the statement includes a
LIMIT
-clause.
-.TP 3n
-\(bu
+clause\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The server aborts multiple\-table
SELECT
-statements that probably need to examine more than 1,000,000 row combinations.
-.sp
+statements that probably need to examine more than 1,000,000 row combinations\&.
.RE
.PP
To specify limits different from 1,000 and 1,000,000, you can override the defaults by using the
@@ -1631,69 +2733,79 @@ and
\fB\-\-max_join_size\fR
options:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql \-\-safe\-updates \-\-select_limit=500 \-\-max_join_size=10000\fR
.fi
+.if n \{\
.RE
-.\" end of SS subsection "Using the \-\-safe\-updates Option"
+.\}
.SS "Disabling mysql Auto\-Reconnect"
.PP
If the
\fBmysql\fR
-client loses its connection to the server while sending a statement, it immediately and automatically tries to reconnect once to the server and send the statement again. However, even if
+client loses its connection to the server while sending a statement, it immediately and automatically tries to reconnect once to the server and send the statement again\&. However, even if
\fBmysql\fR
-succeeds in reconnecting, your first connection has ended and all your previous session objects and settings are lost: temporary tables, the autocommit mode, and user\-defined and session variables. Also, any current transaction rolls back. This behavior may be dangerous for you, as in the following example where the server was shut down and restarted between the first and second statements without you knowing it:
+succeeds in reconnecting, your first connection has ended and all your previous session objects and settings are lost: temporary tables, the autocommit mode, and user\-defined and session variables\&. Also, any current transaction rolls back\&. This behavior may be dangerous for you, as in the following example where the server was shut down and restarted between the first and second statements without you knowing it:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSET @a=1;\fR
-Query OK, 0 rows affected (0.05 sec)
+Query OK, 0 rows affected (0\&.05 sec)
mysql> \fBINSERT INTO t VALUES(@a);\fR
ERROR 2006: MySQL server has gone away
-No connection. Trying to reconnect...
+No connection\&. Trying to reconnect\&.\&.\&.
Connection id: 1
Current database: test
-Query OK, 1 row affected (1.30 sec)
+Query OK, 1 row affected (1\&.30 sec)
mysql> \fBSELECT * FROM t;\fR
+\-\-\-\-\-\-+
| a |
+\-\-\-\-\-\-+
| NULL |
+\-\-\-\-\-\-+
-1 row in set (0.05 sec)
+1 row in set (0\&.05 sec)
.fi
+.if n \{\
.RE
+.\}
.PP
The
@a
-user variable has been lost with the connection, and after the reconnection it is undefined. If it is important to have
+user variable has been lost with the connection, and after the reconnection it is undefined\&. If it is important to have
\fBmysql\fR
terminate with an error if the connection has been lost, you can start the
\fBmysql\fR
client with the
\fB\-\-skip\-reconnect\fR
-option.
+option\&.
.PP
For more information about auto\-reconnect and its effect on state information when a reconnection occurs, see
-Section\ 21.10.11, \(lqControlling Automatic Reconnection Behavior\(rq.
-.\" end of SS subsection "Disabling mysql Auto\-Reconnect"
+Section\ \&21.10.11, \(lqControlling Automatic Reconnection Behavior\(rq\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ Bug#25946
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#25946
+.RS 4
\%http://bugs.mysql.com/25946
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql.server.1'
--- a/man/mysql.server.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql.server.1 2009-09-16 12:03:18 +0000
@@ -1,111 +1,192 @@
+'\" t
.\" Title: \fBmysql.server\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL.SERVER\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL\&.SERVER\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql.server
.SH "NAME"
mysql.server \- MySQL server startup script
.SH "SYNOPSIS"
-.HP 19
+.HP \w'\fBmysql\ {start|stop}\fR\ 'u
\fBmysql {start|stop}\fR
.SH "DESCRIPTION"
.PP
MySQL distributions on Unix include a script named
-\fBmysql.server\fR. It can be used on systems such as Linux and Solaris that use System V\-style run directories to start and stop system services. It is also used by the Mac OS X Startup Item for MySQL.
+\fBmysql\&.server\fR\&. It can be used on systems such as Linux and Solaris that use System V\-style run directories to start and stop system services\&. It is also used by the Mac OS X Startup Item for MySQL\&.
.PP
-\fBmysql.server\fR
+\fBmysql\&.server\fR
can be found in the
-\fIsupport\-files\fR
-directory under your MySQL installation directory or in a MySQL source distribution.
+support\-files
+directory under your MySQL installation directory or in a MySQL source distribution\&.
.PP
-If you use the Linux server RPM package (MySQL\-server\-\fIVERSION\fR.rpm), the
-\fBmysql.server\fR
+If you use the Linux server RPM package (MySQL\-server\-\fIVERSION\fR\&.rpm), the
+\fBmysql\&.server\fR
script will be installed in the
-\fI/etc/init.d\fR
+/etc/init\&.d
directory with the name
-\fImysql\fR. You need not install it manually. See
-Section\ 2.4, \(lqInstalling MySQL from RPM Packages on Linux\(rq, for more information on the Linux RPM packages.
+mysql\&. You need not install it manually\&. See
+Section\ \&2.4, \(lqInstalling MySQL from RPM Packages on Linux\(rq, for more information on the Linux RPM packages\&.
.PP
Some vendors provide RPM packages that install a startup script under a different name such as
-\fBmysqld\fR.
+\fBmysqld\fR\&.
.PP
If you install MySQL from a source distribution or using a binary distribution format that does not install
-\fBmysql.server\fR
-automatically, you can install it manually. Instructions are provided in
-Section\ 2.11.2.2, \(lqStarting and Stopping MySQL Automatically\(rq.
+\fBmysql\&.server\fR
+automatically, you can install it manually\&. Instructions are provided in
+Section\ \&2.11.2.2, \(lqStarting and Stopping MySQL Automatically\(rq\&.
.PP
-\fBmysql.server\fR
+\fBmysql\&.server\fR
reads options from the
-[mysql.server]
+[mysql\&.server]
and
[mysqld]
-sections of option files. For backward compatibility, it also reads
+sections of option files\&. For backward compatibility, it also reads
[mysql_server]
sections, although you should rename such sections to
-[mysql.server]
-when using MySQL 5.1.
+[mysql\&.server]
+when using MySQL 5\&.1\&.
.PP
-\fBmysql.server\fR
-understands the following options:
-.TP 3n
-\(bu
+\fBmysql\&.server\fR
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: basedir option
+.\" basedir option: mysql.server
\fB\-\-basedir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL installation directory.
-.TP 3n
-\(bu
+The path to the MySQL installation directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: datadir option
+.\" datadir option: mysql.server
\fB\-\-datadir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL data directory.
-.TP 3n
-\(bu
+The path to the MySQL data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: pid-file option
+.\" pid-file option: mysql.server
\fB\-\-pid\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The path name of the file in which the server should write its process ID.
-.TP 3n
-\(bu
+The path name of the file in which the server should write its process ID\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: service-startup-timeout option
+.\" service-startup-timeout option: mysql.server
\fB\-\-service\-startup\-timeout=\fR\fB\fIfile_name\fR\fR
.sp
-How long in seconds to wait for confirmation of server startup. If the server does not start within this time,
-\fBmysql.server\fR
-exits with an error. The default value is 900. A value of 0 means not to wait at all for startup. Negative values mean to wait forever (no timeout). This option was added in MySQL 5.1.17. Before that, a value of 900 is always used.
-.TP 3n
-\(bu
+How long in seconds to wait for confirmation of server startup\&. If the server does not start within this time,
+\fBmysql\&.server\fR
+exits with an error\&. The default value is 900\&. A value of 0 means not to wait at all for startup\&. Negative values mean to wait forever (no timeout)\&. This option was added in MySQL 5\&.1\&.17\&. Before that, a value of 900 is always used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: use-mysqld_safe option
+.\" use-mysqld_safe option: mysql.server
\fB\-\-use\-mysqld_safe\fR
.sp
Use
\fBmysqld_safe\fR
-to start the server. This is the default.
-.TP 3n
-\(bu
+to start the server\&. This is the default\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: use-manager option
+.\" use-manager option: mysql.server
\fB\-\-use\-manager\fR
.sp
-Use Instance Manager to start the server.
-.TP 3n
-\(bu
+Use Instance Manager to start the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql.server: user option
+.\" user option: mysql.server
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
The login user name to use for running
-\fBmysqld\fR.
+\fBmysqld\fR\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_client_test.1'
--- a/man/mysql_client_test.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_client_test.1 2009-09-16 12:03:18 +0000
@@ -1,166 +1,336 @@
+'\" t
.\" Title: \fBmysql_client_test\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/27/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/08/2009
.\" Manual: MySQL Database System
.\" Source: MySQL
+.\" Language: English
.\"
-.TH "\fBMYSQL_CLIENT_TEST" "1" "03/27/2009" "MySQL" "MySQL Database System"
+.TH "\FBMYSQL_CLIENT_TEST" "1" "08/08/2009" "MySQL" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_client_test
+.\" mysql_client_test_embedded
.SH "NAME"
mysql_client_test \- test client API
.br
mysql_client_test_embedded \- test client API for embedded server
.SH "SYNOPSIS"
-.HP 44
-\fBmysql_client_test [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] ...\fR
-.HP 53
-\fBmysql_client_test_embedded [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] ...\fR
+.HP \w'\fBmysql_client_test\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fItest_name\fR\fR\fB]\ \&.\&.\&.\fR\ 'u
+\fBmysql_client_test [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] \&.\&.\&.\fR
+.HP \w'\fBmysql_client_test_embedded\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fItest_name\fR\fR\fB]\ \&.\&.\&.\fR\ 'u
+\fBmysql_client_test_embedded [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fItest_name\fR\fR\fB] \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBmysql_client_test\fR
program is used for testing aspects of the MySQL client API that cannot be tested using
\fBmysqltest\fR
-and its test language.
+and its test language\&.
\fBmysql_client_test_embedded\fR
-is similar but used for testing the embedded server. Both programs are run as part of the test suite.
+is similar but used for testing the embedded server\&. Both programs are run as part of the test suite\&.
.PP
The source code for the programs can be found in in
-\fItest/mysql_client_test.c\fR
-in a source distribution. The program serves as a good source of examples illustrating how to use various features of the client API.
+test/mysql_client_test\&.c
+in a source distribution\&. The program serves as a good source of examples illustrating how to use various features of the client API\&.
.PP
\fBmysql_client_test\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: help option
+.\" help option: mysql_client_test
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-b \fR\fB\fIdir_name\fR\fR,
+.\" mysql_client_test: basedir option
+.\" basedir option: mysql_client_test
\fB\-\-basedir=\fR\fB\fIdir_name\fR\fR
.sp
-The base directory for the tests.
-.TP 3n
-\(bu
+The base directory for the tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-t \fR\fB\fIcount\fR\fR,
+.\" mysql_client_test: count option
+.\" count option: mysql_client_test
\fB\-\-count=\fR\fB\fIcount\fR\fR
.sp
-The number of times to execute the tests.
-.TP 3n
-\(bu
+The number of times to execute the tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: database option
+.\" database option: mysql_client_test
\fB\-\-database=\fR\fB\fIdb_name\fR\fR,
\fB\-D \fR\fB\fIdb_name\fR\fR
.sp
-The database to use.
-.TP 3n
-\(bu
+The database to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: debug option
+.\" debug option: mysql_client_test
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-#[\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log if MySQL is built with debugging support. The default
+Write a debugging log if MySQL is built with debugging support\&. The default
\fIdebug_options\fR
value is
-\'d:t:o,/tmp/mysql_client_test.trace'.
-.TP 3n
-\(bu
+\'d:t:o,/tmp/mysql_client_test\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-g \fR\fB\fIoption\fR\fR,
+.\" mysql_client_test: getopt-ll-test option
+.\" getopt-ll-test option: mysql_client_test
\fB\-\-getopt\-ll\-test=\fR\fB\fIoption\fR\fR
.sp
Option to use for testing bugs in the
getopt
-library.
-.TP 3n
-\(bu
+library\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: host option
+.\" host option: mysql_client_test
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: password option
+.\" password option: mysql_client_test
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
+.\" mysql_client_test: password option
+.\" password option: mysql_client_test
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
-.TP 3n
-\(bu
+option on the command line, you are prompted for one\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: port option
+.\" port option: mysql_client_test
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-A \fR\fB\fIarg\fR\fR,
+.\" mysql_client_test: server-arg option
+.\" server-arg option: mysql_client_test
\fB\-\-server\-arg=\fR\fB\fIarg\fR\fR
.sp
-Argument to send to the embedded server.
-.TP 3n
-\(bu
+Argument to send to the embedded server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-T\fR,
\fB\-\-show\-tests\fR
.sp
-Show all test names.
-.TP 3n
-\(bu
+Show all test names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: silent option
+.\" silent option: mysql_client_test
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Be more silent.
-.TP 3n
-\(bu
+Be more silent\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: socket option
+.\" socket option: mysql_client_test
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
The socket file to use when connecting to
localhost
-(which is the default host).
-.TP 3n
-\(bu
+(which is the default host)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-c\fR,
\fB\-\-testcase\fR
.sp
The option may disable some code when run as a
-\fBmysql\-test\-run.pl\fR
-test case.
-.TP 3n
-\(bu
+\fBmysql\-test\-run\&.pl\fR
+test case\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_client_test: user option
+.\" user option: mysql_client_test
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-v \fR\fB\fIdir_name\fR\fR,
+.\" mysql_client_test: vardir option
+.\" vardir option: mysql_client_test
\fB\-\-vardir=\fR\fB\fIdir_name\fR\fR
.sp
-The data directory for tests. The default is
-\fImysql\-test/var\fR.
+The data directory for tests\&. The default is
+mysql\-test/var\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_config.1'
--- a/man/mysql_config.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_config.1 2009-09-16 12:03:18 +0000
@@ -1,85 +1,186 @@
+'\" t
.\" Title: \fBmysql_config\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_CONFIG\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_CONFIG\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_config
.SH "NAME"
mysql_config \- get compile options for compiling clients
.SH "SYNOPSIS"
-.HP 21
+.HP \w'\fBmysql_config\ \fR\fB\fIoptions\fR\fR\ 'u
\fBmysql_config \fR\fB\fIoptions\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql_config\fR
-provides you with useful information for compiling your MySQL client and connecting it to MySQL.
+provides you with useful information for compiling your MySQL client and connecting it to MySQL\&.
.PP
\fBmysql_config\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: cflags option
+.\" cflags option: mysql_config
\fB\-\-cflags\fR
.sp
Compiler flags to find include files and critical compiler flags and defines used when compiling the
libmysqlclient
-library. The options returned are tied to the specific compiler that was used when the library was created and might clash with the settings for your own compiler. Use
+library\&. The options returned are tied to the specific compiler that was used when the library was created and might clash with the settings for your own compiler\&. Use
\fB\-\-include\fR
-for more portable options that contain only include paths.
-.TP 3n
-\(bu
+for more portable options that contain only include paths\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: include option
+.\" include option: mysql_config
\fB\-\-include\fR
.sp
-Compiler options to find MySQL include files.
-.TP 3n
-\(bu
+Compiler options to find MySQL include files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: libmysqld-libs option
+.\" libmysqld-libs option: mysql_config
+.\" mysql_config: embedded option
+.\" embedded option: mysql_config
\fB\-\-libmysqld\-libs\fR,
\fB\-\-embedded\fR
.sp
-Libraries and options required to link with the MySQL embedded server.
-.TP 3n
-\(bu
+Libraries and options required to link with the MySQL embedded server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: libs option
+.\" libs option: mysql_config
\fB\-\-libs\fR
.sp
-Libraries and options required to link with the MySQL client library.
-.TP 3n
-\(bu
+Libraries and options required to link with the MySQL client library\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: libs_r option
+.\" libs_r option: mysql_config
\fB\-\-libs_r\fR
.sp
-Libraries and options required to link with the thread\-safe MySQL client library.
-.TP 3n
-\(bu
+Libraries and options required to link with the thread\-safe MySQL client library\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: plugindir option
+.\" plugindir option: mysql_config
\fB\-\-plugindir\fR
.sp
-The default plugin directory path name, defined when configuring MySQL. This option was added in MySQL 5.1.24.
-.TP 3n
-\(bu
+The default plugin directory path name, defined when configuring MySQL\&. This option was added in MySQL 5\&.1\&.24\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: port option
+.\" port option: mysql_config
\fB\-\-port\fR
.sp
-The default TCP/IP port number, defined when configuring MySQL.
-.TP 3n
-\(bu
+The default TCP/IP port number, defined when configuring MySQL\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: socket option
+.\" socket option: mysql_config
\fB\-\-socket\fR
.sp
-The default Unix socket file, defined when configuring MySQL.
-.TP 3n
-\(bu
-\fB\-\-version\fR
+The default Unix socket file, defined when configuring MySQL\&.
+.RE
.sp
-Version number for the MySQL distribution.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_config: version option
+.\" version option: mysql_config
+\fB\-\-version\fR
.sp
+Version number for the MySQL distribution\&.
.RE
.PP
If you invoke
\fBmysql_config\fR
with no options, it displays a list of all options that it supports, and their values:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_config\fR
Usage: /usr/local/mysql/bin/mysql_config [options]
@@ -90,42 +191,50 @@ Options:
\-lcrypt \-lnsl \-lm \-L/usr/lib \-lssl \-lcrypto]
\-\-libs_r [\-L/usr/local/mysql/lib/mysql \-lmysqlclient_r
\-lpthread \-lz \-lcrypt \-lnsl \-lm \-lpthread]
- \-\-socket [/tmp/mysql.sock]
+ \-\-socket [/tmp/mysql\&.sock]
\-\-port [3306]
- \-\-version [4.0.16]
+ \-\-version [4\&.0\&.16]
\-\-libmysqld\-libs [\-L/usr/local/mysql/lib/mysql \-lmysqld \-lpthread \-lz
\-lcrypt \-lnsl \-lm \-lpthread \-lrt]
.fi
+.if n \{\
.RE
+.\}
.PP
You can use
\fBmysql_config\fR
-within a command line to include the value that it displays for a particular option. For example, to compile a MySQL client program, use
+within a command line to include the value that it displays for a particular option\&. For example, to compile a MySQL client program, use
\fBmysql_config\fR
as follows:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBCFG=/usr/local/mysql/bin/mysql_config\fR
-shell> \fBsh \-c "gcc \-o progname `$CFG \-\-include` progname.c `$CFG \-\-libs`"\fR
+shell> \fBsh \-c "gcc \-o progname `$CFG \-\-include` progname\&.c `$CFG \-\-libs`"\fR
.fi
+.if n \{\
.RE
+.\}
.PP
When you use
\fBmysql_config\fR
-this way, be sure to invoke it within backtick (\(lq`\(rq) characters. That tells the shell to execute it and substitute its output into the surrounding command.
+this way, be sure to invoke it within backtick (\(lq`\(rq) characters\&. That tells the shell to execute it and substitute its output into the surrounding command\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_convert_table_format.1'
--- a/man/mysql_convert_table_format.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_convert_table_format.1 2009-09-16 12:03:18 +0000
@@ -1,117 +1,232 @@
+'\" t
.\" Title: \fBmysql_convert_table_format\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_CONVERT_TAB" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_CONVERT_TAB" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_convert_table_format
.SH "NAME"
mysql_convert_table_format \- convert tables to use a given storage engine
.SH "SYNOPSIS"
-.HP 45
+.HP \w'\fBmysql_convert_table_format\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIdb_name\fR\fR\ 'u
\fBmysql_convert_table_format [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql_convert_table_format\fR
converts the tables in a database to use a particular storage engine (MyISAM
-by default).
+by default)\&.
\fBmysql_convert_table_format\fR
is written in Perl and requires that the
DBI
and
DBD::mysql
Perl modules be installed (see
-Section\ 2.15, \(lqPerl Installation Notes\(rq).
+Section\ \&2.15, \(lqPerl Installation Notes\(rq)\&.
.PP
Invoke
\fBmysql_convert_table_format\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_convert_table_format [\fR\fB\fIoptions\fR\fR\fB]\fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fIdb_name\fR
-argument indicates the database containing the tables to be converted.
+argument indicates the database containing the tables to be converted\&.
.PP
\fBmysql_convert_table_format\fR
-understands the options described in the following list.
-.TP 3n
-\(bu
+supports the options described in the following list\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: help option
+.\" help option: mysql_convert_table_format
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: force option
+.\" force option: mysql_convert_table_format
\fB\-\-force\fR
.sp
-Continue even if errors occur.
-.TP 3n
-\(bu
+Continue even if errors occur\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: host option
+.\" host option: mysql_convert_table_format
\fB\-\-host=\fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: password option
+.\" password option: mysql_convert_table_format
\fB\-\-password=\fR\fB\fIpassword\fR\fR
.sp
-The password to use when connecting to the server. Note that the password value is not optional for this option, unlike for other MySQL programs. You can use an option file to avoid giving the password on the command line.
+The password to use when connecting to the server\&. Note that the password value is not optional for this option, unlike for other MySQL programs\&. You can use an option file to avoid giving the password on the command line\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: port option
+.\" port option: mysql_convert_table_format
\fB\-\-port=\fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: socket option
+.\" socket option: mysql_convert_table_format
\fB\-\-socket=\fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: type option
+.\" type option: mysql_convert_table_format
\fB\-\-type=\fR\fB\fIengine_name\fR\fR
.sp
-Specify the storage engine that the tables should be converted to use. The default is
+Specify the storage engine that the tables should be converted to use\&. The default is
MyISAM
-if this option is not given.
-.TP 3n
-\(bu
+if this option is not given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: user option
+.\" user option: mysql_convert_table_format
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: verbose option
+.\" verbose option: mysql_convert_table_format
\fB\-\-verbose\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_convert_table_format: version option
+.\" version option: mysql_convert_table_format
\fB\-\-version\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_find_rows.1'
--- a/man/mysql_find_rows.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_find_rows.1 2009-09-16 12:03:18 +0000
@@ -1,20 +1,29 @@
+'\" t
.\" Title: \fBmysql_find_rows\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_FIND_ROWS\\F" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_FIND_ROWS\F" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_find_rows
.SH "NAME"
mysql_find_rows \- extract SQL statements from files
.SH "SYNOPSIS"
-.HP 42
-\fBmysql_find_rows [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIfile_name\fR\fR\fB ...]\fR
+.HP \w'\fBmysql_find_rows\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIfile_name\fR\fR\fB\ \&.\&.\&.]\fR\ 'u
+\fBmysql_find_rows [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIfile_name\fR\fR\fB \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
\fBmysql_find_rows\fR
@@ -22,77 +31,137 @@ reads files containing SQL statements an
USE \fIdb_name\fR
or
SET
-statements. The utility was written for use with update log files (as used prior to MySQL 5.0) and as such expects statements to be terminated with semicolon (;) characters. It may be useful with other files that contain SQL statements as long as statements are terminated with semicolons.
+statements\&. The utility was written for use with update log files (as used prior to MySQL 5\&.0) and as such expects statements to be terminated with semicolon (;) characters\&. It may be useful with other files that contain SQL statements as long as statements are terminated with semicolons\&.
.PP
Invoke
\fBmysql_find_rows\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql_find_rows [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIfile_name\fR\fR\fB ...]\fR
+shell> \fBmysql_find_rows [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIfile_name\fR\fR\fB \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Each
\fIfile_name\fR
-argument should be the name of file containing SQL statements. If no file names are given,
+argument should be the name of file containing SQL statements\&. If no file names are given,
\fBmysql_find_rows\fR
-reads the standard input.
+reads the standard input\&.
.PP
Examples:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql_find_rows \-\-regexp=problem_table \-\-rows=20 < update.log
-mysql_find_rows \-\-regexp=problem_table update\-log.1 update\-log.2
+mysql_find_rows \-\-regexp=problem_table \-\-rows=20 < update\&.log
+mysql_find_rows \-\-regexp=problem_table update\-log\&.1 update\-log\&.2
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysql_find_rows\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: help option
+.\" help option: mysql_find_rows
\fB\-\-help\fR,
\fB\-\-Information\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: regexp option
+.\" regexp option: mysql_find_rows
\fB\-\-regexp=\fR\fB\fIpattern\fR\fR
.sp
-Display queries that match the pattern.
-.TP 3n
-\(bu
+Display queries that match the pattern\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: rows option
+.\" rows option: mysql_find_rows
\fB\-\-rows=\fR\fB\fIN\fR\fR
.sp
Quit after displaying
\fIN\fR
-queries.
-.TP 3n
-\(bu
+queries\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: skip-use-db option
+.\" skip-use-db option: mysql_find_rows
\fB\-\-skip\-use\-db\fR
.sp
Do not include
USE \fIdb_name\fR
-statements in the output.
-.TP 3n
-\(bu
+statements in the output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_find_rows: start_row option
+.\" start_row option: mysql_find_rows
\fB\-\-start_row=\fR\fB\fIN\fR\fR
.sp
-Start output from this row.
+Start output from this row\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_fix_extensions.1'
--- a/man/mysql_fix_extensions.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_fix_extensions.1 2009-09-16 12:03:18 +0000
@@ -1,19 +1,28 @@
+'\" t
.\" Title: \fBmysql_fix_extensions\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_FIX_EXTENSI" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_FIX_EXTENSI" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_fix_extensions
.SH "NAME"
mysql_fix_extensions \- normalize table file name extensions
.SH "SYNOPSIS"
-.HP 30
+.HP \w'\fBmysql_fix_extensions\ \fR\fB\fIdata_dir\fR\fR\ 'u
\fBmysql_fix_extensions \fR\fB\fIdata_dir\fR\fR
.SH "DESCRIPTION"
.PP
@@ -21,42 +30,48 @@ mysql_fix_extensions \- normalize table
converts the extensions for
MyISAM
(or
-ISAM) table files to their canonical forms. It looks for files with extensions matching any lettercase variant of
-\fI.frm\fR,
-\fI.myd\fR,
-\fI.myi\fR,
-\fI.isd\fR, and
-\fI.ism\fR
+ISAM) table files to their canonical forms\&. It looks for files with extensions matching any lettercase variant of
+\&.frm,
+\&.myd,
+\&.myi,
+\&.isd, and
+\&.ism
and renames them to have extensions of
-\fI.frm\fR,
-\fI.MYD\fR,
-\fI.MYI\fR,
-\fI.ISD\fR, and
-\fI.ISM\fR, respectively. This can be useful after transferring the files from a system with case\-insensitive file names (such as Windows) to a system with case\-sensitive file names.
+\&.frm,
+\&.MYD,
+\&.MYI,
+\&.ISD, and
+\&.ISM, respectively\&. This can be useful after transferring the files from a system with case\-insensitive file names (such as Windows) to a system with case\-sensitive file names\&.
.PP
Invoke
\fBmysql_fix_extensions\fR
like this, where
\fIdata_dir\fR
-is the path name to the MySQL data directory.
+is the path name to the MySQL data directory\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_fix_extensions \fR\fB\fIdata_dir\fR\fR
.fi
+.if n \{\
.RE
+.\}
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_fix_privilege_tables.1'
--- a/man/mysql_fix_privilege_tables.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_fix_privilege_tables.1 2009-09-16 12:03:18 +0000
@@ -1,123 +1,173 @@
+'\" t
.\" Title: \fBmysql_fix_privilege_tables\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_FIX_PRIVILE" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_FIX_PRIVILE" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_fix_privilege_tables
+.\" upgrading: grant tables
+.\" grant tables: upgrading
.SH "NAME"
mysql_fix_privilege_tables \- upgrade MySQL system tables
.SH "SYNOPSIS"
-.HP 52
+.HP \w'\fBmysql_fix_privilege_tables\ \-\-password=\fR\fB\fIroot_password\fR\fR\ 'u
\fBmysql_fix_privilege_tables \-\-password=\fR\fB\fIroot_password\fR\fR
.SH "DESCRIPTION"
-.PP
-Some releases of MySQL introduce changes to the structure of the system tables in the
-mysql
-database to add new privileges or support new features. When you update to a new version of MySQL, you should update your system tables as well to make sure that their structure is up to date. Otherwise, there might be capabilities that you cannot take advantage of. First, make a backup of your
-mysql
-database, and then use the following procedure.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-As of MySQL 5.1.7,
+In MySQL 5\&.1\&.7,
\fBmysql_fix_privilege_tables\fR
-is superseded by
-\fBmysql_upgrade\fR, which should be used instead. See
-\fBmysql_upgrade\fR(1).
+was superseded by
+\fBmysql_upgrade\fR, which should be used instead\&. See
+\fBmysql_upgrade\fR(1)\&.
+.sp .5v
+.RE
+.PP
+Some releases of MySQL introduce changes to the structure of the system tables in the
+mysql
+database to add new privileges or support new features\&. When you update to a new version of MySQL, you should update your system tables as well to make sure that their structure is up to date\&. Otherwise, there might be capabilities that you cannot take advantage of\&.
+.PP
+\fBmysql_fix_privilege_tables\fR
+is an older script that previously was used to uprade the system tables in the
+mysql
+database after a MySQL upgrade\&.
+.PP
+Before running
+\fBmysql_fix_privilege_tables\fR, make a backup of your
+mysql
+database\&.
.PP
On Unix or Unix\-like systems, update the system tables by running the
\fBmysql_fix_privilege_tables\fR
script:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_fix_privilege_tables\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-You must run this script while the server is running. It attempts to connect to the server running on the local host as
-root. If your
+You must run this script while the server is running\&. It attempts to connect to the server running on the local host as
+root\&. If your
root
account requires a password, indicate the password on the command line like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_fix_privilege_tables \-\-password=\fR\fB\fIroot_password\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fBmysql_fix_privilege_tables\fR
-script performs any actions necessary to convert your system tables to the current format. You might see some
+script performs any actions necessary to convert your system tables to the current format\&. You might see some
Duplicate column name
-warnings as it runs; you can ignore them.
+warnings as it runs; you can ignore them\&.
.PP
-After running the script, stop the server and restart it so that it uses any changes that were made to the system tables.
+After running the script, stop the server and restart it so that any changes made to the system tables take effect\&.
.PP
On Windows systems, MySQL distributions include a
-\fImysql_fix_privilege_tables.sql\fR
+mysql_fix_privilege_tables\&.sql
SQL script that you can run using the
\fBmysql\fR
-client. For example, if your MySQL installation is located at
-\fIC:\\Program Files\\MySQL\\MySQL Server 5.1\fR, the commands look like this:
+client\&. For example, if your MySQL installation is located at
+C:\eProgram Files\eMySQL\eMySQL Server 5\&.1, the commands look like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-C:\\> \fBcd "C:\\Program Files\\MySQL\\MySQL Server 5.1"\fR
-C:\\> \fBbin\\mysql \-u root \-p mysql\fR
-mysql> \fBSOURCE share/mysql_fix_privilege_tables.sql\fR
+C:\e> \fBcd "C:\eProgram Files\eMySQL\eMySQL Server 5\&.1"\fR
+C:\e> \fBbin\emysql \-u root \-p mysql\fR
+mysql> \fBSOURCE share/mysql_fix_privilege_tables\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-Prior to version 5.1.17, this script is found in the
-\fIscripts\fR
-directory.
+Prior to version 5\&.1\&.17, this script is found in the
+scripts
+directory\&.
+.sp .5v
+.RE
.PP
The
\fBmysql\fR
command will prompt you for the
root
-password; enter it when prompted.
+password; enter it when prompted\&.
.PP
-If your installation is located in some other directory, adjust the path names appropriately.
+If your installation is located in some other directory, adjust the path names appropriately\&.
.PP
As with the Unix procedure, you might see some
Duplicate column name
warnings as
\fBmysql\fR
processes the statements in the
-\fImysql_fix_privilege_tables.sql\fR
-script; you can ignore them.
+mysql_fix_privilege_tables\&.sql
+script; you can ignore them\&.
.PP
-After running the script, stop the server and restart it.
+After running the script, stop the server and restart it\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_install_db.1'
--- a/man/mysql_install_db.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_install_db.1 2009-09-16 12:03:18 +0000
@@ -1,33 +1,46 @@
+'\" t
.\" Title: \fBmysql_install_db\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_INSTALL_DB\\" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_INSTALL_DB\" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_install_db
.SH "NAME"
mysql_install_db \- initialize MySQL data directory
.SH "SYNOPSIS"
-.HP 27
+.HP \w'\fBmysql_install_db\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysql_install_db [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysql_install_db\fR
-initializes the MySQL data directory and creates the system tables that it contains, if they do not exist.
+initializes the MySQL data directory and creates the system tables that it contains, if they do not exist\&.
.PP
To invoke
\fBmysql_install_db\fR, use the following syntax:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_install_db [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Because the MySQL server,
\fBmysqld\fR, needs to access the data directory when it runs later, you should either run
@@ -40,21 +53,25 @@ and use the
\fB\-\-user\fR
option to indicate the user name that
\fBmysqld\fR
-will run as. It might be necessary to specify other options such as
+will run as\&. It might be necessary to specify other options such as
\fB\-\-basedir\fR
or
\fB\-\-datadir\fR
if
\fBmysql_install_db\fR
-does not use the correct locations for the installation directory or data directory. For example:
+does not use the correct locations for the installation directory or data directory\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBbin/mysql_install_db \-\-user=mysql \\\fR
- \fB\-\-basedir=/opt/mysql/mysql \\\fR
+shell> \fBbin/mysql_install_db \-\-user=mysql \e\fR
+ \fB\-\-basedir=/opt/mysql/mysql \e\fR
\fB\-\-datadir=/opt/mysql/mysql/data\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysql_install_db\fR
needs to invoke
@@ -64,90 +81,184 @@ with the
and
\fB\-\-skip\-grant\-tables\fR
options (see
-Section\ 2.10.2, \(lqTypical \fBconfigure\fR Options\(rq). If MySQL was configured with the
+Section\ \&2.10.2, \(lqTypical configure Options\(rq)\&. If MySQL was configured with the
\fB\-\-disable\-grant\-options\fR
option,
\fB\-\-bootstrap\fR
and
\fB\-\-skip\-grant\-tables\fR
-will be disabled. To handle this, set the
+will be disabled\&. To handle this, set the
MYSQLD_BOOTSTRAP
-environment variable to the full path name of a server that has all options enabled.
+environment variable to the full path name of a server that has all options enabled\&.
\fBmysql_install_db\fR
-will use that server.
+will use that server\&.
.PP
\fBmysql_install_db\fR
-supports the options in the following list. It also reads option files and supports the options for processing them described at
-Section\ 4.2.3.2.1, \(lqCommand\-Line Options that Affect Option\-File Handling\(rq.
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: basedir option
+.\" basedir option: mysql_install_db
\fB\-\-basedir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL installation directory.
-.TP 3n
-\(bu
+The path to the MySQL installation directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: force option
+.\" force option: mysql_install_db
\fB\-\-force\fR
.sp
-Causes
+Cause
\fBmysql_install_db\fR
-to run even if DNS does not work. In that case, grant table entries that normally use host names will use IP addresses.
-.TP 3n
-\(bu
+to run even if DNS does not work\&. In that case, grant table entries that normally use host names will use IP addresses\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: datadir option
+.\" datadir option: mysql_install_db
+.\" mysql_install_db: ldata option
+.\" ldata option: mysql_install_db
\fB\-\-datadir=\fR\fB\fIpath\fR\fR,
\fB\-\-ldata=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL data directory.
-.TP 3n
-\(bu
+The path to the MySQL data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: rpm option
+.\" rpm option: mysql_install_db
\fB\-\-rpm\fR
.sp
-For internal use. This option is used by RPM files during the MySQL installation process.
-.TP 3n
-\(bu
+For internal use\&. This option is used by RPM files during the MySQL installation process\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: skip-name-resolve option
+.\" skip-name-resolve option: mysql_install_db
\fB\-\-skip\-name\-resolve\fR
.sp
-Use IP addresses rather than host names when creating grant table entries. This option can be useful if your DNS does not work.
-.TP 3n
-\(bu
+Use IP addresses rather than host names when creating grant table entries\&. This option can be useful if your DNS does not work\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: srcdir option
+.\" srcdir option: mysql_install_db
\fB\-\-srcdir=\fR\fB\fIpath\fR\fR
.sp
-For internal use. The directory under which
+For internal use\&. The directory under which
\fBmysql_install_db\fR
-looks for support files such as the error message file and the file for populating the help tables. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+looks for support files such as the error message file and the file for populating the help tables\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: user option
+.\" user option: mysql_install_db
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
The login user name to use for running
-\fBmysqld\fR. Files and directories created by
+\fBmysqld\fR\&. Files and directories created by
\fBmysqld\fR
-will be owned by this user. You must be
+will be owned by this user\&. You must be
root
-to use this option. By default,
+to use this option\&. By default,
\fBmysqld\fR
-runs using your current login name and files and directories that it creates will be owned by you.
-.TP 3n
-\(bu
+runs using your current login name and files and directories that it creates will be owned by you\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: verbose option
+.\" verbose option: mysql_install_db
\fB\-\-verbose\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_install_db: windows option
+.\" windows option: mysql_install_db
\fB\-\-windows\fR
.sp
-For internal use. This option is used for creating Windows distributions.
+For internal use\&. This option is used for creating Windows distributions\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_secure_installation.1'
--- a/man/mysql_secure_installation.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_secure_installation.1 2009-09-16 12:03:18 +0000
@@ -1,67 +1,112 @@
+'\" t
.\" Title: \fBmysql_secure_installation\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_SECURE_INST" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_SECURE_INST" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_secure_installation
.SH "NAME"
mysql_secure_installation \- improve MySQL installation security
.SH "SYNOPSIS"
-.HP 26
+.HP \w'\fBmysql_secure_installation\fR\ 'u
\fBmysql_secure_installation\fR
.SH "DESCRIPTION"
.PP
This program enables you to improve the security of your MySQL installation in the following ways:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can set a password for
root
-accounts.
-.TP 3n
-\(bu
+accounts\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can remove
root
-accounts that are accessible from outside the local host.
-.TP 3n
-\(bu
-You can remove anonymous\-user accounts.
-.TP 3n
-\(bu
+accounts that are accessible from outside the local host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+You can remove anonymous\-user accounts\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You can remove the
test
-database, which by default can be accessed by anonymous users.
-.sp
+database, which by default can be accessed by anonymous users\&.
.RE
.PP
Invoke
\fBmysql_secure_installation\fR
without arguments:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_secure_installation\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-The script will prompt you to determine which actions to perform.
+The script will prompt you to determine which actions to perform\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_setpermission.1'
--- a/man/mysql_setpermission.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_setpermission.1 2009-09-16 12:03:18 +0000
@@ -1,46 +1,59 @@
+'\" t
.\" Title: \fBmysql_setpermission\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_SETPERMISSI" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_SETPERMISSI" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_setpermission
.SH "NAME"
mysql_setpermission \- interactively set permissions in grant tables
.SH "SYNOPSIS"
-.HP 30
+.HP \w'\fBmysql_setpermission\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysql_setpermission [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysql_setpermission\fR
-is a Perl script that was originally written and contributed by Luuk de Boer. It interactively sets permissions in the MySQL grant tables.
+is a Perl script that was originally written and contributed by Luuk de Boer\&. It interactively sets permissions in the MySQL grant tables\&.
\fBmysql_setpermission\fR
is written in Perl and requires that the
DBI
and
DBD::mysql
Perl modules be installed (see
-Section\ 2.15, \(lqPerl Installation Notes\(rq).
+Section\ \&2.15, \(lqPerl Installation Notes\(rq)\&.
.PP
Invoke
\fBmysql_setpermission\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_setpermission [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fIoptions\fR
should be either
\fB\-\-help\fR
-to display the help message, or options that indicate how to connect to the MySQL server. The account used when you connect determines which permissions you have when attempting to modify existing permissions in the grant tables.
+to display the help message, or options that indicate how to connect to the MySQL server\&. The account used when you connect determines which permissions you have when attempting to modify existing permissions in the grant tables\&.
.PP
\fBmysql_setpermissions\fR
also reads options from the
@@ -48,57 +61,119 @@ also reads options from the
and
[perl]
groups in the
-\fI.my.cnf\fR
-file in your home directory, if the file exists.
+\&.my\&.cnf
+file in your home directory, if the file exists\&.
.PP
\fBmysql_setpermission\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: help option
+.\" help option: mysql_setpermission
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: host option
+.\" host option: mysql_setpermission
\fB\-\-host=\fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: password option
+.\" password option: mysql_setpermission
\fB\-\-password=\fR\fB\fIpassword\fR\fR
.sp
-The password to use when connecting to the server. Note that the password value is not optional for this option, unlike for other MySQL programs. You can use an option file to avoid giving the password on the command line.
+The password to use when connecting to the server\&. Note that the password value is not optional for this option, unlike for other MySQL programs\&. You can use an option file to avoid giving the password on the command line\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: port option
+.\" port option: mysql_setpermission
\fB\-\-port=\fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: socket option
+.\" socket option: mysql_setpermission
\fB\-\-socket=\fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_setpermission: user option
+.\" user option: mysql_setpermission
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
+The MySQL user name to use when connecting to the server\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_tzinfo_to_sql.1'
--- a/man/mysql_tzinfo_to_sql.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_tzinfo_to_sql.1 2009-09-16 12:03:18 +0000
@@ -1,19 +1,29 @@
+'\" t
.\" Title: \fBmysql_tzinfo_to_sql\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_TZINFO_TO_S" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_TZINFO_TO_S" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_tzinfo_to_sql
+.\" time zone tables
.SH "NAME"
mysql_tzinfo_to_sql \- load the time zone tables
.SH "SYNOPSIS"
-.HP 30
+.HP \w'\fBmysql_tzinfo_to_sql\ \fR\fB\fIarguments\fR\fR\ 'u
\fBmysql_tzinfo_to_sql \fR\fB\fIarguments\fR\fR
.SH "DESCRIPTION"
.PP
@@ -21,41 +31,49 @@ The
\fBmysql_tzinfo_to_sql\fR
program loads the time zone tables in the
mysql
-database. It is used on systems that have a
+database\&. It is used on systems that have a
zoneinfo
-database (the set of files describing time zones). Examples of such systems are Linux, FreeBSD, Sun Solaris, and Mac OS X. One likely location for these files is the
-\fI/usr/share/zoneinfo\fR
-directory (\fI/usr/share/lib/zoneinfo\fR
-on Solaris). If your system does not have a zoneinfo database, you can use the downloadable package described in
-Section\ 9.7, \(lqMySQL Server Time Zone Support\(rq.
+database (the set of files describing time zones)\&. Examples of such systems are Linux, FreeBSD, Sun Solaris, and Mac OS X\&. One likely location for these files is the
+/usr/share/zoneinfo
+directory (/usr/share/lib/zoneinfo
+on Solaris)\&. If your system does not have a zoneinfo database, you can use the downloadable package described in
+Section\ \&9.7, \(lqMySQL Server Time Zone Support\(rq\&.
.PP
\fBmysql_tzinfo_to_sql\fR
can be invoked several ways:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_tzinfo_to_sql \fR\fB\fItz_dir\fR\fR
shell> \fBmysql_tzinfo_to_sql \fR\fB\fItz_file tz_name\fR\fR
shell> \fBmysql_tzinfo_to_sql \-\-leap \fR\fB\fItz_file\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For the first invocation syntax, pass the zoneinfo directory path name to
\fBmysql_tzinfo_to_sql\fR
and send the output into the
\fBmysql\fR
-program. For example:
+program\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_tzinfo_to_sql /usr/share/zoneinfo | mysql \-u root mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysql_tzinfo_to_sql\fR
-reads your system's time zone files and generates SQL statements from them.
+reads your system\'s time zone files and generates SQL statements from them\&.
\fBmysql\fR
-processes those statements to load the time zone tables.
+processes those statements to load the time zone tables\&.
.PP
The second syntax causes
\fBmysql_tzinfo_to_sql\fR
@@ -64,38 +82,48 @@ to load a single time zone file
that corresponds to a time zone name
\fItz_name\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_tzinfo_to_sql \fR\fB\fItz_file\fR\fR\fB \fR\fB\fItz_name\fR\fR\fB | mysql \-u root mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If your time zone needs to account for leap seconds, invoke
\fBmysql_tzinfo_to_sql\fR
-using the third syntax, which initializes the leap second information.
+using the third syntax, which initializes the leap second information\&.
\fItz_file\fR
is the name of your time zone file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_tzinfo_to_sql \-\-leap \fR\fB\fItz_file\fR\fR\fB | mysql \-u root mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
After running
-\fBmysql_tzinfo_to_sql\fR, it is best to restart the server so that it does not continue to use any previously cached time zone data.
+\fBmysql_tzinfo_to_sql\fR, it is best to restart the server so that it does not continue to use any previously cached time zone data\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_upgrade.1'
--- a/man/mysql_upgrade.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_upgrade.1 2009-09-16 12:03:18 +0000
@@ -1,190 +1,371 @@
+'\" t
.\" Title: \fBmysql_upgrade\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_UPGRADE\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_UPGRADE\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_upgrade
+.\" upgrading MySQL
+.\" MySQL: upgrading
.SH "NAME"
mysql_upgrade \- check tables for MySQL upgrade
.SH "SYNOPSIS"
-.HP 24
+.HP \w'\fBmysql_upgrade\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysql_upgrade [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysql_upgrade\fR
-should be executed each time you upgrade MySQL. It checks all tables in all databases for incompatibilities with the current version of MySQL Server. If a table is found to have a possible incompatibility, it is checked. If any problems are found, the table is repaired.
+examines all tables in all databases for incompatibilities with the current version of MySQL Server\&.
\fBmysql_upgrade\fR
-also upgrades the system tables so that you can take advantage of new privileges or capabilities that might have been added.
+also upgrades the system tables so that you can take advantage of new privileges or capabilities that might have been added\&.
.PP
-All checked and repaired tables are marked with the current MySQL version number. This ensures that next time you run
\fBmysql_upgrade\fR
-with the same version of the server, it can tell whether there is any need to check or repair the table again.
+should be executed each time you upgrade MySQL\&. It supersedes the older
+\fBmysql_fix_privilege_tables\fR
+script, which should no longer be used\&.
.PP
+If a table is found to have a possible incompatibility,
\fBmysql_upgrade\fR
-also saves the MySQL version number in a file named
-\fImysql_upgrade_info\fR
-in the data directory. This is used to quickly check if all tables have been checked for this release so that table\-checking can be skipped. To ignore this file, use the
-\fB\-\-force\fR
-option.
+performs a table check\&. If any problems are found, a table repair is attempted\&. If the table cannot be repaired, see
+Section\ \&2.12.4, \(lqRebuilding or Repairing Tables or Indexes\(rq
+for manual table repair strategies\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBCaution\fR
+.ps -1
+.br
.PP
-Some upgrade incompatibilities may require special handling
+You should always back up your current MySQL installation
\fIbefore\fR
-you upgrade your MySQL installation and run
-\fBmysql_upgrade\fR. See
-Section\ 2.12.1, \(lqUpgrading MySQL\(rq, for instructions on determining whether any such incompatibilities apply to your installation and how to handle them.
+performing an upgrade\&. See
+Section\ \&6.1, \(lqDatabase Backups\(rq\&.
+.PP
+Some upgrade incompatibilities may require special handling before you upgrade your MySQL installation and run
+\fBmysql_upgrade\fR\&. See
+Section\ \&2.12.1, \(lqUpgrading MySQL\(rq, for instructions on determining whether any such incompatibilities apply to your installation and how to handle them\&.
+.sp .5v
+.RE
+.PP
+To use
+\fBmysql_upgrade\fR, make sure that the server is running, and then invoke it like this:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+shell> \fBmysql_upgrade [\fR\fB\fIoptions\fR\fR\fB]\fR
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+After running
+\fBmysql_upgrade\fR, stop the server and restart it so that any changes made to the system tables take effect\&.
.PP
-To check and repair tables and to upgrade the system tables,
\fBmysql_upgrade\fR
-executes the following commands:
+executes the following commands to check and repair tables and to upgrade the system tables:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlcheck \-\-check\-upgrade \-\-all\-databases \-\-auto\-repair
-mysql_fix_privilege_tables
+mysqlcheck \-\-all\-databases \-\-check\-upgrade \-\-auto\-repair
+mysql < \fIfix_priv_tables\fR
mysqlcheck \-\-all\-databases \-\-check\-upgrade \-\-fix\-db\-names \-\-fix\-table\-names
.fi
+.if n \{\
.RE
-.sp
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-\fBNote\fR
+.\}
.PP
-Prior to MySQL 5.1.31,
+Notes about the preceding commands:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Because
+\fBmysql_upgrade\fR
+invokes
+\fBmysqlcheck\fR
+with the
+\fB\-\-all\-databases\fR
+option, it processes all tables in all databases, which might take a long time to complete\&. Each table is locked and therefore unavailable to other sessions while it is being processed\&. Check and repair operations can be time\-consuming, particularly for large tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+For details about what checks the
+\fB\-\-check\-upgrade\fR
+option entails, see the description of the
+FOR UPGRADE
+option of the
+CHECK TABLE
+statement (see
+Section\ \&12.5.2.3, \(lqCHECK TABLE Syntax\(rq)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fIfix_priv_tables\fR
+represents a script generated interally by
+\fBmysql_upgrade\fR
+that contains SQL statements to upgrade the tables in the
+mysql
+database\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Prior to MySQL 5\&.1\&.31,
\fBmysql_upgrade\fR
-does not run the third command, which is necessary to re\-encode database or table names that contain non\-alphanumeric characters. (They still appear after the upgrade with the
+does not run the second
+\fBmysqlcheck\fR
+command, which is necessary to re\-encode database or table names that contain nonalphanumeric characters\&. (They still appear after the upgrade with the
#mysql50#
prefix described in
-Section\ 8.2.3, \(lqMapping of Identifiers to File Names\(rq.) If you have such database or table names, execute the third command manually after executing
-\fBmysql_upgrade\fR.
+Section\ \&8.2.3, \(lqMapping of Identifiers to File Names\(rq\&.) If you have such database or table names, execute the second
+\fBmysqlcheck\fR
+command manually after executing
+\fBmysql_upgrade\fR\&.
+.RE
.PP
+All checked and repaired tables are marked with the current MySQL version number\&. This ensures that next time you run
\fBmysql_upgrade\fR
-supersedes the older
-\fBmysql_fix_privilege_tables\fR
-script. In MySQL 5.1.7,
-\fBmysql_upgrade \fR
-was added as a shell script and worked only for Unix systems. As of MySQL 5.1.10,
+with the same version of the server, it can tell whether there is any need to check or repair the table again\&.
+.\" mysql_upgrade_info file: mysql_upgrade
+.\" mysql_upgrade: mysql_upgrade_info file
+.PP
\fBmysql_upgrade\fR
-is an executable binary and is available on all systems. On systems older than those supporting
-\fBmysql_upgrade\fR, you can execute the
-\fBmysqlcheck\fR
-command manually, and then upgrade your system tables as described in
-\fBmysql_fix_privilege_tables\fR(1).
+also saves the MySQL version number in a file named
+mysql_upgrade_info
+in the data directory\&. This is used to quickly check whether all tables have been checked for this release so that table\-checking can be skipped\&. To ignore this file and perform the check regardless, use the
+\fB\-\-force\fR
+option\&.
.PP
-If you install MySQL from RPM packages on Linux, you must install the server and client RPMs.
+If you install MySQL from RPM packages on Linux, you must install the server and client RPMs\&.
\fBmysql_upgrade\fR
is included in the server RPM but requires the client RPM because the latter includes
-\fBmysqlcheck\fR. (See
-Section\ 2.4, \(lqInstalling MySQL from RPM Packages on Linux\(rq.)
-.PP
-For details about what is checked, see the description of the
-FOR UPGRADE
-option of the
-CHECK TABLE
-statement (see
-Section\ 12.5.2.3, \(lqCHECK TABLE Syntax\(rq).
-.PP
-To use
-\fBmysql_upgrade\fR, make sure that the server is running, and then invoke it like this:
-.sp
-.RS 3n
-.nf
-shell> \fBmysql_upgrade [\fR\fB\fIoptions\fR\fR\fB]\fR
-.fi
-.RE
+\fBmysqlcheck\fR\&. (See
+Section\ \&2.4, \(lqInstalling MySQL from RPM Packages on Linux\(rq\&.)
.PP
-After running
-\fBmysql_upgrade\fR, stop the server and restart it so that it uses any changes that were made to the system tables.
+In MySQL 5\&.1\&.7,
+\fBmysql_upgrade \fR
+was added as a shell script and worked only for Unix systems\&. As of MySQL 5\&.1\&.10,
+\fBmysql_upgrade\fR
+is an executable binary and is available on all systems\&.
.PP
\fBmysql_upgrade\fR
-reads options from the command line and from the
+supports the options in the following list\&. It also reads option files (the
[mysql_upgrade]
-group in option files. It supports the options in the following list. Other options are passed to
-\fBmysqlcheck\fR
-and to
-\fBmysql_fix_privilege_tables\fR. For example, it might be necessary to specify the
+and
+[client]
+groups) and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&. Other options are passed to
+\fBmysqlcheck\fR\&. For example, it might be necessary to specify the
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: help option
+.\" help option: mysql_upgrade
\fB\-\-help\fR
.sp
-Display a short help message and exit.
-.TP 3n
-\(bu
+Display a short help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: basedir option
+.\" basedir option: mysql_upgrade
\fB\-\-basedir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL installation directory.
-.TP 3n
-\(bu
+The path to the MySQL installation directory\&. This option is accepted for backward compatibility but ignored\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: datadir option
+.\" datadir option: mysql_upgrade
\fB\-\-datadir=\fR\fB\fIpath\fR\fR
.sp
-The path to the data directory.
-.TP 3n
-\(bu
+The path to the data directory\&. This option is accepted for backward compatibility but ignored\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: debug-check option
+.\" debug-check option: mysql_upgrade
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: debug-info option
+.\" debug-info option: mysql_upgrade
\fB\-\-debug\-info\fR,
\fB\-T\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: force option
+.\" force option: mysql_upgrade
\fB\-\-force\fR
.sp
-Force execution of
+Ignore the
+mysql_upgrade_info
+file and force execution of
\fBmysqlcheck\fR
even if
\fBmysql_upgrade\fR
-has already been executed for the current version of MySQL. (In other words, this option causes the
-\fImysql_upgrade_info\fR
-file to be ignored.)
-.TP 3n
-\(bu
+has already been executed for the current version of MySQL\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: tmpdir option
+.\" tmpdir option: mysql_upgrade
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR,
\fB\-t \fR\fB\fIpath\fR\fR
.sp
-The path name of the directory to use for creating temporary files. This option was added in MySQL 5.1.25.
-.TP 3n
-\(bu
+The path name of the directory to use for creating temporary files\&. This option was added in MySQL 5\&.1\&.25\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: user option
+.\" user option: mysql_upgrade
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server. The default user name is
-root.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&. The default user name is
+root\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_upgrade: verbose option
+.\" verbose option: mysql_upgrade
\fB\-\-verbose\fR
.sp
-Verbose mode. Print more information about what the program does.
+Verbose mode\&. Print more information about what the program does\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_waitpid.1'
--- a/man/mysql_waitpid.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_waitpid.1 2009-09-16 12:03:18 +0000
@@ -1,91 +1,136 @@
+'\" t
.\" Title: \fBmysql_waitpid\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_WAITPID\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_WAITPID\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_waitpid
.SH "NAME"
mysql_waitpid \- kill process and wait for its termination
.SH "SYNOPSIS"
-.HP 38
+.HP \w'\fBmysql_waitpid\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIpid\fR\fR\fB\ \fR\fB\fIwait_time\fR\fR\ 'u
\fBmysql_waitpid [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpid\fR\fR\fB \fR\fB\fIwait_time\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql_waitpid\fR
-signals a process to terminate and waits for the process to exit. It uses the
+signals a process to terminate and waits for the process to exit\&. It uses the
kill()
-system call and Unix signals, so it runs on Unix and Unix\-like systems.
+system call and Unix signals, so it runs on Unix and Unix\-like systems\&.
.PP
Invoke
\fBmysql_waitpid\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_waitpid [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIpid\fR\fR\fB \fR\fB\fIwait_time\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysql_waitpid\fR
sends signal 0 to the process identified by
\fIpid\fR
and waits up to
\fIwait_time\fR
-seconds for the process to terminate.
+seconds for the process to terminate\&.
\fIpid\fR
and
\fIwait_time\fR
-must be positive integers.
+must be positive integers\&.
.PP
If process termination occurs within the wait time or the process does not exist,
\fBmysql_waitpid\fR
-returns 0. Otherwise, it returns 1.
+returns 0\&. Otherwise, it returns 1\&.
.PP
If the
kill()
system call cannot handle signal 0,
\fBmysql_waitpid()\fR
-uses signal 1 instead.
+uses signal 1 instead\&.
.PP
\fBmysql_waitpid\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_waitpid: help option
+.\" help option: mysql_waitpid
\fB\-\-help\fR,
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_waitpid: verbose option
+.\" verbose option: mysql_waitpid
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Display a warning if signal 0 could not be used and signal 1 is used instead.
-.TP 3n
-\(bu
+Verbose mode\&. Display a warning if signal 0 could not be used and signal 1 is used instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysql_waitpid: version option
+.\" version option: mysql_waitpid
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysql_zap.1'
--- a/man/mysql_zap.1 2009-05-25 09:59:47 +0000
+++ b/man/mysql_zap.1 2009-09-16 12:03:18 +0000
@@ -1,93 +1,132 @@
+'\" t
.\" Title: \fBmysql_zap\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQL_ZAP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQL_ZAP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysql_zap
.SH "NAME"
mysql_zap \- kill processes that match a pattern
.SH "SYNOPSIS"
-.HP 36
+.HP \w'\fBmysql_zap\ [\-\fR\fB\fIsignal\fR\fR\fB]\ [\-?Ift]\ \fR\fB\fIpattern\fR\fR\ 'u
\fBmysql_zap [\-\fR\fB\fIsignal\fR\fR\fB] [\-?Ift] \fR\fB\fIpattern\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysql_zap\fR
-kills processes that match a pattern. It uses the
+kills processes that match a pattern\&. It uses the
\fBps\fR
-command and Unix signals, so it runs on Unix and Unix\-like systems.
+command and Unix signals, so it runs on Unix and Unix\-like systems\&.
.PP
Invoke
\fBmysql_zap\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql_zap [\-\fR\fB\fIsignal\fR\fR\fB] [\-?Ift] \fR\fB\fIpattern\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
A process matches if its output line from the
\fBps\fR
-command contains the pattern. By default,
+command contains the pattern\&. By default,
\fBmysql_zap\fR
-asks for confirmation for each process. Respond
+asks for confirmation for each process\&. Respond
y
to kill the process, or
q
to exit
-\fBmysql_zap\fR. For any other response,
+\fBmysql_zap\fR\&. For any other response,
\fBmysql_zap\fR
-does not attempt to kill the process.
+does not attempt to kill the process\&.
.PP
If the
\fB\-\fR\fB\fIsignal\fR\fR
-option is given, it specifies the name or number of the signal to send to each process. Otherwise,
+option is given, it specifies the name or number of the signal to send to each process\&. Otherwise,
\fBmysql_zap\fR
tries first with
TERM
(signal 15) and then with
KILL
-(signal 9).
+(signal 9)\&.
.PP
\fBmysql_zap\fR
-understands the following additional options:
-.TP 3n
-\(bu
+supports the following additional options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-\-help\fR,
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-f\fR
.sp
-Force mode.
+Force mode\&.
\fBmysql_zap\fR
-attempts to kill each process without confirmation.
-.TP 3n
-\(bu
+attempts to kill each process without confirmation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-t\fR
.sp
-Test mode. Display information about each process but do not kill it.
+Test mode\&. Display information about each process but do not kill it\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlaccess.1'
--- a/man/mysqlaccess.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlaccess.1 2009-09-16 12:03:18 +0000
@@ -1,218 +1,435 @@
+'\" t
.\" Title: \fBmysqlaccess\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLACCESS\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLACCESS\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlaccess
.SH "NAME"
mysqlaccess \- client for checking access privileges
.SH "SYNOPSIS"
-.HP 56
+.HP \w'\fBmysqlaccess\ [\fR\fB\fIhost_name\fR\fR\fB\ [\fR\fB\fIuser_name\fR\fR\fB\ [\fR\fB\fIdb_name\fR\fR\fB]]]\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysqlaccess [\fR\fB\fIhost_name\fR\fR\fB [\fR\fB\fIuser_name\fR\fR\fB [\fR\fB\fIdb_name\fR\fR\fB]]] [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysqlaccess\fR
-is a diagnostic tool that Yves Carlier has provided for the MySQL distribution. It checks the access privileges for a host name, user name, and database combination. Note that
+is a diagnostic tool that Yves Carlier has provided for the MySQL distribution\&. It checks the access privileges for a host name, user name, and database combination\&. Note that
\fBmysqlaccess\fR
checks access using only the
user,
db, and
host
-tables. It does not check table, column, or routine privileges specified in the
+tables\&. It does not check table, column, or routine privileges specified in the
tables_priv,
columns_priv, or
procs_priv
-tables.
+tables\&.
.PP
Invoke
\fBmysqlaccess\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlaccess [\fR\fB\fIhost_name\fR\fR\fB [\fR\fB\fIuser_name\fR\fR\fB [\fR\fB\fIdb_name\fR\fR\fB]]] [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqlaccess\fR
-understands the following options:
-.TP 3n
-\(bu
+supports the following options:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: help option
+.\" help option: mysqlaccess
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: brief option
+.\" brief option: mysqlaccess
\fB\-\-brief\fR,
\fB\-b\fR
.sp
-Generate reports in single\-line tabular format.
-.TP 3n
-\(bu
+Generate reports in single\-line tabular format\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: commit option
+.\" commit option: mysqlaccess
\fB\-\-commit\fR
.sp
-Copy the new access privileges from the temporary tables to the original grant tables. The grant tables must be flushed for the new privileges to take effect. (For example, execute a
+Copy the new access privileges from the temporary tables to the original grant tables\&. The grant tables must be flushed for the new privileges to take effect\&. (For example, execute a
\fBmysqladmin reload\fR
-command.)
-.TP 3n
-\(bu
+command\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: copy option
+.\" copy option: mysqlaccess
\fB\-\-copy\fR
.sp
-Reload the temporary grant tables from original ones.
-.TP 3n
-\(bu
+Reload the temporary grant tables from original ones\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: db option
+.\" db option: mysqlaccess
\fB\-\-db=\fR\fB\fIdb_name\fR\fR,
\fB\-d \fR\fB\fIdb_name\fR\fR
.sp
-Specify the database name.
-.TP 3n
-\(bu
+Specify the database name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: debug option
+.\" debug option: mysqlaccess
\fB\-\-debug=\fR\fB\fIN\fR\fR
.sp
-Specify the debug level.
+Specify the debug level\&.
\fIN\fR
-can be an integer from 0 to 3.
-.TP 3n
-\(bu
+can be an integer from 0 to 3\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: host option
+.\" host option: mysqlaccess
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-The host name to use in the access privileges.
-.TP 3n
-\(bu
+The host name to use in the access privileges\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: howto option
+.\" howto option: mysqlaccess
\fB\-\-howto\fR
.sp
Display some examples that show how to use
-\fBmysqlaccess\fR.
-.TP 3n
-\(bu
+\fBmysqlaccess\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: old_server option
+.\" old_server option: mysqlaccess
\fB\-\-old_server\fR
.sp
-Assume that the server is an old MySQL server (before MySQL 3.21) that does not yet know how to handle full
+Assume that the server is an old MySQL server (before MySQL 3\&.21) that does not yet know how to handle full
WHERE
-clauses.
-.TP 3n
-\(bu
+clauses\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: password option
+.\" password option: mysqlaccess
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you omit the
+The password to use when connecting to the server\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: plan option
+.\" plan option: mysqlaccess
\fB\-\-plan\fR
.sp
-Display suggestions and ideas for future releases.
-.TP 3n
-\(bu
+Display suggestions and ideas for future releases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: preview option
+.\" preview option: mysqlaccess
\fB\-\-preview\fR
.sp
-Show the privilege differences after making changes to the temporary grant tables.
-.TP 3n
-\(bu
+Show the privilege differences after making changes to the temporary grant tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: relnotes option
+.\" relnotes option: mysqlaccess
\fB\-\-relnotes\fR
.sp
-Display the release notes.
-.TP 3n
-\(bu
+Display the release notes\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: rhost option
+.\" rhost option: mysqlaccess
\fB\-\-rhost=\fR\fB\fIhost_name\fR\fR,
\fB\-H \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: rollback option
+.\" rollback option: mysqlaccess
\fB\-\-rollback\fR
.sp
-Undo the most recent changes to the temporary grant tables.
-.TP 3n
-\(bu
+Undo the most recent changes to the temporary grant tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: spassword option
+.\" spassword option: mysqlaccess
\fB\-\-spassword[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-P[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server as the superuser. If you omit the
+The password to use when connecting to the server as the superuser\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: superuser option
+.\" superuser option: mysqlaccess
\fB\-\-superuser=\fR\fB\fIuser_name\fR\fR,
\fB\-U \fR\fB\fIuser_name\fR\fR
.sp
-Specify the user name for connecting as the superuser.
-.TP 3n
-\(bu
+Specify the user name for connecting as the superuser\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: table option
+.\" table option: mysqlaccess
\fB\-\-table\fR,
\fB\-t\fR
.sp
-Generate reports in table format.
-.TP 3n
-\(bu
+Generate reports in table format\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: user option
+.\" user option: mysqlaccess
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The user name to use in the access privileges.
-.TP 3n
-\(bu
+The user name to use in the access privileges\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlaccess: version option
+.\" version option: mysqlaccess
\fB\-\-version\fR,
\fB\-v\fR
.sp
-Display version information and exit.
-.sp
+Display version information and exit\&.
.RE
.PP
-If your MySQL distribution is installed in some non\-standard location, you must change the location where
+If your MySQL distribution is installed in some nonstandard location, you must change the location where
\fBmysqlaccess\fR
expects to find the
\fBmysql\fR
-client. Edit the
-\fImysqlaccess\fR
-script at approximately line 18. Search for a line that looks like this:
-.sp
-.RS 3n
+client\&. Edit the
+mysqlaccess
+script at approximately line 18\&. Search for a line that looks like this:
+.sp
+.if n \{\
+.RS 4
+.\}
.nf
-$MYSQL = '/usr/local/bin/mysql'; # path to mysql executable
+$MYSQL = \'/usr/local/bin/mysql\'; # path to mysql executable
.fi
+.if n \{\
.RE
+.\}
.PP
Change the path to reflect the location where
\fBmysql\fR
-actually is stored on your system. If you do not do this, a
+actually is stored on your system\&. If you do not do this, a
Broken pipe
error will occur when you run
-\fBmysqlaccess\fR.
+\fBmysqlaccess\fR\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqladmin.1'
--- a/man/mysqladmin.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqladmin.1 2009-09-16 12:03:18 +0000
@@ -1,210 +1,421 @@
+'\" t
.\" Title: \fBmysqladmin\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLADMIN\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLADMIN\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqladmin
+.\" administration: server
+.\" server administration
.SH "NAME"
mysqladmin \- client for administering a MySQL server
.SH "SYNOPSIS"
-.HP 79
-\fBmysqladmin [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-options\fR\fR\fB] [\fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-options\fR\fR\fB]] ...\fR
+.HP \w'\fBmysqladmin\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIcommand\fR\fR\fB\ [\fR\fB\fIcommand\-options\fR\fR\fB]\ [\fR\fB\fIcommand\fR\fR\fB\ [\fR\fB\fIcommand\-options\fR\fR\fB]]\ \&.\&.\&.\fR\ 'u
+\fBmysqladmin [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-options\fR\fR\fB] [\fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-options\fR\fR\fB]] \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
\fBmysqladmin\fR
-is a client for performing administrative operations. You can use it to check the server's configuration and current status, to create and drop databases, and more.
+is a client for performing administrative operations\&. You can use it to check the server\'s configuration and current status, to create and drop databases, and more\&.
.PP
Invoke
\fBmysqladmin\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqladmin [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-arg\fR\fR\fB] [\fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-arg\fR\fR\fB]] ...\fR
+shell> \fBmysqladmin [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-arg\fR\fR\fB] [\fR\fB\fIcommand\fR\fR\fB [\fR\fB\fIcommand\-arg\fR\fR\fB]] \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqladmin\fR
-supports the commands described in the following list. Some of the commands take an argument following the command name.
-.TP 3n
-\(bu
+supports the commands described in the following list\&. Some of the commands take an argument following the command name\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
create \fIdb_name\fR
.sp
Create a new database named
-\fIdb_name\fR.
-.TP 3n
-\(bu
+\fIdb_name\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
debug
.sp
-Tell the server to write debug information to the error log.
+Tell the server to write debug information to the error log\&.
+.sp
+Beginning with MySQL 5\&.1\&.12, this includes information about the Event Scheduler\&. See
+Section\ \&19.4.5, \(lqEvent Scheduler Status\(rq\&.
+.RE
.sp
-Beginning with MySQL 5.1.12, this includes information about the Event Scheduler. See
-Section\ 19.4.5, \(lqEvent Scheduler Status\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
drop \fIdb_name\fR
.sp
Delete the database named
\fIdb_name\fR
-and all its tables.
-.TP 3n
-\(bu
+and all its tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
extended\-status
.sp
-Display the server status variables and their values.
-.TP 3n
-\(bu
+Display the server status variables and their values\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-hosts
.sp
-Flush all information in the host cache.
-.TP 3n
-\(bu
+Flush all information in the host cache\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-logs
.sp
-Flush all logs.
-.TP 3n
-\(bu
+Flush all logs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-privileges
.sp
Reload the grant tables (same as
-reload).
-.TP 3n
-\(bu
+reload)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-status
.sp
-Clear status variables.
-.TP 3n
-\(bu
+Clear status variables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-tables
.sp
-Flush all tables.
-.TP 3n
-\(bu
+Flush all tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
flush\-threads
.sp
-Flush the thread cache.
-.TP 3n
-\(bu
-kill \fIid\fR,\fIid\fR,...
-.sp
-Kill server threads. If multiple thread ID values are given, there must be no spaces in the list.
-.TP 3n
-\(bu
+Flush the thread cache\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+kill \fIid\fR,\fIid\fR,\&.\&.\&.
+.sp
+Kill server threads\&. If multiple thread ID values are given, there must be no spaces in the list\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
old\-password \fInew\-password\fR
.sp
This is like the
password
-command but stores the password using the old (pre\-4.1) password\-hashing format. (See
-Section\ 5.5.6.3, \(lqPassword Hashing in MySQL\(rq.)
-.TP 3n
-\(bu
+command but stores the password using the old (pre\-4\&.1) password\-hashing format\&. (See
+Section\ \&5.5.6.3, \(lqPassword Hashing in MySQL\(rq\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
password \fInew\-password\fR
.sp
-Set a new password. This changes the password to
+Set a new password\&. This changes the password to
\fInew\-password\fR
for the account that you use with
\fBmysqladmin\fR
-for connecting to the server. Thus, the next time you invoke
+for connecting to the server\&. Thus, the next time you invoke
\fBmysqladmin\fR
-(or any other client program) using the same account, you will need to specify the new password.
+(or any other client program) using the same account, you will need to specify the new password\&.
.sp
If the
\fInew\-password\fR
-value contains spaces or other characters that are special to your command interpreter, you need to enclose it within quotes. On Windows, be sure to use double quotes rather than single quotes; single quotes are not stripped from the password, but rather are interpreted as part of the password. For example:
+value contains spaces or other characters that are special to your command interpreter, you need to enclose it within quotes\&. On Windows, be sure to use double quotes rather than single quotes; single quotes are not stripped from the password, but rather are interpreted as part of the password\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqladmin password "my new password"\fR
.fi
+.if n \{\
.RE
+.\}
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBCaution\fR
+.ps -1
+.br
Do not use this command used if the server was started with the
\fB\-\-skip\-grant\-tables\fR
-option. No password change will be applied. This is true even if you precede the
+option\&. No password change will be applied\&. This is true even if you precede the
password
command with
flush\-privileges
-on the same command line to re\-enable the grant tables because the flush operation occurs after you connect. However, you can use
+on the same command line to re\-enable the grant tables because the flush operation occurs after you connect\&. However, you can use
\fBmysqladmin flush\-privileges\fR
to re\-enable the grant table and then use a separate
\fBmysqladmin password\fR
-command to change the password.
-.TP 3n
-\(bu
+command to change the password\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
ping
.sp
-Check whether the server is alive. The return status from
+Check whether the server is alive\&. The return status from
\fBmysqladmin\fR
-is 0 if the server is running, 1 if it is not. This is 0 even in case of an error such as
-Access denied, because this means that the server is running but refused the connection, which is different from the server not running.
-.TP 3n
-\(bu
+is 0 if the server is running, 1 if it is not\&. This is 0 even in case of an error such as
+Access denied, because this means that the server is running but refused the connection, which is different from the server not running\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
processlist
.sp
-Show a list of active server threads. This is like the output of the
+Show a list of active server threads\&. This is like the output of the
SHOW PROCESSLIST
-statement. If the
+statement\&. If the
\fB\-\-verbose\fR
option is given, the output is like that of
-SHOW FULL PROCESSLIST. (See
-Section\ 12.5.5.31, \(lqSHOW PROCESSLIST Syntax\(rq.)
-.TP 3n
-\(bu
+SHOW FULL PROCESSLIST\&. (See
+Section\ \&12.5.5.31, \(lqSHOW PROCESSLIST Syntax\(rq\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
reload
.sp
-Reload the grant tables.
-.TP 3n
-\(bu
+Reload the grant tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
refresh
.sp
-Flush all tables and close and open log files.
-.TP 3n
-\(bu
+Flush all tables and close and open log files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
shutdown
.sp
-Stop the server.
-.TP 3n
-\(bu
+Stop the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
start\-slave
.sp
-Start replication on a slave server.
-.TP 3n
-\(bu
+Start replication on a slave server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
status
.sp
-Display a short server status message.
-.TP 3n
-\(bu
+Display a short server status message\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
stop\-slave
.sp
-Stop replication on a slave server.
-.TP 3n
-\(bu
+Stop replication on a slave server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
variables
.sp
-Display the server system variables and their values.
-.TP 3n
-\(bu
-version
+Display the server system variables and their values\&.
+.RE
.sp
-Display version information from the server.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+version
.sp
+Display version information from the server\&.
.RE
.PP
-All commands can be shortened to any unique prefix. For example:
+All commands can be shortened to any unique prefix\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqladmin proc stat\fR
+\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
@@ -212,299 +423,658 @@ shell> \fBmysqladmin proc stat\fR
+\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
| 51 | monty | localhost | | Query | 0 | | show processlist |
+\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
-Uptime: 1473624 Threads: 1 Questions: 39487
-Slow queries: 0 Opens: 541 Flush tables: 1
-Open tables: 19 Queries per second avg: 0.0268
+Uptime: 1473624 Threads: 1 Questions: 39487
+Slow queries: 0 Opens: 541 Flush tables: 1
+Open tables: 19 Queries per second avg: 0\&.0268
.fi
+.if n \{\
.RE
+.\}
+.sp
+.\" status command: results
.PP
The
\fBmysqladmin status\fR
command result displays the following values:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" uptime
Uptime
.sp
-The number of seconds the MySQL server has been running.
-.TP 3n
-\(bu
+The number of seconds the MySQL server has been running\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" threads
Threads
.sp
-The number of active threads (clients).
-.TP 3n
-\(bu
+The number of active threads (clients)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" questions
Questions
.sp
-The number of questions (queries) from clients since the server was started.
-.TP 3n
-\(bu
+The number of questions (queries) from clients since the server was started\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" slow queries
Slow queries
.sp
The number of queries that have taken more than
long_query_time
-seconds. See
-Section\ 5.2.5, \(lqThe Slow Query Log\(rq.
-.TP 3n
-\(bu
+seconds\&. See
+Section\ \&5.2.5, \(lqThe Slow Query Log\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" opens
Opens
.sp
-The number of tables the server has opened.
-.TP 3n
-\(bu
+The number of tables the server has opened\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" flush tables
+.\" tables: flush
Flush tables
.sp
The number of
flush\-*,
refresh, and
reload
-commands the server has executed.
-.TP 3n
-\(bu
+commands the server has executed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" open tables
Open tables
.sp
-The number of tables that currently are open.
-.TP 3n
-\(bu
+The number of tables that currently are open\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" memory use
Memory in use
.sp
The amount of memory allocated directly by
-\fBmysqld\fR. This value is displayed only when MySQL has been compiled with
-\fB\-\-with\-debug=full\fR.
-.TP 3n
-\(bu
+\fBmysqld\fR\&. This value is displayed only when MySQL has been compiled with
+\fB\-\-with\-debug=full\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" maximum memory used
Maximum memory used
.sp
The maximum amount of memory allocated directly by
-\fBmysqld\fR. This value is displayed only when MySQL has been compiled with
-\fB\-\-with\-debug=full\fR.
-.sp
+\fBmysqld\fR\&. This value is displayed only when MySQL has been compiled with
+\fB\-\-with\-debug=full\fR\&.
.RE
.PP
If you execute
\fBmysqladmin shutdown\fR
when connecting to a local server using a Unix socket file,
\fBmysqladmin\fR
-waits until the server's process ID file has been removed, to ensure that the server has stopped properly.
+waits until the server\'s process ID file has been removed, to ensure that the server has stopped properly\&.
+.\" mysqladmin command options
+.\" command options: mysqladmin
+.\" options: command-line: mysqladmin
+.\" startup parameters: mysqladmin
.PP
\fBmysqladmin\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: help option
+.\" help option: mysqladmin
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: character-sets-dir option
+.\" character-sets-dir option: mysqladmin
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: compress option
+.\" compress option: mysqladmin
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: count option
+.\" count option: mysqladmin
\fB\-\-count=\fR\fB\fIN\fR\fR,
\fB\-c \fR\fB\fIN\fR\fR
.sp
The number of iterations to make for repeated command execution if the
\fB\-\-sleep\fR
-option is given.
-.TP 3n
-\(bu
+option is given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: debug option
+.\" debug option: mysqladmin
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'. The default is
-\'d:t:o,/tmp/mysqladmin.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/mysqladmin\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: debug-check option
+.\" debug-check option: mysqladmin
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: debug-info option
+.\" debug-info option: mysqladmin
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: default-character-set option
+.\" default-character-set option: mysqladmin
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: force option
+.\" force option: mysqladmin
\fB\-\-force\fR,
\fB\-f\fR
.sp
Do not ask for confirmation for the
drop \fIdb_name\fR
-command. With multiple commands, continue even if an error occurs.
-.TP 3n
-\(bu
+command\&. With multiple commands, continue even if an error occurs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: host option
+.\" host option: mysqladmin
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: no-beep option
+.\" no-beep option: mysqladmin
\fB\-\-no\-beep\fR,
\fB\-b\fR
.sp
-Suppress the warning beep that is emitted by default for errors such as a failure to connect to the server. This option was added in MySQL 5.1.17.
-.TP 3n
-\(bu
+Suppress the warning beep that is emitted by default for errors such as a failure to connect to the server\&. This option was added in MySQL 5\&.1\&.17\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: password option
+.\" password option: mysqladmin
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: pipe option
+.\" pipe option: mysqladmin
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: port option
+.\" port option: mysqladmin
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: protocol option
+.\" protocol option: mysqladmin
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: relative option
+.\" relative option: mysqladmin
\fB\-\-relative\fR,
\fB\-r\fR
.sp
Show the difference between the current and previous values when used with the
\fB\-\-sleep\fR
-option. Currently, this option works only with the
+option\&. Currently, this option works only with the
extended\-status
-command.
-.TP 3n
-\(bu
+command\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: silent option
+.\" silent option: mysqladmin
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Exit silently if a connection to the server cannot be established.
-.TP 3n
-\(bu
+Exit silently if a connection to the server cannot be established\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: sleep option
+.\" sleep option: mysqladmin
\fB\-\-sleep=\fR\fB\fIdelay\fR\fR,
\fB\-i \fR\fB\fIdelay\fR\fR
.sp
Execute commands repeatedly, sleeping for
\fIdelay\fR
-seconds in between. The
+seconds in between\&. The
\fB\-\-count\fR
-option determines the number of iterations. If
+option determines the number of iterations\&. If
\fB\-\-count\fR
is not given,
\fBmysqladmin\fR
-executes commands indefinitely until interrupted.
-.TP 3n
-\(bu
+executes commands indefinitely until interrupted\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: socket option
+.\" socket option: mysqladmin
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: SSL options
+.\" SSL options: mysqladmin
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: user option
+.\" user option: mysqladmin
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: verbose option
+.\" verbose option: mysqladmin
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: version option
+.\" version option: mysqladmin
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: vertical option
+.\" vertical option: mysqladmin
\fB\-\-vertical\fR,
\fB\-E\fR
.sp
-Print output vertically. This is similar to
-\fB\-\-relative\fR, but prints output vertically.
-.TP 3n
-\(bu
+Print output vertically\&. This is similar to
+\fB\-\-relative\fR, but prints output vertically\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqladmin: wait option
+.\" wait option: mysqladmin
\fB\-\-wait[=\fR\fB\fIcount\fR\fR\fB]\fR,
\fB\-w[\fR\fB\fIcount\fR\fR\fB]\fR
.sp
-If the connection cannot be established, wait and retry instead of aborting. If a
+If the connection cannot be established, wait and retry instead of aborting\&. If a
\fIcount\fR
-value is given, it indicates the number of times to retry. The default is one time.
-.sp
+value is given, it indicates the number of times to retry\&. The default is one time\&.
.RE
.PP
You can also set the following variables by using
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
The
\fB\-\-set\-variable\fR
-format is deprecated. syntax:
-.TP 3n
-\(bu
+format is deprecated\&. syntax:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" connect_timeout variable
+.\" timeout: connect_timeout variable
connect_timeout
.sp
-The maximum number of seconds before connection timeout. The default value is 43200 (12 hours).
-.TP 3n
-\(bu
+The maximum number of seconds before connection timeout\&. The default value is 43200 (12 hours)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" shutdown_timeout variable
+.\" timeout: shutdown_timeout variable
shutdown_timeout
.sp
-The maximum number of seconds to wait for server shutdown. The default value is 3600 (1 hour).
+The maximum number of seconds to wait for server shutdown\&. The default value is 3600 (1 hour)\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlbinlog.1'
--- a/man/mysqlbinlog.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlbinlog.1 2009-09-16 12:03:18 +0000
@@ -1,64 +1,81 @@
+'\" t
.\" Title: \fBmysqlbinlog\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLBINLOG\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLBINLOG\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlbinlog
.SH "NAME"
mysqlbinlog \- utility for processing binary log files
.SH "SYNOPSIS"
-.HP 35
-\fBmysqlbinlog [\fR\fBoptions\fR\fB] \fR\fB\fIlog_file\fR\fR\fB ...\fR
+.HP \w'\fBmysqlbinlog\ [\fR\fBoptions\fR\fB]\ \fR\fB\fIlog_file\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmysqlbinlog [\fR\fBoptions\fR\fB] \fR\fB\fIlog_file\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
-The server's binary log consists of files containing
+The server\'s binary log consists of files containing
\(lqevents\(rq
-that describe modifications to database contents. The server writes these files in binary format. To display their contents in text format, use the
+that describe modifications to database contents\&. The server writes these files in binary format\&. To display their contents in text format, use the
\fBmysqlbinlog\fR
-utility. You can also use
+utility\&. You can also use
\fBmysqlbinlog\fR
-to display the contents of relay log files written by a slave server in a replication setup because relay logs have the same format as binary logs. The binary log and relay log are discussed further in
-Section\ 5.2.4, \(lqThe Binary Log\(rq, and
-Section\ 16.4.2, \(lqReplication Relay and Status Files\(rq.
+to display the contents of relay log files written by a slave server in a replication setup because relay logs have the same format as binary logs\&. The binary log and relay log are discussed further in
+Section\ \&5.2.4, \(lqThe Binary Log\(rq, and
+Section\ \&16.4.2, \(lqReplication Relay and Status Files\(rq\&.
.PP
Invoke
\fBmysqlbinlog\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIlog_file\fR\fR\fB ...\fR
+shell> \fBmysqlbinlog [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIlog_file\fR\fR\fB \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For example, to display the contents of the binary log file named
-\fIbinlog.000003\fR, use this command:
+binlog\&.000003, use this command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.0000003\fR
+shell> \fBmysqlbinlog binlog\&.0000003\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The output includes events contained in
-\fIbinlog.000003\fR. Event information includes the statement, the ID of the server on which it was executed, the timestamp when the statement was executed, how much time it took, and so forth.
+binlog\&.000003\&. Event information includes the statement, the ID of the server on which it was executed, the timestamp when the statement was executed, how much time it took, and so forth\&.
.PP
The output from
\fBmysqlbinlog\fR
can be re\-executed (for example, by using it as input to
-\fBmysql\fR) to reapply the statements in the log. This is useful for recovery operations after a server crash. For other usage examples, see the discussion later in this section.
+\fBmysql\fR) to reapply the statements in the log\&. This is useful for recovery operations after a server crash\&. For other usage examples, see the discussion later in this section\&.
.PP
Normally, you use
\fBmysqlbinlog\fR
-to read binary log files directly and apply them to the local MySQL server. It is also possible to read binary logs from a remote server by using the
+to read binary log files directly and apply them to the local MySQL server\&. It is also possible to read binary logs from a remote server by using the
\fB\-\-read\-from\-remote\-server\fR
-option. When you read remote binary logs, the connection parameter options can be given to indicate how to connect to the server. These options are
+option\&. When you read remote binary logs, the connection parameter options can be given to indicate how to connect to the server\&. These options are
\fB\-\-host\fR,
\fB\-\-password\fR,
\fB\-\-port\fR,
@@ -66,357 +83,738 @@ option. When you read remote binary logs
\fB\-\-socket\fR, and
\fB\-\-user\fR; they are ignored except when you also use the
\fB\-\-read\-from\-remote\-server\fR
-option.
+option\&.
.PP
\fBmysqlbinlog\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the following options\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: help option
+.\" help option: mysqlbinlog
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: base64-output option
+.\" base64-output option: mysqlbinlog
\fB\-\-base64\-output[=\fR\fB\fIvalue\fR\fR\fB]\fR
.sp
This option determines when events should be displayed encoded as base\-64 strings using
BINLOG
-statements. The option has these allowable values (not case sensitive):
-.RS 3n
-.TP 3n
-\(bu
+statements\&. The option has these allowable values (not case sensitive):
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
AUTO
("automatic") or
UNSPEC
("unspecified") displays
BINLOG
-statements automatically when necessary (that is, for format description events and row events). This is the default if no
+statements automatically when necessary (that is, for format description events and row events)\&. This is the default if no
\fB\-\-base64\-output\fR
-option is given.
+option is given\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
Automatic
BINLOG
display is the only safe behavior if you intend to use the output of
\fBmysqlbinlog\fR
-to re\-execute binary log file contents. The other option values are intended only for debugging or testing purposes because they may produce output that does not include all events in executable form.
-.TP 3n
-\(bu
+to re\-execute binary log file contents\&. The other option values are intended only for debugging or testing purposes because they may produce output that does not include all events in executable form\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
ALWAYS
displays
BINLOG
-statements whenever possible. This is the implied value if the option is given as
+statements whenever possible\&. This is the implied value if the option is given as
\fB\-\-base64\-output\fR
-without a value.
-.TP 3n
-\(bu
+without a value\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
NEVER
causes
BINLOG
-statements not to be displayed.
+statements not to be displayed\&.
\fBmysqlbinlog\fR
exits with an error if a row event is found that must be displayed using
-BINLOG.
-.TP 3n
-\(bu
+BINLOG\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
DECODE\-ROWS
specifies to
\fBmysqlbinlog\fR
that you intend for row events to be decoded and displayed as commented SQL statements by also specifying the
\fB\-\-verbose\fR
-option. Like
+option\&. Like
NEVER,
DECODE\-ROWS
suppresses display of
BINLOG
statements, but unlike
-NEVER, it does not exit with an error if a row event is found.
+NEVER, it does not exit with an error if a row event is found\&.
.RE
-.IP "" 3n
+.RS 4
The
\fB\-\-base64\-output\fR
-option was introduced in MySQL 5.1.5, to be given as
+option was introduced in MySQL 5\&.1\&.5, to be given as
\fB\-\-base64\-output\fR
or
\fB\-\-skip\-base64\-output\fR
(with the sense of
AUTO
or
-NEVER). The option values described in the preceding list may be used as of MySQL 5.1.24, with the exception of
+NEVER)\&. The option values described in the preceding list may be used as of MySQL 5\&.1\&.24, with the exception of
UNSPEC
and
-DECODE\-ROWS, which are available as of MySQL 5.1.28.
+DECODE\-ROWS, which are available as of MySQL 5\&.1\&.28\&.
.sp
For examples that show the effect of
\fB\-\-base64\-output\fR
and
\fB\-\-verbose\fR
on row event output, see
-the section called \(lq\fBMYSQLBINLOG\fR ROW EVENT DISPLAY\(rq.
-.TP 3n
-\(bu
+the section called \(lqMYSQLBINLOG ROW EVENT DISPLAY\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: character-sets-dir option
+.\" character-sets-dir option: mysqlbinlog
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: database option
+.\" database option: mysqlbinlog
\fB\-\-database=\fR\fB\fIdb_name\fR\fR,
\fB\-d \fR\fB\fIdb_name\fR\fR
.sp
-List entries for just this database (local log only). You can only specify one database with this option \- if you specify multiple
+List entries for just this database (local log only)\&. You can only specify one database with this option \- if you specify multiple
\fB\-\-database\fR
-options, only the last one is used. This option forces
+options, only the last one is used\&. This option forces
\fBmysqlbinlog\fR
to output entries from the binary log where the default database (that is, the one selected by
USE) is
-\fIdb_name\fR. Note that this does not replicate cross\-database statements such as
-UPDATE \fIsome_db.some_table\fR SET foo='bar'
-while having selected a different database or no database.
-.TP 3n
-\(bu
+\fIdb_name\fR\&. Note that this does not replicate cross\-database statements such as
+UPDATE \fIsome_db\&.some_table\fR SET foo=\'bar\'
+while having selected a different database or no database\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBNote\fR
+.ps -1
+.br
+This option did not work correctly for
+\fBmysqlbinlog\fR
+with row\-based logging prior to MySQL 5\&.1\&.37\&. (\m[blue]\fBBug#42941\fR\m[]\&\s-2\u[1]\d\s+2)
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: debug option
+.\" debug option: mysqlbinlog
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. A typical
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string is often
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/mysqlbinlog\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: debug-check option
+.\" debug-check option: mysqlbinlog
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: debug-info option
+.\" debug-info option: mysqlbinlog
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: disable-log-bin option
+.\" disable-log-bin option: mysqlbinlog
\fB\-\-disable\-log\-bin\fR,
\fB\-D\fR
.sp
-Disable binary logging. This is useful for avoiding an endless loop if you use the
+Disable binary logging\&. This is useful for avoiding an endless loop if you use the
\fB\-\-to\-last\-log\fR
-option and are sending the output to the same MySQL server. This option also is useful when restoring after a crash to avoid duplication of the statements you have logged.
+option and are sending the output to the same MySQL server\&. This option also is useful when restoring after a crash to avoid duplication of the statements you have logged\&.
.sp
This option requires that you have the
SUPER
-privilege. It causes
+privilege\&. It causes
\fBmysqlbinlog\fR
to include a
SET sql_log_bin = 0
-statement in its output to disable binary logging of the remaining output. The
+statement in its output to disable binary logging of the remaining output\&. The
SET
statement is ineffective unless you have the
SUPER
-privilege.
-.TP 3n
-\(bu
+privilege\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: force-read option
+.\" force-read option: mysqlbinlog
\fB\-\-force\-read\fR,
\fB\-f\fR
.sp
With this option, if
\fBmysqlbinlog\fR
-reads a binary log event that it does not recognize, it prints a warning, ignores the event, and continues. Without this option,
+reads a binary log event that it does not recognize, it prints a warning, ignores the event, and continues\&. Without this option,
\fBmysqlbinlog\fR
-stops if it reads such an event.
-.TP 3n
-\(bu
+stops if it reads such an event\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: hexdump option
+.\" hexdump option: mysqlbinlog
\fB\-\-hexdump\fR,
\fB\-H\fR
.sp
Display a hex dump of the log in comments, as described in
-the section called \(lq\fBMYSQLBINLOG\fR HEX DUMP FORMAT\(rq. This output can be helpful for replication debugging. This option was added in MySQL 5.1.2.
-.TP 3n
-\(bu
+the section called \(lqMYSQLBINLOG HEX DUMP FORMAT\(rq\&. This output can be helpful for replication debugging\&. This option was added in MySQL 5\&.1\&.2\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: host option
+.\" host option: mysqlbinlog
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Get the binary log from the MySQL server on the given host.
-.TP 3n
-\(bu
+Get the binary log from the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: local-load option
+.\" local-load option: mysqlbinlog
\fB\-\-local\-load=\fR\fB\fIpath\fR\fR,
\fB\-l \fR\fB\fIpath\fR\fR
.sp
Prepare local temporary files for
LOAD DATA INFILE
-in the specified directory.
-.TP 3n
-\(bu
+in the specified directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: offset option
+.\" offset option: mysqlbinlog
\fB\-\-offset=\fR\fB\fIN\fR\fR,
\fB\-o \fR\fB\fIN\fR\fR
.sp
Skip the first
\fIN\fR
-entries in the log.
-.TP 3n
-\(bu
+entries in the log\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: password option
+.\" password option: mysqlbinlog
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: port option
+.\" port option: mysqlbinlog
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for connecting to a remote server.
-.TP 3n
-\(bu
+The TCP/IP port number to use for connecting to a remote server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: position option
+.\" position option: mysqlbinlog
\fB\-\-position=\fR\fB\fIN\fR\fR,
\fB\-j \fR\fB\fIN\fR\fR
.sp
-Deprecated. Use
+Deprecated\&. Use
\fB\-\-start\-position\fR
-instead.
-.TP 3n
-\(bu
+instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: protocol option
+.\" protocol option: mysqlbinlog
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: read-from-remote-server option
+.\" read-from-remote-server option: mysqlbinlog
\fB\-\-read\-from\-remote\-server\fR,
\fB\-R\fR
.sp
-Read the binary log from a MySQL server rather than reading a local log file. Any connection parameter options are ignored unless this option is given as well. These options are
+Read the binary log from a MySQL server rather than reading a local log file\&. Any connection parameter options are ignored unless this option is given as well\&. These options are
\fB\-\-host\fR,
\fB\-\-password\fR,
\fB\-\-port\fR,
\fB\-\-protocol\fR,
\fB\-\-socket\fR, and
-\fB\-\-user\fR.
+\fB\-\-user\fR\&.
.sp
-This option requires that the remote server be running. It works only for binary log files on the remote server, not relay log files.
-.TP 3n
-\(bu
+This option requires that the remote server be running\&. It works only for binary log files on the remote server, not relay log files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: result-file option
+.\" result-file option: mysqlbinlog
\fB\-\-result\-file=\fR\fB\fIname\fR\fR,
\fB\-r \fR\fB\fIname\fR\fR
.sp
-Direct output to the given file.
-.TP 3n
-\(bu
+Direct output to the given file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: server-id option
+.\" server-id option: mysqlbinlog
\fB\-\-server\-id=\fR\fB\fIid\fR\fR
.sp
-Extract only those events created by the server having the given server ID. This option is available as of MySQL 5.1.4.
-.TP 3n
-\(bu
+Extract only those events created by the server having the given server ID\&. This option is available as of MySQL 5\&.1\&.4\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: set-charset option
+.\" set-charset option: mysqlbinlog
\fB\-\-set\-charset=\fR\fB\fIcharset_name\fR\fR
.sp
Add a
SET NAMES \fIcharset_name\fR
-statement to the output to specify the character set to be used for processing log files. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+statement to the output to specify the character set to be used for processing log files\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: short-form option
+.\" short-form option: mysqlbinlog
\fB\-\-short\-form\fR,
\fB\-s\fR
.sp
-Display only the statements contained in the log, without any extra information.
-.TP 3n
-\(bu
+Display only the statements contained in the log, without any extra information\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: socket option
+.\" socket option: mysqlbinlog
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: start-datetime option
+.\" start-datetime option: mysqlbinlog
\fB\-\-start\-datetime=\fR\fB\fIdatetime\fR\fR
.sp
Start reading the binary log at the first event having a timestamp equal to or later than the
\fIdatetime\fR
-argument. The
+argument\&. The
\fIdatetime\fR
value is relative to the local time zone on the machine where you run
-\fBmysqlbinlog\fR. The value should be in a format accepted for the
+\fBmysqlbinlog\fR\&. The value should be in a format accepted for the
DATETIME
or
TIMESTAMP
-data types. For example:
+data types\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog \-\-start\-datetime="2005\-12\-25 11:25:56" binlog.000003\fR
+shell> \fBmysqlbinlog \-\-start\-datetime="2005\-12\-25 11:25:56" binlog\&.000003\fR
.fi
+.if n \{\
+.RE
+.\}
+.sp
+This option is useful for point\-in\-time recovery\&. See
+Section\ \&6.2, \(lqExample Backup and Recovery Strategy\(rq\&.
.RE
-This option is useful for point\-in\-time recovery. See
-Section\ 6.2, \(lqExample Backup and Recovery Strategy\(rq.
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: start-position option
+.\" start-position option: mysqlbinlog
\fB\-\-start\-position=\fR\fB\fIN\fR\fR
.sp
Start reading the binary log at the first event having a position equal to or greater than
-\fIN\fR. This option applies to the first log file named on the command line.
-.TP 3n
-\(bu
+\fIN\fR\&. This option applies to the first log file named on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: stop-datetime option
+.\" stop-datetime option: mysqlbinlog
\fB\-\-stop\-datetime=\fR\fB\fIdatetime\fR\fR
.sp
Stop reading the binary log at the first event having a timestamp equal to or later than the
\fIdatetime\fR
-argument. This option is useful for point\-in\-time recovery. See the description of the
+argument\&. This option is useful for point\-in\-time recovery\&. See the description of the
\fB\-\-start\-datetime\fR
option for information about the
\fIdatetime\fR
-value.
-.TP 3n
-\(bu
+value\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: stop-position option
+.\" stop-position option: mysqlbinlog
\fB\-\-stop\-position=\fR\fB\fIN\fR\fR
.sp
Stop reading the binary log at the first event having a position equal to or greater than
-\fIN\fR. This option applies to the last log file named on the command line.
-.TP 3n
-\(bu
+\fIN\fR\&. This option applies to the last log file named on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: to-last-log option
+.\" to-last-log option: mysqlbinlog
\fB\-\-to\-last\-log\fR,
\fB\-t\fR
.sp
-Do not stop at the end of the requested binary log from a MySQL server, but rather continue printing until the end of the last binary log. If you send the output to the same MySQL server, this may lead to an endless loop. This option requires
-\fB\-\-read\-from\-remote\-server\fR.
-.TP 3n
-\(bu
+Do not stop at the end of the requested binary log from a MySQL server, but rather continue printing until the end of the last binary log\&. If you send the output to the same MySQL server, this may lead to an endless loop\&. This option requires
+\fB\-\-read\-from\-remote\-server\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: user option
+.\" user option: mysqlbinlog
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to a remote server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to a remote server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: verbose option
+.\" verbose option: mysqlbinlog
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Reconstruct row events and display them as commented SQL statements. If given twice, the output includes comments to indicate column data types and some metadata. This option was added in MySQL 5.1.28.
+Reconstruct row events and display them as commented SQL statements\&. If given twice, the output includes comments to indicate column data types and some metadata\&. This option was added in MySQL 5\&.1\&.28\&.
.sp
For examples that show the effect of
\fB\-\-base64\-output\fR
and
\fB\-\-verbose\fR
on row event output, see
-the section called \(lq\fBMYSQLBINLOG\fR ROW EVENT DISPLAY\(rq.
-.TP 3n
-\(bu
+the section called \(lqMYSQLBINLOG ROW EVENT DISPLAY\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: version option
+.\" version option: mysqlbinlog
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlbinlog: write-binlog option
+.\" write-binlog option: mysqlbinlog
\fB\-\-write\-binlog\fR
.sp
This option is enabled by default, so that
@@ -425,111 +823,137 @@ OPTIMIZE TABLE, and
REPAIR TABLE
statements generated by
\fBmysqlcheck\fR
-are written to the binary log. Use
+are written to the binary log\&. Use
\fB\-\-skip\-write\-binlog\fR
to cause
NO_WRITE_TO_BINLOG
-to be added to the statements so that they are not logged. Use the
+to be added to the statements so that they are not logged\&. Use the
\fB\-\-skip\-write\-binlog\fR
-when these statements should not be sent to replication slaves or run when using the binary logs for recovery from backup. This option was added in MySQL 5.1.18.
-.sp
+when these statements should not be sent to replication slaves or run when using the binary logs for recovery from backup\&. This option was added in MySQL 5\&.1\&.18\&.
.RE
.PP
You can also set the following variable by using
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
syntax:
-.TP 3n
-\(bu
-open_files_limit
.sp
-Specify the number of open file descriptors to reserve.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" open_files_limit variable
+open_files_limit
.sp
+Specify the number of open file descriptors to reserve\&.
.RE
.PP
You can pipe the output of
\fBmysqlbinlog\fR
into the
\fBmysql\fR
-client to execute the statements contained in the binary log. This is used to recover from a crash when you have an old backup (see
-Section\ 6.1, \(lqDatabase Backups\(rq). For example:
+client to execute the statements contained in the binary log\&. This is used to recover from a crash when you have an old backup (see
+Section\ \&6.1, \(lqDatabase Backups\(rq)\&. For example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.000001 | mysql\fR
+shell> \fBmysqlbinlog binlog\&.000001 | mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Or:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.[0\-9]* | mysql\fR
+shell> \fBmysqlbinlog binlog\&.[0\-9]* | mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
You can also redirect the output of
\fBmysqlbinlog\fR
-to a text file instead, if you need to modify the statement log first (for example, to remove statements that you do not want to execute for some reason). After editing the file, execute the statements that it contains by using it as input to the
+to a text file instead, if you need to modify the statement log first (for example, to remove statements that you do not want to execute for some reason)\&. After editing the file, execute the statements that it contains by using it as input to the
\fBmysql\fR
-program.
+program\&.
.PP
\fBmysqlbinlog\fR
has the
\fB\-\-start\-position\fR
-option, which prints only those statements with an offset in the binary log greater than or equal to a given position (the given position must match the start of one event). It also has options to stop and start when it sees an event with a given date and time. This enables you to perform point\-in\-time recovery using the
+option, which prints only those statements with an offset in the binary log greater than or equal to a given position (the given position must match the start of one event)\&. It also has options to stop and start when it sees an event with a given date and time\&. This enables you to perform point\-in\-time recovery using the
\fB\-\-stop\-datetime\fR
option (to be able to say, for example,
-\(lqroll forward my databases to how they were today at 10:30 a.m.\(rq).
+\(lqroll forward my databases to how they were today at 10:30 a\&.m\&.\(rq)\&.
.PP
-If you have more than one binary log to execute on the MySQL server, the safe method is to process them all using a single connection to the server. Here is an example that demonstrates what may be
+If you have more than one binary log to execute on the MySQL server, the safe method is to process them all using a single connection to the server\&. Here is an example that demonstrates what may be
\fIunsafe\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.000001 | mysql # DANGER!!\fR
-shell> \fBmysqlbinlog binlog.000002 | mysql # DANGER!!\fR
+shell> \fBmysqlbinlog binlog\&.000001 | mysql # DANGER!!\fR
+shell> \fBmysqlbinlog binlog\&.000002 | mysql # DANGER!!\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Processing binary logs this way using different connections to the server causes problems if the first log file contains a
CREATE TEMPORARY TABLE
-statement and the second log contains a statement that uses the temporary table. When the first
+statement and the second log contains a statement that uses the temporary table\&. When the first
\fBmysql\fR
-process terminates, the server drops the temporary table. When the second
+process terminates, the server drops the temporary table\&. When the second
\fBmysql\fR
process attempts to use the table, the server reports
-\(lqunknown table.\(rq
+\(lqunknown table\&.\(rq
.PP
To avoid problems like this, use a
\fIsingle\fR
-connection to execute the contents of all binary logs that you want to process. Here is one way to do so:
+connection to execute the contents of all binary logs that you want to process\&. Here is one way to do so:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.000001 binlog.000002 | mysql\fR
+shell> \fBmysqlbinlog binlog\&.000001 binlog\&.000002 | mysql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Another approach is to write all the logs to a single file and then process the file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog binlog.000001 > /tmp/statements.sql\fR
-shell> \fBmysqlbinlog binlog.000002 >> /tmp/statements.sql\fR
-shell> \fBmysql \-e "source /tmp/statements.sql"\fR
+shell> \fBmysqlbinlog binlog\&.000001 > /tmp/statements\&.sql\fR
+shell> \fBmysqlbinlog binlog\&.000002 >> /tmp/statements\&.sql\fR
+shell> \fBmysql \-e "source /tmp/statements\&.sql"\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqlbinlog\fR
can produce output that reproduces a
LOAD DATA INFILE
-operation without the original data file.
+operation without the original data file\&.
\fBmysqlbinlog\fR
copies the data to a temporary file and writes a
LOAD DATA LOCAL INFILE
-statement that refers to the file. The default location of the directory where these files are written is system\-specific. To specify a directory explicitly, use the
+statement that refers to the file\&. The default location of the directory where these files are written is system\-specific\&. To specify a directory explicitly, use the
\fB\-\-local\-load\fR
-option.
+option\&.
.PP
Because
\fBmysqlbinlog\fR
@@ -540,72 +964,111 @@ LOAD DATA LOCAL INFILE
statements (that is, it adds
LOCAL), both the client and the server that you use to process the statements must be configured to allow
LOCAL
-capability. See
-Section\ 5.3.4, \(lqSecurity Issues with LOAD DATA LOCAL\(rq.
+capability\&. See
+Section\ \&5.3.4, \(lqSecurity Issues with LOAD DATA LOCAL\(rq\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBWarning\fR
+.ps -1
+.br
.PP
The temporary files created for
LOAD DATA LOCAL
statements are
\fInot\fR
-automatically deleted because they are needed until you actually execute those statements. You should delete the temporary files yourself after you no longer need the statement log. The files can be found in the temporary file directory and have names like
-\fIoriginal_file_name\-#\-#\fR.
-.SH "\fBMYSQLBINLOG\fR HEX DUMP FORMAT"
+automatically deleted because they are needed until you actually execute those statements\&. You should delete the temporary files yourself after you no longer need the statement log\&. The files can be found in the temporary file directory and have names like
+\fIoriginal_file_name\-#\-#\fR\&.
+.sp .5v
+.RE
+.SH "MYSQLBINLOG HEX DUMP FORMAT"
.PP
The
\fB\-\-hexdump\fR
option produces a hex dump of the log contents:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlbinlog \-\-hexdump master\-bin.000001\fR
+shell> \fBmysqlbinlog \-\-hexdump master\-bin\&.000001\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The hex output consists of comment lines beginning with
#, so the output might look like this for the preceding command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-/*!40019 SET @@session.max_insert_delayed_threads=0*/;
+/*!40019 SET @@session\&.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
# at 4
#051024 17:24:13 server id 1 end_log_pos 98
# Position Timestamp Type Master ID Size Master Pos Flags
# 00000004 9d fc 5c 43 0f 01 00 00 00 5e 00 00 00 62 00 00 00 00 00
-# 00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l|
-# 00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |og..............|
-# 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
-# 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |.......C.8......|
-# 00000057 04 04 04 04 12 00 00 4b 00 04 1a |.......K...|
-# Start: binlog v 4, server v 5.0.15\-debug\-log created 051024 17:24:13
+# 00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |\&.\&.5\&.0\&.15\&.debug\&.l|
+# 00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |og\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.|
+# 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.|
+# 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |\&.\&.\&.\&.\&.\&.\&.C\&.8\&.\&.\&.\&.\&.\&.|
+# 00000057 04 04 04 04 12 00 00 4b 00 04 1a |\&.\&.\&.\&.\&.\&.\&.K\&.\&.\&.|
+# Start: binlog v 4, server v 5\&.0\&.15\-debug\-log created 051024 17:24:13
# at startup
ROLLBACK;
.fi
+.if n \{\
.RE
+.\}
.PP
-Hex dump output currently contains the following elements. This format is subject to change.
-.TP 3n
-\(bu
-Position: The byte position within the log file.
-.TP 3n
-\(bu
-Timestamp: The event timestamp. In the example shown,
-\'9d fc 5c 43'
+Hex dump output currently contains the following elements\&. This format is subject to change\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Position: The byte position within the log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Timestamp: The event timestamp\&. In the example shown,
+\'9d fc 5c 43\'
is the representation of
-\'051024 17:24:13'
-in hexadecimal.
-.TP 3n
-\(bu
-Type: The event type code. In the example shown,
-\'0f'
+\'051024 17:24:13\'
+in hexadecimal\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Type: The event type code\&. In the example shown,
+\'0f\'
indicates a
-FORMAT_DESCRIPTION_EVENT. The following table lists the possible type codes.
+FORMAT_DESCRIPTION_EVENT\&. The following table lists the possible type codes\&.
.TS
allbox tab(:);
l l l
@@ -644,14 +1107,74 @@ T}:T{
Meaning
T}
T{
+00
+T}:T{
+UNKNOWN_EVENT
+T}:T{
+This event should never be present in the log\&.
+T}
+T{
+01
+T}:T{
+START_EVENT_V3
+T}:T{
+This indicates the start of a log file written by MySQL 4 or earlier\&.
+T}
+T{
+02
+T}:T{
+QUERY_EVENT
+T}:T{
+The most common type of events\&. These contain statements executed on the
+ master\&.
+T}
+T{
+03
+T}:T{
+STOP_EVENT
+T}:T{
+Indicates that master has stopped\&.
+T}
+T{
+04
+T}:T{
+ROTATE_EVENT
+T}:T{
+Written when the master switches to a new log file\&.
+T}
+T{
+05
+T}:T{
+INTVAR_EVENT
+T}:T{
+Used for AUTO_INCREMENT values or when the
+ LAST_INSERT_ID()
+ function is used in the statement\&.
+T}
+T{
+06
+T}:T{
+LOAD_EVENT
+T}:T{
+Used for LOAD DATA
+ INFILE in MySQL 3\&.23\&.
+T}
+T{
+07
+T}:T{
+SLAVE_EVENT
+T}:T{
+Reserved for future use\&.
+T}
+T{
08
T}:T{
CREATE_FILE_EVENT
T}:T{
Used for LOAD DATA
- INFILE statements. This indicates the
- start of execution of such a statement. A temporary
- file is created on the slave. Used in MySQL 4 only.
+ INFILE statements\&. This indicates the
+ start of execution of such a statement\&. A temporary
+ file is created on the slave\&. Used in MySQL 4 only\&.
T}
T{
09
@@ -660,8 +1183,8 @@ APPEND_BLOCK_EVENT
T}:T{
Contains data for use in a
LOAD DATA
- INFILE statement. The data is stored in
- the temporary file on the slave.
+ INFILE statement\&. The data is stored in
+ the temporary file on the slave\&.
T}
T{
0a
@@ -669,9 +1192,9 @@ T}:T{
EXEC_LOAD_EVENT
T}:T{
Used for LOAD DATA
- INFILE statements. The contents of the
- temporary file is stored in the table on the slave.
- Used in MySQL 4 only.
+ INFILE statements\&. The contents of the
+ temporary file is stored in the table on the slave\&.
+ Used in MySQL 4 only\&.
T}
T{
0b
@@ -679,8 +1202,8 @@ T}:T{
DELETE_FILE_EVENT
T}:T{
Rollback of a LOAD DATA
- INFILE statement. The temporary file
- should be deleted on the slave.
+ INFILE statement\&. The temporary file
+ should be deleted on the slave\&.
T}
T{
0c
@@ -688,7 +1211,7 @@ T}:T{
NEW_LOAD_EVENT
T}:T{
Used for LOAD DATA
- INFILE in MySQL 4 and earlier.
+ INFILE in MySQL 4 and earlier\&.
T}
T{
0d
@@ -697,28 +1220,28 @@ RAND_EVENT
T}:T{
Used to send information about random values if the
RAND() function is
- used in the statement.
+ used in the statement\&.
T}
T{
0e
T}:T{
USER_VAR_EVENT
T}:T{
-Used to replicate user variables.
+Used to replicate user variables\&.
T}
T{
0f
T}:T{
FORMAT_DESCRIPTION_EVENT
T}:T{
-This indicates the start of a log file written by MySQL 5 or later.
+This indicates the start of a log file written by MySQL 5 or later\&.
T}
T{
10
T}:T{
XID_EVENT
T}:T{
-Event indicating commit of an XA transaction.
+Event indicating commit of an XA transaction\&.
T}
T{
11
@@ -726,14 +1249,7 @@ T}:T{
BEGIN_LOAD_QUERY_EVENT
T}:T{
Used for LOAD DATA
- INFILE statements in MySQL 5 and later.
-T}
-T{
-00
-T}:T{
-UNKNOWN_EVENT
-T}:T{
-This event should never be present in the log.
+ INFILE statements in MySQL 5 and later\&.
T}
T{
12
@@ -741,137 +1257,116 @@ T}:T{
EXECUTE_LOAD_QUERY_EVENT
T}:T{
Used for LOAD DATA
- INFILE statements in MySQL 5 and later.
+ INFILE statements in MySQL 5 and later\&.
T}
T{
13
T}:T{
TABLE_MAP_EVENT
T}:T{
-Information about a table definition. Used in MySQL 5.1.5 and later.
+Information about a table definition\&. Used in MySQL 5\&.1\&.5 and later\&.
T}
T{
14
T}:T{
PRE_GA_WRITE_ROWS_EVENT
T}:T{
-Row data for a single table that should be created. Used in MySQL 5.1.5
- to 5.1.17.
+Row data for a single table that should be created\&. Used in MySQL 5\&.1\&.5
+ to 5\&.1\&.17\&.
T}
T{
15
T}:T{
PRE_GA_UPDATE_ROWS_EVENT
T}:T{
-Row data for a single table that needs to be updated. Used in MySQL
- 5.1.5 to 5.1.17.
+Row data for a single table that needs to be updated\&. Used in MySQL
+ 5\&.1\&.5 to 5\&.1\&.17\&.
T}
T{
16
T}:T{
PRE_GA_DELETE_ROWS_EVENT
T}:T{
-Row data for a single table that should be deleted. Used in MySQL 5.1.5
- to 5.1.17.
+Row data for a single table that should be deleted\&. Used in MySQL 5\&.1\&.5
+ to 5\&.1\&.17\&.
T}
T{
17
T}:T{
WRITE_ROWS_EVENT
T}:T{
-Row data for a single table that should be created. Used in MySQL 5.1.18
- and later.
+Row data for a single table that should be created\&. Used in MySQL 5\&.1\&.18
+ and later\&.
T}
T{
18
T}:T{
UPDATE_ROWS_EVENT
T}:T{
-Row data for a single table that needs to be updated. Used in MySQL
- 5.1.18 and later.
+Row data for a single table that needs to be updated\&. Used in MySQL
+ 5\&.1\&.18 and later\&.
T}
T{
19
T}:T{
DELETE_ROWS_EVENT
T}:T{
-Row data for a single table that should be deleted. Used in MySQL 5.1.18
- and later.
+Row data for a single table that should be deleted\&. Used in MySQL 5\&.1\&.18
+ and later\&.
T}
T{
1a
T}:T{
INCIDENT_EVENT
T}:T{
-Something out of the ordinary happened. Added in MySQL 5.1.18.
-T}
-T{
-01
-T}:T{
-START_EVENT_V3
-T}:T{
-This indicates the start of a log file written by MySQL 4 or earlier.
-T}
-T{
-02
-T}:T{
-QUERY_EVENT
-T}:T{
-The most common type of events. These contain statements executed on the
- master.
-T}
-T{
-03
-T}:T{
-STOP_EVENT
-T}:T{
-Indicates that master has stopped.
-T}
-T{
-04
-T}:T{
-ROTATE_EVENT
-T}:T{
-Written when the master switches to a new log file.
-T}
-T{
-05
-T}:T{
-INTVAR_EVENT
-T}:T{
-Used for AUTO_INCREMENT values or when the
- LAST_INSERT_ID()
- function is used in the statement.
-T}
-T{
-06
-T}:T{
-LOAD_EVENT
-T}:T{
-Used for LOAD DATA
- INFILE in MySQL 3.23.
-T}
-T{
-07
-T}:T{
-SLAVE_EVENT
-T}:T{
-Reserved for future use.
+Something out of the ordinary happened\&. Added in MySQL 5\&.1\&.18\&.
T}
.TE
+.sp 1
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Master ID: The server ID of the master that created the event\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Size: The size in bytes of the event\&.
+.RE
.sp
-.TP 3n
-\(bu
-Master ID: The server ID of the master that created the event.
-.TP 3n
-\(bu
-Size: The size in bytes of the event.
-.TP 3n
-\(bu
-Master Pos: The position of the next event in the original master log file.
-.TP 3n
-\(bu
-Flags: 16 flags. Currently, the following flags are used. The others are reserved for future use.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Master Pos: The position of the next event in the original master log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Flags: 16 flags\&. Currently, the following flags are used\&. The others are reserved for future use\&.
.TS
allbox tab(:);
l l l
@@ -891,21 +1386,21 @@ T{
T}:T{
LOG_EVENT_BINLOG_IN_USE_F
T}:T{
-Log file correctly closed. (Used only in
- FORMAT_DESCRIPTION_EVENT.) If
+Log file correctly closed\&. (Used only in
+ FORMAT_DESCRIPTION_EVENT\&.) If
this flag is set (if the flags are, for example,
- '01 00') in a
+ \'01 00\') in a
FORMAT_DESCRIPTION_EVENT, the log
- file has not been properly closed. Most probably
+ file has not been properly closed\&. Most probably
this is because of a master crash (for example, due
- to power failure).
+ to power failure)\&.
T}
T{
02
T}:T{
-\
+\ \&
T}:T{
-Reserved for future use.
+Reserved for future use\&.
T}
T{
04
@@ -913,8 +1408,8 @@ T}:T{
LOG_EVENT_THREAD_SPECIFIC_F
T}:T{
Set if the event is dependent on the connection it was executed in (for
- example, '04 00'), for example,
- if the event uses temporary tables.
+ example, \'04 00\'), for example,
+ if the event uses temporary tables\&.
T}
T{
08
@@ -922,27 +1417,31 @@ T}:T{
LOG_EVENT_SUPPRESS_USE_F
T}:T{
Set in some circumstances when the event is not dependent on the default
- database.
+ database\&.
T}
.TE
-.sp
-.SH "\fBMYSQLBINLOG\fR ROW EVENT DISPLAY"
+.sp 1
+.RE
+.SH "MYSQLBINLOG ROW EVENT DISPLAY"
+.\" BINLOG statement: mysqlbinlog output
.PP
The following examples illustrate how
\fBmysqlbinlog\fR
-displays row events that specify data modifications. These correspond to events with the
+displays row events that specify data modifications\&. These correspond to events with the
WRITE_ROWS_EVENT,
UPDATE_ROWS_EVENT, and
DELETE_ROWS_EVENT
-type codes. The
+type codes\&. The
\fB\-\-base64\-output=DECODE\-ROWS\fR
and
\fB\-\-verbose\fR
-options may be used to affect row event output. These options are available as of MySQL 5.1.28.
+options may be used to affect row event output\&. These options are available as of MySQL 5\&.1\&.28\&.
.PP
Suppose that the server is using row\-based binary logging and that you execute the following sequence of statements:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
CREATE TABLE t
(
@@ -951,45 +1450,51 @@ CREATE TABLE t
date DATE NULL
) ENGINE = InnoDB;
START TRANSACTION;
-INSERT INTO t VALUES(1, 'apple', NULL);
-UPDATE t SET name = 'pear', date = '2009\-01\-01' WHERE id = 1;
+INSERT INTO t VALUES(1, \'apple\', NULL);
+UPDATE t SET name = \'pear\', date = \'2009\-01\-01\' WHERE id = 1;
DELETE FROM t WHERE id = 1;
COMMIT;
.fi
+.if n \{\
.RE
+.\}
.PP
By default,
\fBmysqlbinlog\fR
displays row events encoded as base\-64 strings using
BINLOG
-statements. Omitting extraneous lines, the output for the row events produced by the preceding statement sequence looks like this:
+statements\&. Omitting extraneous lines, the output for the row events produced by the preceding statement sequence looks like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbinlog \fR\fB\fIlog_file\fR\fR
-...
+\&.\&.\&.
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
\'/*!*/;
-...
+\&.\&.\&.
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
\'/*!*/;
-...
+\&.\&.\&.
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
\'/*!*/;
.fi
+.if n \{\
.RE
+.\}
.PP
To see the row events as comments in the form of
\(lqpseudo\-SQL\(rq
@@ -999,106 +1504,114 @@ with the
\fB\-\-verbose\fR
or
\fB\-v\fR
-option. The output will contain lines beginning with
+option\&. The output will contain lines beginning with
###:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbinlog \-v \fR\fB\fIlog_file\fR\fR
-...
+\&.\&.\&.
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
\'/*!*/;
-### INSERT INTO test.t
+### INSERT INTO test\&.t
### SET
### @1=1
-### @2='apple'
+### @2=\'apple\'
### @3=NULL
-...
+\&.\&.\&.
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
\'/*!*/;
-### UPDATE test.t
+### UPDATE test\&.t
### WHERE
### @1=1
-### @2='apple'
+### @2=\'apple\'
### @3=NULL
### SET
### @1=1
-### @2='pear'
-### @3='2009:01:01'
-...
+### @2=\'pear\'
+### @3=\'2009:01:01\'
+\&.\&.\&.
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
\'/*!*/;
-### DELETE FROM test.t
+### DELETE FROM test\&.t
### WHERE
### @1=1
-### @2='pear'
-### @3='2009:01:01'
+### @2=\'pear\'
+### @3=\'2009:01:01\'
.fi
+.if n \{\
.RE
+.\}
.PP
Specify
\fB\-\-verbose\fR
or
\fB\-v\fR
-twice to also display data types and some metadata for each column. The output will contain an additional comment following each column change:
+twice to also display data types and some metadata for each column\&. The output will contain an additional comment following each column change:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbinlog \-vv \fR\fB\fIlog_file\fR\fR
-...
+\&.\&.\&.
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
\'/*!*/;
-### INSERT INTO test.t
+### INSERT INTO test\&.t
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
-### @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
+### @2=\'apple\' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
-...
+\&.\&.\&.
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
\'/*!*/;
-### UPDATE test.t
+### UPDATE test\&.t
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
-### @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
+### @2=\'apple\' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
### @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
### SET
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
-### @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
-### @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
-...
+### @2=\'pear\' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
+### @3=\'2009:01:01\' /* DATE meta=0 nullable=1 is_null=0 */
+\&.\&.\&.
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
-BINLOG '
+BINLOG \'
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
\'/*!*/;
-### DELETE FROM test.t
+### DELETE FROM test\&.t
### WHERE
### @1=1 /* INT meta=0 nullable=0 is_null=0 */
-### @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
-### @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
+### @2=\'pear\' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
+### @3=\'2009:01:01\' /* DATE meta=0 nullable=1 is_null=0 */
.fi
+.if n \{\
.RE
+.\}
.PP
You can tell
\fBmysqlbinlog\fR
@@ -1106,78 +1619,112 @@ to suppress the
BINLOG
statements for row events by using the
\fB\-\-base64\-output=DECODE\-ROWS\fR
-option. This is similar to
+option\&. This is similar to
\fB\-\-base64\-output=NEVER\fR
-but does not exit with an error if a row event is found. The combination of
+but does not exit with an error if a row event is found\&. The combination of
\fB\-\-base64\-output=DECODE\-ROWS\fR
and
\fB\-\-verbose\fR
provides a convenient way to see row events only as SQL statements:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbinlog \-v \-\-base64\-output=DECODE\-ROWS \fR\fB\fIlog_file\fR\fR
-...
+\&.\&.\&.
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F
-### INSERT INTO test.t
+### INSERT INTO test\&.t
### SET
### @1=1
-### @2='apple'
+### @2=\'apple\'
### @3=NULL
-...
+\&.\&.\&.
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F
-### UPDATE test.t
+### UPDATE test\&.t
### WHERE
### @1=1
-### @2='apple'
+### @2=\'apple\'
### @3=NULL
### SET
### @1=1
-### @2='pear'
-### @3='2009:01:01'
-...
+### @2=\'pear\'
+### @3=\'2009:01:01\'
+\&.\&.\&.
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F
-### DELETE FROM test.t
+### DELETE FROM test\&.t
### WHERE
### @1=1
-### @2='pear'
-### @3='2009:01:01'
+### @2=\'pear\'
+### @3=\'2009:01:01\'
.fi
+.if n \{\
.RE
+.\}
.sp
+.if n \{\
+.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
You should not suppress
BINLOG
statements if you intend to re\-execute
\fBmysqlbinlog\fR
-output.
+output\&.
+.sp .5v
+.RE
.PP
The SQL statements produced by
\fB\-\-verbose\fR
for row events are much more readable than the corresponding
BINLOG
-statements. However, they do not correspond exactly to the original SQL statements that generated the events. The following limitations apply:
-.TP 3n
-\(bu
-The original column names are lost and replace by
+statements\&. However, they do not correspond exactly to the original SQL statements that generated the events\&. The following limitations apply:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+The original column names are lost and replaced by
@\fIN\fR, where
\fIN\fR
-is a column number.
-.TP 3n
-\(bu
+is a column number\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Character set information is not available in the binary log, which affects string column display:
-.RS 3n
-.TP 3n
-\(bu
-There is no distinction made between corresponding binary and non\-binary string types (BINARY
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+There is no distinction made between corresponding binary and nonbinary string types (BINARY
and
CHAR,
VARBINARY
@@ -1185,25 +1732,45 @@ and
VARCHAR,
BLOB
and
-TEXT). The output uses a data type of
+TEXT)\&. The output uses a data type of
STRING
for fixed\-length strings and
VARSTRING
-for variable\-length strings.
-.TP 3n
-\(bu
-For multi\-byte character sets, the maximum number of bytes per character is not present in the binary log, so the length for string types is displayed in bytes rather than in characters. For example,
+for variable\-length strings\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+For multi\-byte character sets, the maximum number of bytes per character is not present in the binary log, so the length for string types is displayed in bytes rather than in characters\&. For example,
STRING(4)
will be used as the data type for values from either of these column types:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
CHAR(4) CHARACTER SET latin1
CHAR(2) CHARACTER SET ucs2
.fi
+.if n \{\
.RE
-.TP 3n
-\(bu
+.\}
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Due to the storage format for events of type
UPDATE_ROWS_EVENT,
UPDATE
@@ -1211,20 +1778,41 @@ statements are displayed with the
WHERE
clause preceding the
SET
-clause.
+clause\&.
.RE
+.RE
+.PP
+Proper interpretation of row events requires the information from the format description event at the beginning of the binary log\&. Because
+\fBmysqlbinlog\fR
+does not know in advance whether the rest of the log contains row events, by default it displays the format description event using a
+BINLOG
+statement in the initial part of the output\&.
+.PP
+If the binary log is known not to contain any events requiring a
+BINLOG
+statement (that is, no row events), the
+\fB\-\-base64\-output=NEVER\fR
+option can be used to prevent this header from being written\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#42941
+.RS 4
+\%http://bugs.mysql.com/42941
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlbug.1'
--- a/man/mysqlbug.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlbug.1 2009-09-16 12:03:18 +0000
@@ -1,63 +1,78 @@
+'\" t
.\" Title: \fBmysqlbug\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLBUG\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLBUG\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlbug
.SH "NAME"
mysqlbug \- generate bug report
.SH "SYNOPSIS"
-.HP 9
+.HP \w'\fBmysqlbug\fR\ 'u
\fBmysqlbug\fR
.SH "DESCRIPTION"
.PP
-This program enables you to generate a bug report and send it to MySQL AB. It is a shell script and runs on Unix.
+This program enables you to generate a bug report and send it to Sun Microsystems, Inc\&. It is a shell script and runs on Unix\&.
.PP
The normal way to report bugs is to visit
-\fI\%http://bugs.mysql.com/\fR, which is the address for our bugs database. This database is public and can be browsed and searched by anyone. If you log in to the system, you can enter new reports. If you have no Web access, you can generate a bug report by using the
+\m[blue]\fB\%http://bugs.mysql.com/\fR\m[], which is the address for our bugs database\&. This database is public and can be browsed and searched by anyone\&. If you log in to the system, you can enter new reports\&. If you have no Web access, you can generate a bug report by using the
\fBmysqlbug\fR
-script.
+script\&.
.PP
\fBmysqlbug\fR
-helps you generate a report by determining much of the following information automatically, but if something important is missing, please include it with your message.
+helps you generate a report by determining much of the following information automatically, but if something important is missing, please include it with your message\&.
\fBmysqlbug\fR
can be found in the
-\fIscripts\fR
+scripts
directory (source distribution) and in the
-\fIbin\fR
-directory under your MySQL installation directory (binary distribution).
+bin
+directory under your MySQL installation directory (binary distribution)\&.
.PP
Invoke
\fBmysqlbug\fR
without arguments:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlbug\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-The script will place you in an editor with a copy of the report to be sent. Edit the lines near the beginning that indicate the nature of the problem. Then write the file to save your changes, quit the editor, and
+The script will place you in an editor with a copy of the report to be sent\&. Edit the lines near the beginning that indicate the nature of the problem\&. Then write the file to save your changes, quit the editor, and
\fBmysqlbug\fR
-will send the report by email. perform.
+will send the report by email\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlcheck.1'
--- a/man/mysqlcheck.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlcheck.1 2009-09-16 12:03:18 +0000
@@ -1,37 +1,62 @@
+'\" t
.\" Title: \fBmysqlcheck\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLCHECK\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLCHECK\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlcheck
+.\" maintenance: tables
+.\" repair: tables
+.\" tables: maintenance
+.\" tables: repair
.SH "NAME"
-mysqlcheck \- a table maintenance and repair program
+mysqlcheck \- a table maintenance program
.SH "SYNOPSIS"
-.HP 46
-\fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB ...]]\fR
+.HP \w'\fBmysqlcheck\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB\ [\fR\fB\fItbl_name\fR\fR\fB\ \&.\&.\&.]]\fR\ 'u
+\fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.]]\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqlcheck\fR
-client checks, repairs, optimizes, and analyzes tables.
+client performs table maintenance: It checks, repairs, optimizes, or analyzes tables\&.
+.PP
+Each table is locked and therefore unavailable to other sessions while it is being processed\&. Table maintenance operations can be time\-consuming, particularly for large tables\&. If you use the
+\fB\-\-databases\fR
+or
+\fB\-\-all\-databases\fR
+option to process all tables in one or more databases, an invocation of
+\fBmysqlcheck\fR
+might take a long time\&. (This is also true for
+\fBmysql_upgrade\fR
+because that program invokes
+\fBmysqlcheck\fR
+to check all tables and repair them if necessary\&.)
.PP
\fBmysqlcheck\fR
is similar in function to
-\fBmyisamchk\fR, but works differently. The main operational difference is that
+\fBmyisamchk\fR, but works differently\&. The main operational difference is that
\fBmysqlcheck\fR
must be used when the
\fBmysqld\fR
server is running, whereas
\fBmyisamchk\fR
-should be used when it is not. The benefit of using
+should be used when it is not\&. The benefit of using
\fBmysqlcheck\fR
-is that you do not have to stop the server to check or repair your tables.
+is that you do not have to stop the server to perform table maintenance\&.
.PP
\fBmysqlcheck\fR
uses the SQL statements
@@ -39,51 +64,77 @@ CHECK TABLE,
REPAIR TABLE,
ANALYZE TABLE, and
OPTIMIZE TABLE
-in a convenient way for the user. It determines which statements to use for the operation you want to perform, and then sends the statements to the server to be executed. For details about which storage engines each statement works with, see the descriptions for those statements in
-Chapter\ 12, SQL Statement Syntax.
+in a convenient way for the user\&. It determines which statements to use for the operation you want to perform, and then sends the statements to the server to be executed\&. For details about which storage engines each statement works with, see the descriptions for those statements in
+Section\ \&12.5.2, \(lqTable Maintenance Statements\(rq\&.
.PP
The
MyISAM
-storage engine supports all four statements, so
+storage engine supports all four maintenance operations, so
\fBmysqlcheck\fR
-can be used to perform all four operations on
+can be used to perform any of them on
MyISAM
-tables. Other storage engines do not necessarily support all operations. In such cases, an error message is displayed. For example, if
-test.t
+tables\&. Other storage engines do not necessarily support all operations\&. In such cases, an error message is displayed\&. For example, if
+test\&.t
is a
MEMORY
table, an attempt to check it produces this result:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlcheck test t\fR
-test.t
-note : The storage engine for the table doesn't support check
+test\&.t
+note : The storage engine for the table doesn\'t support check
.fi
+.if n \{\
.RE
+.\}
+.PP
+If
+\fBmysqlcheck\fR
+is unable to repair a table, see
+Section\ \&2.12.4, \(lqRebuilding or Repairing Tables or Indexes\(rq
+for manual table repair strategies\&. This will be the case, for example, for
+InnoDB
+tables, which can be checked with
+CHECK TABLE, but not repaired with
+REPAIR TABLE\&.
.PP
The use of
\fBmysqlcheck\fR
-with partitioned tables is not supported before MySQL 5.1.27.
+with partitioned tables is not supported before MySQL 5\&.1\&.27\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBCaution\fR
+.ps -1
+.br
.PP
-It is best to make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss. Possible causes include but are not limited to file system errors.
+It is best to make a backup of a table before performing a table repair operation; under some circumstances the operation might cause data loss\&. Possible causes include but are not limited to file system errors\&.
+.sp .5v
+.RE
.PP
There are three general ways to invoke
\fBmysqlcheck\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItables\fR\fR\fB]\fR
-shell> \fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \fR\fB\fIdb_name3\fR\fR\fB...]\fR
+shell> \fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \fR\fB\fIdb_name3\fR\fR\fB\&.\&.\&.]\fR
shell> \fBmysqlcheck [\fR\fB\fIoptions\fR\fR\fB] \-\-all\-databases\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you do not name any tables following
\fIdb_name\fR
@@ -91,21 +142,21 @@ or if you use the
\fB\-\-databases\fR
or
\fB\-\-all\-databases\fR
-option, entire databases are checked.
+option, entire databases are checked\&.
.PP
\fBmysqlcheck\fR
-has a special feature compared to other client programs. The default behavior of checking tables (\fB\-\-check\fR) can be changed by renaming the binary. If you want to have a tool that repairs tables by default, you should just make a copy of
+has a special feature compared to other client programs\&. The default behavior of checking tables (\fB\-\-check\fR) can be changed by renaming the binary\&. If you want to have a tool that repairs tables by default, you should just make a copy of
\fBmysqlcheck\fR
named
\fBmysqlrepair\fR, or make a symbolic link to
\fBmysqlcheck\fR
named
-\fBmysqlrepair\fR. If you invoke
-\fBmysqlrepair\fR, it repairs tables.
+\fBmysqlrepair\fR\&. If you invoke
+\fBmysqlrepair\fR, it repairs tables\&.
.PP
The following names can be used to change
\fBmysqlcheck\fR
-default behavior.
+default behavior\&.
.TS
allbox tab(:);
l l
@@ -127,61 +178,151 @@ T}:T{
The default option is \fB\-\-optimize\fR
T}
.TE
-.sp
+.sp 1
.PP
\fBmysqlcheck\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: help option
+.\" help option: mysqlcheck
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: all-databases option
+.\" all-databases option: mysqlcheck
\fB\-\-all\-databases\fR,
\fB\-A\fR
.sp
-Check all tables in all databases. This is the same as using the
+Check all tables in all databases\&. This is the same as using the
\fB\-\-databases\fR
-option and naming all the databases on the command line.
-.TP 3n
-\(bu
+option and naming all the databases on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: all-in-1 option
+.\" all-in-1 option: mysqlcheck
\fB\-\-all\-in\-1\fR,
\fB\-1\fR
.sp
-Instead of issuing a statement for each table, execute a single statement for each database that names all the tables from that database to be processed.
-.TP 3n
-\(bu
+Instead of issuing a statement for each table, execute a single statement for each database that names all the tables from that database to be processed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: analyze option
+.\" analyze option: mysqlcheck
\fB\-\-analyze\fR,
\fB\-a\fR
.sp
-Analyze the tables.
-.TP 3n
-\(bu
+Analyze the tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: auto-repair option
+.\" auto-repair option: mysqlcheck
\fB\-\-auto\-repair\fR
.sp
-If a checked table is corrupted, automatically fix it. Any necessary repairs are done after all tables have been checked.
-.TP 3n
-\(bu
+If a checked table is corrupted, automatically fix it\&. Any necessary repairs are done after all tables have been checked\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: character-sets-dir option
+.\" character-sets-dir option: mysqlcheck
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: check option
+.\" check option: mysqlcheck
\fB\-\-check\fR,
\fB\-c\fR
.sp
-Check the tables for errors. This is the default operation.
-.TP 3n
-\(bu
+Check the tables for errors\&. This is the default operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: check-only-changed option
+.\" check-only-changed option: mysqlcheck
\fB\-\-check\-only\-changed\fR,
\fB\-C\fR
.sp
-Check only tables that have changed since the last check or that have not been closed properly.
-.TP 3n
-\(bu
+Check only tables that have changed since the last check or that have not been closed properly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: check-upgrade option
+.\" check-upgrade option: mysqlcheck
\fB\-\-check\-upgrade\fR,
\fB\-g\fR
.sp
@@ -189,223 +330,507 @@ Invoke
CHECK TABLE
with the
FOR UPGRADE
-option to check tables for incompatibilities with the current version of the server. This option automatically enables the
+option to check tables for incompatibilities with the current version of the server\&. This option automatically enables the
\fB\-\-fix\-db\-names\fR
and
\fB\-\-fix\-table\-names\fR
-options.
+options\&.
\fB\-\-check\-upgrade\fR
-was added in MySQL 5.1.7.
-.TP 3n
-\(bu
+was added in MySQL 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: compress option
+.\" compress option: mysqlcheck
\fB\-\-compress\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: databases option
+.\" databases option: mysqlcheck
\fB\-\-databases\fR,
\fB\-B\fR
.sp
-Process all tables in the named databases. Normally,
+Process all tables in the named databases\&. Normally,
\fBmysqlcheck\fR
-treats the first name argument on the command line as a database name and following names as table names. With this option, it treats all name arguments as database names.
-.TP 3n
-\(bu
+treats the first name argument on the command line as a database name and following names as table names\&. With this option, it treats all name arguments as database names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: debug option
+.\" debug option: mysqlcheck
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. A typical
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string is often
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: debug-check option
+.\" debug-check option: mysqlcheck
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: debug-info option
+.\" debug-info option: mysqlcheck
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: default-character-set option
+.\" default-character-set option: mysqlcheck
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: extended option
+.\" extended option: mysqlcheck
\fB\-\-extended\fR,
\fB\-e\fR
.sp
-If you are using this option to check tables, it ensures that they are 100% consistent but takes a long time.
+If you are using this option to check tables, it ensures that they are 100% consistent but takes a long time\&.
.sp
If you are using this option to repair tables, it runs an extended repair that may not only take a long time to execute, but may produce a lot of garbage rows also!
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: fast option
+.\" fast option: mysqlcheck
\fB\-\-fast\fR,
\fB\-F\fR
.sp
-Check only tables that have not been closed properly.
-.TP 3n
-\(bu
+Check only tables that have not been closed properly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: fix-db-names option
+.\" fix-db-names option: mysqlcheck
\fB\-\-fix\-db\-names\fR
.sp
-Convert database names to 5.1 format. Only database names that contain special characters are affected. This option was added in MySQL 5.1.7.
-.TP 3n
-\(bu
+Convert database names to 5\&.1 format\&. Only database names that contain special characters are affected\&. This option was added in MySQL 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: fix-table-names option
+.\" fix-table-names option: mysqlcheck
\fB\-\-fix\-table\-names\fR
.sp
-Convert table names to 5.1 format. Only table names that contain special characters are affected. This option was added in MySQL 5.1.7. As of MySQL 5.1.23, this option also applies to views.
-.TP 3n
-\(bu
+Convert table names to 5\&.1 format\&. Only table names that contain special characters are affected\&. This option was added in MySQL 5\&.1\&.7\&. As of MySQL 5\&.1\&.23, this option also applies to views\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: force option
+.\" force option: mysqlcheck
\fB\-\-force\fR,
\fB\-f\fR
.sp
-Continue even if an SQL error occurs.
-.TP 3n
-\(bu
+Continue even if an SQL error occurs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: host option
+.\" host option: mysqlcheck
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: medium-check option
+.\" medium-check option: mysqlcheck
\fB\-\-medium\-check\fR,
\fB\-m\fR
.sp
Do a check that is faster than an
\fB\-\-extended\fR
-operation. This finds only 99.99% of all errors, which should be good enough in most cases.
-.TP 3n
-\(bu
+operation\&. This finds only 99\&.99% of all errors, which should be good enough in most cases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: optimize option
+.\" optimize option: mysqlcheck
\fB\-\-optimize\fR,
\fB\-o\fR
.sp
-Optimize the tables.
-.TP 3n
-\(bu
+Optimize the tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: password option
+.\" password option: mysqlcheck
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: pipe option
+.\" pipe option: mysql
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: port option
+.\" port option: mysqlcheck
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: protocol option
+.\" protocol option: mysqlcheck
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: quick option
+.\" quick option: mysqlcheck
\fB\-\-quick\fR,
\fB\-q\fR
.sp
-If you are using this option to check tables, it prevents the check from scanning the rows to check for incorrect links. This is the fastest check method.
+If you are using this option to check tables, it prevents the check from scanning the rows to check for incorrect links\&. This is the fastest check method\&.
.sp
-If you are using this option to repair tables, it tries to repair only the index tree. This is the fastest repair method.
-.TP 3n
-\(bu
+If you are using this option to repair tables, it tries to repair only the index tree\&. This is the fastest repair method\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: repair option
+.\" repair option: mysqlcheck
\fB\-\-repair\fR,
\fB\-r\fR
.sp
-Perform a repair that can fix almost anything except unique keys that are not unique.
-.TP 3n
-\(bu
+Perform a repair that can fix almost anything except unique keys that are not unique\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: silent option
+.\" silent option: mysqlcheck
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Print only error messages.
-.TP 3n
-\(bu
+Silent mode\&. Print only error messages\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: socket option
+.\" socket option: mysqlcheck
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: SSL options
+.\" SSL options: mysqlcheck
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: tables option
+.\" tables option: mysqlcheck
\fB\-\-tables\fR
.sp
-Overrides the
+Override the
\fB\-\-databases\fR
or
\fB\-B\fR
-option. All name arguments following the option are regarded as table names.
-.TP 3n
-\(bu
+option\&. All name arguments following the option are regarded as table names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: use-frm option
+.\" use-frm option: mysqlcheck
\fB\-\-use\-frm\fR
.sp
For repair operations on
MyISAM
tables, get the table structure from the
-\fI.frm\fR
+\&.frm
file so that the table can be repaired even if the
-\fI.MYI\fR
-header is corrupted.
-.TP 3n
-\(bu
+\&.MYI
+header is corrupted\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: user option
+.\" user option: mysqlcheck
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: verbose option
+.\" verbose option: mysqlcheck
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print information about the various stages of program operation.
-.TP 3n
-\(bu
+Verbose mode\&. Print information about the various stages of program operation\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlcheck: version option
+.\" version option: mysqlcheck
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqld.8'
--- a/man/mysqld.8 2009-05-25 09:59:47 +0000
+++ b/man/mysqld.8 2009-09-16 12:03:18 +0000
@@ -1,53 +1,69 @@
+'\" t
.\" Title: \fBmysqld\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLD\fR" "8" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLD\FR" "8" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqld: MySQL server
+.\" MySQL server: mysqld
.SH "NAME"
mysqld \- the MySQL server
.SH "SYNOPSIS"
-.HP 17
+.HP \w'\fBmysqld\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysqld [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
-\fBmysqld\fR, also known as MySQL Server, is the main program that does most of the work in a MySQL installation. MySQL Server manages access to the MySQL data directory that contains databases and tables. The data directory is also the default location for other information such as log files and status files.
+\fBmysqld\fR, also known as MySQL Server, is the main program that does most of the work in a MySQL installation\&. MySQL Server manages access to the MySQL data directory that contains databases and tables\&. The data directory is also the default location for other information such as log files and status files\&.
.PP
-When MySQL server starts, it listens for network connections from client programs and manages access to databases on behalf of those clients.
+When MySQL server starts, it listens for network connections from client programs and manages access to databases on behalf of those clients\&.
.PP
The
\fBmysqld\fR
-program has many options that can be specified at startup. For a complete list of options, run this command:
+program has many options that can be specified at startup\&. For a complete list of options, run this command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqld \-\-verbose \-\-help\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-MySQL Server also has a set of system variables that affect its operation as it runs. System variables can be set at server startup, and many of them can be changed at runtime to effect dynamic server reconfiguration. MySQL Server also has a set of status variables that provide information about its operation. You can monitor these status variables to access runtime performance characteristics.
+MySQL Server also has a set of system variables that affect its operation as it runs\&. System variables can be set at server startup, and many of them can be changed at runtime to effect dynamic server reconfiguration\&. MySQL Server also has a set of status variables that provide information about its operation\&. You can monitor these status variables to access runtime performance characteristics\&.
.PP
For a full description of MySQL Server command options, system variables, and status variables, see
-Section\ 5.1, \(lqThe MySQL Server\(rq. For information about installing MySQL and setting up the initial configuration, see
-Chapter\ 2, Installing and Upgrading MySQL.
+Section\ \&5.1, \(lqThe MySQL Server\(rq\&. For information about installing MySQL and setting up the initial configuration, see
+Chapter\ \&2, Installing and Upgrading MySQL\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqld_multi.1'
--- a/man/mysqld_multi.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqld_multi.1 2009-09-16 12:03:18 +0000
@@ -1,91 +1,111 @@
+'\" t
.\" Title: \fBmysqld_multi\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLD_MULTI\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLD_MULTI\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqld_multi
+.\" tools: mysqld_multi
+.\" scripts
+.\" multi mysqld
.SH "NAME"
mysqld_multi \- manage multiple MySQL servers
.SH "SYNOPSIS"
-.HP 59
-\fBmysqld_multi [\fR\fB\fIoptions\fR\fR\fB] {start|stop|report} [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB] ...]\fR
+.HP \w'\fBmysqld_multi\ [\fR\fB\fIoptions\fR\fR\fB]\ {start|stop|report}\ [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB]\ \&.\&.\&.]\fR\ 'u
+\fBmysqld_multi [\fR\fB\fIoptions\fR\fR\fB] {start|stop|report} [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB] \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
\fBmysqld_multi\fR
is designed to manage several
\fBmysqld\fR
-processes that listen for connections on different Unix socket files and TCP/IP ports. It can start or stop servers, or report their current status. The MySQL Instance Manager is an alternative means of managing multiple servers (see
-\fBmysqlmanager\fR(8)).
+processes that listen for connections on different Unix socket files and TCP/IP ports\&. It can start or stop servers, or report their current status\&. The MySQL Instance Manager is an alternative means of managing multiple servers (see
+\fBmysqlmanager\fR(8))\&.
.PP
\fBmysqld_multi\fR
searches for groups named
[mysqld\fIN\fR]
in
-\fImy.cnf\fR
+my\&.cnf
(or in the file named by the
\fB\-\-config\-file\fR
-option).
+option)\&.
\fIN\fR
-can be any positive integer. This number is referred to in the following discussion as the option group number, or
-\fIGNR\fR. Group numbers distinguish option groups from one another and are used as arguments to
+can be any positive integer\&. This number is referred to in the following discussion as the option group number, or
+\fIGNR\fR\&. Group numbers distinguish option groups from one another and are used as arguments to
\fBmysqld_multi\fR
-to specify which servers you want to start, stop, or obtain a status report for. Options listed in these groups are the same that you would use in the
+to specify which servers you want to start, stop, or obtain a status report for\&. Options listed in these groups are the same that you would use in the
[mysqld]
group used for starting
-\fBmysqld\fR. (See, for example,
-Section\ 2.11.2.2, \(lqStarting and Stopping MySQL Automatically\(rq.) However, when using multiple servers, it is necessary that each one use its own value for options such as the Unix socket file and TCP/IP port number. For more information on which options must be unique per server in a multiple\-server environment, see
-Section\ 5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq.
+\fBmysqld\fR\&. (See, for example,
+Section\ \&2.11.2.2, \(lqStarting and Stopping MySQL Automatically\(rq\&.) However, when using multiple servers, it is necessary that each one use its own value for options such as the Unix socket file and TCP/IP port number\&. For more information on which options must be unique per server in a multiple\-server environment, see
+Section\ \&5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq\&.
.PP
To invoke
\fBmysqld_multi\fR, use the following syntax:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqld_multi [\fR\fB\fIoptions\fR\fR\fB] {start|stop|report} [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB] ...]\fR
+shell> \fBmysqld_multi [\fR\fB\fIoptions\fR\fR\fB] {start|stop|report} [\fR\fB\fIGNR\fR\fR\fB[,\fR\fB\fIGNR\fR\fR\fB] \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
start,
stop, and
report
-indicate which operation to perform. You can perform the designated operation for a single server or multiple servers, depending on the
+indicate which operation to perform\&. You can perform the designated operation for a single server or multiple servers, depending on the
\fIGNR\fR
-list that follows the option name. If there is no list,
+list that follows the option name\&. If there is no list,
\fBmysqld_multi\fR
-performs the operation for all servers in the option file.
+performs the operation for all servers in the option file\&.
.PP
Each
\fIGNR\fR
-value represents an option group number or range of group numbers. The value should be the number at the end of the group name in the option file. For example, the
+value represents an option group number or range of group numbers\&. The value should be the number at the end of the group name in the option file\&. For example, the
\fIGNR\fR
for a group named
[mysqld17]
is
-17. To specify a range of numbers, separate the first and last numbers by a dash. The
+17\&. To specify a range of numbers, separate the first and last numbers by a dash\&. The
\fIGNR\fR
value
10\-13
represents groups
[mysqld10]
through
-[mysqld13]. Multiple groups or group ranges can be specified on the command line, separated by commas. There must be no whitespace characters (spaces or tabs) in the
+[mysqld13]\&. Multiple groups or group ranges can be specified on the command line, separated by commas\&. There must be no whitespace characters (spaces or tabs) in the
\fIGNR\fR
-list; anything after a whitespace character is ignored.
+list; anything after a whitespace character is ignored\&.
.PP
This command starts a single server using option group
[mysqld17]:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqld_multi start 17\fR
.fi
+.if n \{\
.RE
+.\}
.PP
This command stops several servers, using option groups
[mysqld8]
@@ -94,108 +114,203 @@ and
through
[mysqld13]:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqld_multi stop 8,10\-13\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For an example of how you might set up an option file, use this command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqld_multi \-\-example\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-As of MySQL 5.1.18,
+As of MySQL 5\&.1\&.18,
\fBmysqld_multi\fR
searches for option files as follows:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: no-defaults option
+.\" no-defaults option: mysqld_multi
With
-\fB\-\-no\-defaults\fR, no option files are read.
-.TP 3n
-\(bu
+\fB\-\-no\-defaults\fR, no option files are read\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: defaults-file option
+.\" defaults-file option: mysqld_multi
With
-\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR, only the named file is read.
-.TP 3n
-\(bu
+\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR, only the named file is read\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: defaults-extra-file option
+.\" defaults-extra-file option: mysqld_multi
Otherwise, option files in the standard list of locations are read, including any file named by the
\fB\-\-defaults\-extra\-file=\fR\fB\fIfile_name\fR\fR
-option, if one is given. (If the option is given multiple times, the last value is used.)
-.sp
+option, if one is given\&. (If the option is given multiple times, the last value is used\&.)
.RE
.PP
Option files read are searched for
[mysqld_multi]
and
[mysqld\fIN\fR]
-option groups.
+option groups\&.
.PP
-Before MySQL 5.1.18, the preceding options are not recognized. Files in the standard locations are read, and any file named by the
+Before MySQL 5\&.1\&.18, the preceding options are not recognized\&. Files in the standard locations are read, and any file named by the
\fB\-\-config\-file=\fR\fB\fIfile_name\fR\fR
-option, if one is given. A file named by
+option, if one is given\&. A file named by
\fB\-\-config\-file\fR
is read only for
[mysqld\fIN\fR]
option groups, not the
[mysqld_multi]
-group.
+group\&.
.PP
\fBmysqld_multi\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: help option
+.\" help option: mysqld_multi
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: config-file option
+.\" config-file option: mysqld_multi
\fB\-\-config\-file=\fR\fB\fIfile_name\fR\fR
.sp
-As of MySQL 5.1.18, this option is deprecated. If given, it is treated the same way as
-\fB\-\-defaults\-extra\-file\fR, described earlier.
+As of MySQL 5\&.1\&.18, this option is deprecated\&. If given, it is treated the same way as
+\fB\-\-defaults\-extra\-file\fR, described earlier\&.
.sp
-Before MySQL 5.1.18, this option specifies the name of an extra option file. It affects where
+Before MySQL 5\&.1\&.18, this option specifies the name of an extra option file\&. It affects where
\fBmysqld_multi\fR
looks for
[mysqld\fIN\fR]
-option groups. Without this option, all options are read from the usual
-\fImy.cnf\fR
-file. The option does not affect where
+option groups\&. Without this option, all options are read from the usual
+my\&.cnf
+file\&. The option does not affect where
\fBmysqld_multi\fR
reads its own options, which are always taken from the
[mysqld_multi]
group in the usual
-\fImy.cnf\fR
-file.
-.TP 3n
-\(bu
+my\&.cnf
+file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: example option
+.\" example option: mysqld_multi
\fB\-\-example\fR
.sp
-Display a sample option file.
-.TP 3n
-\(bu
+Display a sample option file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: log option
+.\" log option: mysqld_multi
\fB\-\-log=\fR\fB\fIfile_name\fR\fR
.sp
-Specify the name of the log file. If the file exists, log output is appended to it.
-.TP 3n
-\(bu
+Specify the name of the log file\&. If the file exists, log output is appended to it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: mysqladmin option
+.\" mysqladmin option: mysqld_multi
\fB\-\-mysqladmin=\fR\fB\fIprog_name\fR\fR
.sp
The
\fBmysqladmin\fR
-binary to be used to stop servers.
-.TP 3n
-\(bu
+binary to be used to stop servers\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: mysqld option
+.\" mysqld option: mysqld_multi
\fB\-\-mysqld=\fR\fB\fIprog_name\fR\fR
.sp
The
\fBmysqld\fR
-binary to be used. Note that you can specify
+binary to be used\&. Note that you can specify
\fBmysqld_safe\fR
-as the value for this option also. If you use
+as the value for this option also\&. If you use
\fBmysqld_safe\fR
to start the server, you can include the
mysqld
@@ -203,68 +318,148 @@ or
ledir
options in the corresponding
[mysqld\fIN\fR]
-option group. These options indicate the name of the server that
+option group\&. These options indicate the name of the server that
\fBmysqld_safe\fR
-should start and the path name of the directory where the server is located. (See the descriptions for these options in
-\fBmysqld_safe\fR(1).) Example:
+should start and the path name of the directory where the server is located\&. (See the descriptions for these options in
+\fBmysqld_safe\fR(1)\&.) Example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld38]
mysqld = mysqld\-debug
ledir = /opt/local/mysql/libexec
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: no-log option
+.\" no-log option: mysqld_multi
\fB\-\-no\-log\fR
.sp
Print log information to
stdout
-rather than to the log file. By default, output goes to the log file.
-.TP 3n
-\(bu
+rather than to the log file\&. By default, output goes to the log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: password option
+.\" password option: mysqld_multi
\fB\-\-password=\fR\fB\fIpassword\fR\fR
.sp
The password of the MySQL account to use when invoking
-\fBmysqladmin\fR. Note that the password value is not optional for this option, unlike for other MySQL programs.
-.TP 3n
-\(bu
+\fBmysqladmin\fR\&. Note that the password value is not optional for this option, unlike for other MySQL programs\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: silent option
+.\" silent option: mysqld_multi
\fB\-\-silent\fR
.sp
-Silent mode; disable warnings.
-.TP 3n
-\(bu
+Silent mode; disable warnings\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: tcp-ip option
+.\" tcp-ip option: mysqld_multi
\fB\-\-tcp\-ip\fR
.sp
-Connect to each MySQL server via the TCP/IP port instead of the Unix socket file. (If a socket file is missing, the server might still be running, but accessible only via the TCP/IP port.) By default, connections are made using the Unix socket file. This option affects
+Connect to each MySQL server via the TCP/IP port instead of the Unix socket file\&. (If a socket file is missing, the server might still be running, but accessible only via the TCP/IP port\&.) By default, connections are made using the Unix socket file\&. This option affects
stop
and
report
-operations.
-.TP 3n
-\(bu
+operations\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: user option
+.\" user option: mysqld_multi
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
The user name of the MySQL account to use when invoking
-\fBmysqladmin\fR.
-.TP 3n
-\(bu
+\fBmysqladmin\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: verbose option
+.\" verbose option: mysqld_multi
\fB\-\-verbose\fR
.sp
-Be more verbose.
-.TP 3n
-\(bu
-\fB\-\-version\fR
+Be more verbose\&.
+.RE
.sp
-Display version information and exit.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_multi: version option
+.\" version option: mysqld_multi
+\fB\-\-version\fR
.sp
+Display version information and exit\&.
.RE
.PP
Some notes about
\fBmysqld_multi\fR:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fBMost important\fR: Before using
\fBmysqld_multi\fR
be sure that you understand the meanings of the options that are passed to the
@@ -273,67 +468,112 @@ servers and
\fIwhy\fR
you would want to have separate
\fBmysqld\fR
-processes. Beware of the dangers of using multiple
+processes\&. Beware of the dangers of using multiple
\fBmysqld\fR
-servers with the same data directory. Use separate data directories, unless you
+servers with the same data directory\&. Use separate data directories, unless you
\fIknow\fR
-what you are doing. Starting multiple servers with the same data directory does
+what you are doing\&. Starting multiple servers with the same data directory does
\fInot\fR
-give you extra performance in a threaded system. See
-Section\ 5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq.
-.TP 3n
-\(bu
+give you extra performance in a threaded system\&. See
+Section\ \&5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
Make sure that the data directory for each server is fully accessible to the Unix account that the specific
\fBmysqld\fR
-process is started as.
+process is started as\&.
\fIDo not\fR
use the Unix
\fIroot\fR
account for this, unless you
\fIknow\fR
-what you are doing. See
-Section\ 5.3.5, \(lqHow to Run MySQL as a Normal User\(rq.
-.TP 3n
-\(bu
+what you are doing\&. See
+Section\ \&5.3.5, \(lqHow to Run MySQL as a Normal User\(rq\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Make sure that the MySQL account used for stopping the
\fBmysqld\fR
servers (with the
\fBmysqladmin\fR
-program) has the same user name and password for each server. Also, make sure that the account has the
+program) has the same user name and password for each server\&. Also, make sure that the account has the
SHUTDOWN
-privilege. If the servers that you want to manage have different user names or passwords for the administrative accounts, you might want to create an account on each server that has the same user name and password. For example, you might set up a common
+privilege\&. If the servers that you want to manage have different user names or passwords for the administrative accounts, you might want to create an account on each server that has the same user name and password\&. For example, you might set up a common
multi_admin
account by executing the following commands for each server:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-u root \-S /tmp/mysql.sock \-p\fR
+shell> \fBmysql \-u root \-S /tmp/mysql\&.sock \-p\fR
Enter password:
-mysql> \fBGRANT SHUTDOWN ON *.*\fR
- \-> \fBTO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';\fR
+mysql> \fBGRANT SHUTDOWN ON *\&.*\fR
+ \-> \fBTO \'multi_admin\'@\'localhost\' IDENTIFIED BY \'multipass\';\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
See
-Section\ 5.4, \(lqThe MySQL Access Privilege System\(rq. You have to do this for each
+Section\ \&5.4, \(lqThe MySQL Access Privilege System\(rq\&. You have to do this for each
\fBmysqld\fR
-server. Change the connection parameters appropriately when connecting to each one. Note that the host name part of the account name must allow you to connect as
+server\&. Change the connection parameters appropriately when connecting to each one\&. Note that the host name part of the account name must allow you to connect as
multi_admin
from the host where you want to run
-\fBmysqld_multi\fR.
-.TP 3n
-\(bu
+\fBmysqld_multi\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The Unix socket file and the TCP/IP port number must be different for every
-\fBmysqld\fR. (Alternatively, if the host has multiple network addresses, you can use
+\fBmysqld\fR\&. (Alternatively, if the host has multiple network addresses, you can use
\fB\-\-bind\-address\fR
-to cause different servers to listen to different interfaces.)
-.TP 3n
-\(bu
+to cause different servers to listen to different interfaces\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The
\fB\-\-pid\-file\fR
option is very important if you are using
@@ -343,7 +583,7 @@ to start
(for example,
\fB\-\-mysqld=mysqld_safe\fR) Every
\fBmysqld\fR
-should have its own process ID file. The advantage of using
+should have its own process ID file\&. The advantage of using
\fBmysqld_safe\fR
instead of
\fBmysqld\fR
@@ -353,28 +593,41 @@ monitors its
\fBmysqld\fR
process and restarts it if the process terminates due to a signal sent using
kill \-9
-or for other reasons, such as a segmentation fault. Please note that the
+or for other reasons, such as a segmentation fault\&. Please note that the
\fBmysqld_safe\fR
-script might require that you start it from a certain place. This means that you might have to change location to a certain directory before running
-\fBmysqld_multi\fR. If you have problems starting, please see the
+script might require that you start it from a certain place\&. This means that you might have to change location to a certain directory before running
+\fBmysqld_multi\fR\&. If you have problems starting, please see the
\fBmysqld_safe\fR
-script. Check especially the lines:
+script\&. Check especially the lines:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
MY_PWD=`pwd`
# Check if we are starting this relative (for the binary release)
-if test \-d $MY_PWD/data/mysql \-a \\
- \-f ./share/mysql/english/errmsg.sys \-a \\
- \-x ./bin/mysqld
+if test \-d $MY_PWD/data/mysql \-a \e
+ \-f \&./share/mysql/english/errmsg\&.sys \-a \e
+ \-x \&./bin/mysqld
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
.fi
+.if n \{\
.RE
-The test performed by these lines should be successful, or you might encounter problems. See
-\fBmysqld_safe\fR(1).
-.TP 3n
-\(bu
+.\}
+.sp
+The test performed by these lines should be successful, or you might encounter problems\&. See
+\fBmysqld_safe\fR(1)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
You might want to use the
\fB\-\-user\fR
option for
@@ -382,76 +635,81 @@ option for
\fBmysqld_multi\fR
script as the Unix
root
-user. Having the option in the option file doesn't matter; you just get a warning if you are not the superuser and the
+user\&. Having the option in the option file doesn\'t matter; you just get a warning if you are not the superuser and the
\fBmysqld\fR
-processes are started under your own Unix account.
-.sp
+processes are started under your own Unix account\&.
.RE
.PP
The following example shows how you might set up an option file for use with
-\fBmysqld_multi\fR. The order in which the
+\fBmysqld_multi\fR\&. The order in which the
\fBmysqld\fR
-programs are started or stopped depends on the order in which they appear in the option file. Group numbers need not form an unbroken sequence. The first and fifth
+programs are started or stopped depends on the order in which they appear in the option file\&. Group numbers need not form an unbroken sequence\&. The first and fifth
[mysqld\fIN\fR]
groups were intentionally omitted from the example to illustrate that you can have
\(lqgaps\(rq
-in the option file. This gives you more flexibility.
+in the option file\&. This gives you more flexibility\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-# This file should probably be in your home dir (~/.my.cnf)
-# or /etc/my.cnf
-# Version 2.1 by Jani Tolonen
+# This file should probably be in your home dir (~/\&.my\&.cnf)
+# or /etc/my\&.cnf
+# Version 2\&.1 by Jani Tolonen
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass
[mysqld2]
-socket = /tmp/mysql.sock2
+socket = /tmp/mysql\&.sock2
port = 3307
-pid\-file = /usr/local/mysql/var2/hostname.pid2
+pid\-file = /usr/local/mysql/var2/hostname\&.pid2
datadir = /usr/local/mysql/var2
language = /usr/local/share/mysql/english
user = john
[mysqld3]
-socket = /tmp/mysql.sock3
+socket = /tmp/mysql\&.sock3
port = 3308
-pid\-file = /usr/local/mysql/var3/hostname.pid3
+pid\-file = /usr/local/mysql/var3/hostname\&.pid3
datadir = /usr/local/mysql/var3
language = /usr/local/share/mysql/swedish
user = monty
[mysqld4]
-socket = /tmp/mysql.sock4
+socket = /tmp/mysql\&.sock4
port = 3309
-pid\-file = /usr/local/mysql/var4/hostname.pid4
+pid\-file = /usr/local/mysql/var4/hostname\&.pid4
datadir = /usr/local/mysql/var4
language = /usr/local/share/mysql/estonia
user = tonu
[mysqld6]
-socket = /tmp/mysql.sock6
+socket = /tmp/mysql\&.sock6
port = 3311
-pid\-file = /usr/local/mysql/var6/hostname.pid6
+pid\-file = /usr/local/mysql/var6/hostname\&.pid6
datadir = /usr/local/mysql/var6
language = /usr/local/share/mysql/japanese
user = jani
.fi
+.if n \{\
.RE
+.\}
.PP
See
-Section\ 4.2.3.2, \(lqUsing Option Files\(rq.
+Section\ \&4.2.3.3, \(lqUsing Option Files\(rq\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqld_safe.1'
--- a/man/mysqld_safe.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqld_safe.1 2009-09-16 12:03:18 +0000
@@ -1,82 +1,98 @@
+'\" t
.\" Title: \fBmysqld_safe\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLD_SAFE\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLD_SAFE\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqld_safe
+.\" tools: mysqld_safe
+.\" scripts
.SH "NAME"
mysqld_safe \- MySQL server startup script
.SH "SYNOPSIS"
-.HP 20
+.HP \w'\fBmysqld_safe\ \fR\fB\fIoptions\fR\fR\ 'u
\fBmysqld_safe \fR\fB\fIoptions\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysqld_safe\fR
is the recommended way to start a
\fBmysqld\fR
-server on Unix and NetWare.
+server on Unix and NetWare\&.
\fBmysqld_safe\fR
-adds some safety features such as restarting the server when an error occurs and logging runtime information to an error log file. Descriptions of error logging and NetWare\-specific behaviors are given later in this section.
+adds some safety features such as restarting the server when an error occurs and logging runtime information to an error log file\&. Descriptions of error logging and NetWare\-specific behaviors are given later in this section\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-In MySQL 5.1.20 (only), the default error logging behavior with
+In MySQL 5\&.1\&.20 (only), the default error logging behavior with
\fBmysqld_safe\fR
is to write errors to
syslog
on systems that support the
\fBlogger\fR
-program. This differs from the default behavior of writing an error log file for other versions.
+program\&. This differs from the default behavior of writing an error log file for other versions\&.
.PP
-\fBIn 5.1.20, logging to \fR\fBsyslog\fR\fB may fail to operate correctly in some cases, so we recommend that you use \fR\fB\fB\-\-skip\-syslog\fR\fR\fB to use the default log file or \fR\fB\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR\fR\fB to specify a log file name explicitly.\fR
+\fBIn 5\&.1\&.20, logging to \fR\fBsyslog\fR\fB may fail to operate correctly in some cases; if so, use \fR\fB\fB\-\-skip\-syslog\fR\fR\fB to use the default log file or \fR\fB\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR\fR\fB to specify a log file name explicitly\&.\fR
+.sp .5v
+.RE
.PP
\fBmysqld_safe\fR
tries to start an executable named
-\fBmysqld\fR. To override the default behavior and specify explicitly the name of the server you want to run, specify a
+\fBmysqld\fR\&. To override the default behavior and specify explicitly the name of the server you want to run, specify a
\fB\-\-mysqld\fR
or
\fB\-\-mysqld\-version\fR
option to
-\fBmysqld_safe\fR. You can also use
+\fBmysqld_safe\fR\&. You can also use
\fB\-\-ledir\fR
to indicate the directory where
\fBmysqld_safe\fR
-should look for the server.
+should look for the server\&.
.PP
Many of the options to
\fBmysqld_safe\fR
are the same as the options to
-\fBmysqld\fR. See
-Section\ 5.1.2, \(lqServer Command Options\(rq.
+\fBmysqld\fR\&. See
+Section\ \&5.1.2, \(lqServer Command Options\(rq\&.
.PP
-All options specified to
-\fBmysqld_safe\fR
-on the command line are passed to
-\fBmysqld\fR. If you want to use any options that are specific to
+Options unknown to
\fBmysqld_safe\fR
-and that
+are passed to
\fBmysqld\fR
-doesn't support, do not specify them on the command line. Instead, list them in the
+if they are specified on the command line, but ignored if they are specified in the
[mysqld_safe]
-group of an option file. See
-Section\ 4.2.3.2, \(lqUsing Option Files\(rq.
+group of an option file\&. See
+Section\ \&4.2.3.3, \(lqUsing Option Files\(rq\&.
.PP
\fBmysqld_safe\fR
reads all options from the
[mysqld],
[server], and
[mysqld_safe]
-sections in option files. For example, if you specify a
+sections in option files\&. For example, if you specify a
[mysqld]
section like this,
\fBmysqld_safe\fR
@@ -84,12 +100,16 @@ will find and use the
\fB\-\-log\-error\fR
option:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld]
-log\-error=error.log
+log\-error=error\&.log
.fi
+.if n \{\
.RE
+.\}
.PP
For backward compatibility,
\fBmysqld_safe\fR
@@ -97,101 +117,216 @@ also reads
[safe_mysqld]
sections, although you should rename such sections to
[mysqld_safe]
-in MySQL 5.1 installations.
+in MySQL 5\&.1 installations\&.
.PP
\fBmysqld_safe\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: help option
+.\" help option: mysqld_safe
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: autoclose option
+.\" autoclose option: mysqld_safe
\fB\-\-autoclose\fR
.sp
(NetWare only) On NetWare,
\fBmysqld_safe\fR
-provides a screen presence. When you unload (shut down) the
+provides a screen presence\&. When you unload (shut down) the
\fBmysqld_safe\fR
-NLM, the screen does not by default go away. Instead, it prompts for user input:
+NLM, the screen does not by default go away\&. Instead, it prompts for user input:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
*<NLM has terminated; Press any key to close the screen>*
.fi
+.if n \{\
.RE
+.\}
+.sp
If you want NetWare to close the screen automatically instead, use the
\fB\-\-autoclose\fR
option to
-\fBmysqld_safe\fR.
-.TP 3n
-\(bu
+\fBmysqld_safe\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: basedir option
+.\" basedir option: mysqld_safe
\fB\-\-basedir=\fR\fB\fIpath\fR\fR
.sp
-The path to the MySQL installation directory.
-.TP 3n
-\(bu
+The path to the MySQL installation directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: core-file-size option
+.\" core-file-size option: mysqld_safe
\fB\-\-core\-file\-size=\fR\fB\fIsize\fR\fR
.sp
The size of the core file that
\fBmysqld\fR
-should be able to create. The option value is passed to
-\fBulimit \-c\fR.
-.TP 3n
-\(bu
+should be able to create\&. The option value is passed to
+\fBulimit \-c\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: datadir option
+.\" datadir option: mysqld_safe
\fB\-\-datadir=\fR\fB\fIpath\fR\fR
.sp
-The path to the data directory.
-.TP 3n
-\(bu
+The path to the data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: defaults-extra-file option
+.\" defaults-extra-file option: mysqld_safe
\fB\-\-defaults\-extra\-file=\fR\fB\fIpath\fR\fR
.sp
-The name of an option file to be read in addition to the usual option files. This must be the first option on the command line if it is used. If the file does not exist or is otherwise inaccessible, the server will exit with an error.
-.TP 3n
-\(bu
+The name of an option file to be read in addition to the usual option files\&. This must be the first option on the command line if it is used\&. If the file does not exist or is otherwise inaccessible, the server will exit with an error\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: defaults-file option
+.\" defaults-file option: mysqld_safe
\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The name of an option file to be read instead of the usual option files. This must be the first option on the command line if it is used.
-.TP 3n
-\(bu
+The name of an option file to be read instead of the usual option files\&. This must be the first option on the command line if it is used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: ledir option
+.\" ledir option: mysqld_safe
\fB\-\-ledir=\fR\fB\fIpath\fR\fR
.sp
If
\fBmysqld_safe\fR
-cannot find the server, use this option to indicate the path name to the directory where the server is located.
-.TP 3n
-\(bu
+cannot find the server, use this option to indicate the path name to the directory where the server is located\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: log-error option
+.\" log-error option: mysqld_safe
\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR
.sp
-Write the error log to the given file. See
-Section\ 5.2.2, \(lqThe Error Log\(rq.
-.TP 3n
-\(bu
+Write the error log to the given file\&. See
+Section\ \&5.2.2, \(lqThe Error Log\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: mysqld option
+.\" mysqld option: mysqld_safe
\fB\-\-mysqld=\fR\fB\fIprog_name\fR\fR
.sp
The name of the server program (in the
ledir
-directory) that you want to start. This option is needed if you use the MySQL binary distribution but have the data directory outside of the binary distribution. If
+directory) that you want to start\&. This option is needed if you use the MySQL binary distribution but have the data directory outside of the binary distribution\&. If
\fBmysqld_safe\fR
cannot find the server, use the
\fB\-\-ledir\fR
-option to indicate the path name to the directory where the server is located.
-.TP 3n
-\(bu
+option to indicate the path name to the directory where the server is located\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: mysqld-version option
+.\" mysqld-version option: mysqld_safe
\fB\-\-mysqld\-version=\fR\fB\fIsuffix\fR\fR
.sp
This option is similar to the
\fB\-\-mysqld\fR
-option, but you specify only the suffix for the server program name. The basename is assumed to be
-\fBmysqld\fR. For example, if you use
+option, but you specify only the suffix for the server program name\&. The basename is assumed to be
+\fBmysqld\fR\&. For example, if you use
\fB\-\-mysqld\-version=debug\fR,
\fBmysqld_safe\fR
starts the
\fBmysqld\-debug\fR
program in the
ledir
-directory. If the argument to
+directory\&. If the argument to
\fB\-\-mysqld\-version\fR
is empty,
\fBmysqld_safe\fR
@@ -199,57 +334,139 @@ uses
\fBmysqld\fR
in the
ledir
-directory.
-.TP 3n
-\(bu
+directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: nice option
+.\" nice option: mysqld_safe
\fB\-\-nice=\fR\fB\fIpriority\fR\fR
.sp
Use the
nice
-program to set the server's scheduling priority to the given value.
-.TP 3n
-\(bu
+program to set the server\'s scheduling priority to the given value\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: no-defaults option
+.\" no-defaults option: mysqld_safe
\fB\-\-no\-defaults\fR
.sp
-Do not read any option files. This must be the first option on the command line if it is used.
-.TP 3n
-\(bu
+Do not read any option files\&. This must be the first option on the command line if it is used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: open-files-limit option
+.\" open-files-limit option: mysqld_safe
\fB\-\-open\-files\-limit=\fR\fB\fIcount\fR\fR
.sp
The number of files that
\fBmysqld\fR
-should be able to open. The option value is passed to
-\fBulimit \-n\fR. Note that you need to start
+should be able to open\&. The option value is passed to
+\fBulimit \-n\fR\&. Note that you need to start
\fBmysqld_safe\fR
as
root
for this to work properly!
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: pid-file option
+.\" pid-file option: mysqld_safe
\fB\-\-pid\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The path name of the process ID file.
-.TP 3n
-\(bu
+The path name of the process ID file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: port option
+.\" port option: mysqld_safe
\fB\-\-port=\fR\fB\fIport_num\fR\fR
.sp
-The port number that the server should use when listening for TCP/IP connections. The port number must be 1024 or higher unless the server is started by the
+The port number that the server should use when listening for TCP/IP connections\&. The port number must be 1024 or higher unless the server is started by the
root
-system user.
-.TP 3n
-\(bu
+system user\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: skip-kill-mysqld option
+.\" skip-kill-mysqld option: mysqld_safe
\fB\-\-skip\-kill\-mysqld\fR
.sp
Do not try to kill stray
\fBmysqld\fR
-processes at startup. This option works only on Linux.
-.TP 3n
-\(bu
+processes at startup\&. This option works only on Linux\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: socket option
+.\" socket option: mysqld_safe
\fB\-\-socket=\fR\fB\fIpath\fR\fR
.sp
-The Unix socket file that the server should use when listening for local connections.
-.TP 3n
-\(bu
+The Unix socket file that the server should use when listening for local connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: syslog option
+.\" syslog option: mysqld_safe
+.\" mysqld_safe: skip-syslog option
+.\" skip-syslog option: mysqld_safe
\fB\-\-syslog\fR,
\fB\-\-skip\-syslog\fR
.sp
@@ -258,12 +475,22 @@ causes error messages to be sent to
syslog
on systems that support the
\fBlogger\fR
-program.
+program\&.
\-\-skip\-syslog
suppresses the use of
-syslog; messages are written to an error log file. These options were added in MySQL 5.1.20.
-.TP 3n
-\(bu
+syslog; messages are written to an error log file\&. These options were added in MySQL 5\&.1\&.20\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: syslog-tag option
+.\" syslog-tag option: mysqld_safe
\fB\-\-syslog\-tag=\fR\fB\fItag\fR\fR
.sp
For logging to
@@ -274,20 +501,40 @@ and
are written with a tag of
mysqld_safe
and
-mysqld, respectively. To specify a suffix for the tag, use
+mysqld, respectively\&. To specify a suffix for the tag, use
\fB\-\-syslog\-tag=\fR\fB\fItag\fR\fR, which modifies the tags to be
mysqld_safe\-\fItag\fR
and
-mysqld\-\fItag\fR. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+mysqld\-\fItag\fR\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: timezone option
+.\" timezone option: mysqld_safe
\fB\-\-timezone=\fR\fB\fItimezone\fR\fR
.sp
Set the
TZ
-time zone environment variable to the given option value. Consult your operating system documentation for legal time zone specification formats.
-.TP 3n
-\(bu
+time zone environment variable to the given option value\&. Consult your operating system documentation for legal time zone specification formats\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqld_safe: user option
+.\" user option: mysqld_safe
\fB\-\-user={\fR\fB\fIuser_name\fR\fR\fB|\fR\fB\fIuser_id\fR\fR\fB}\fR
.sp
Run the
@@ -295,9 +542,8 @@ Run the
server as the user having the name
\fIuser_name\fR
or the numeric user ID
-\fIuser_id\fR. (\(lqUser\(rq
-in this context refers to a system login account, not a MySQL user listed in the grant tables.)
-.sp
+\fIuser_id\fR\&. (\(lqUser\(rq
+in this context refers to a system login account, not a MySQL user listed in the grant tables\&.)
.RE
.PP
If you execute
@@ -306,56 +552,78 @@ with the
\fB\-\-defaults\-file\fR
or
\fB\-\-defaults\-extra\-file\fR
-option to name an option file, the option must be the first one given on the command line or the option file will not be used. For example, this command will not use the named option file:
+option to name an option file, the option must be the first one given on the command line or the option file will not be used\&. For example, this command will not use the named option file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBmysqld_safe \-\-port=\fR\fB\fIport_num\fR\fR\fB \-\-defaults\-file=\fR\fB\fIfile_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Instead, use the following command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBmysqld_safe \-\-defaults\-file=\fR\fB\fIfile_name\fR\fR\fB \-\-port=\fR\fB\fIport_num\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fBmysqld_safe\fR
-script is written so that it normally can start a server that was installed from either a source or a binary distribution of MySQL, even though these types of distributions typically install the server in slightly different locations. (See
-Section\ 2.1.5, \(lqInstallation Layouts\(rq.)
+script is written so that it normally can start a server that was installed from either a source or a binary distribution of MySQL, even though these types of distributions typically install the server in slightly different locations\&. (See
+Section\ \&2.1.5, \(lqInstallation Layouts\(rq\&.)
\fBmysqld_safe\fR
expects one of the following conditions to be true:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
The server and databases can be found relative to the working directory (the directory from which
\fBmysqld_safe\fR
-is invoked). For binary distributions,
+is invoked)\&. For binary distributions,
\fBmysqld_safe\fR
looks under its working directory for
-\fIbin\fR
+bin
and
-\fIdata\fR
-directories. For source distributions, it looks for
-\fIlibexec\fR
+data
+directories\&. For source distributions, it looks for
+libexec
and
-\fIvar\fR
-directories. This condition should be met if you execute
+var
+directories\&. This condition should be met if you execute
\fBmysqld_safe\fR
from your MySQL installation directory (for example,
-\fI/usr/local/mysql\fR
-for a binary distribution).
-.TP 3n
-\(bu
+/usr/local/mysql
+for a binary distribution)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
If the server and databases cannot be found relative to the working directory,
\fBmysqld_safe\fR
-attempts to locate them by absolute path names. Typical locations are
-\fI/usr/local/libexec\fR
+attempts to locate them by absolute path names\&. Typical locations are
+/usr/local/libexec
and
-\fI/usr/local/var\fR. The actual locations are determined from the values configured into the distribution at the time it was built. They should be correct if MySQL is installed in the location specified at configuration time.
-.sp
+/usr/local/var\&. The actual locations are determined from the values configured into the distribution at the time it was built\&. They should be correct if MySQL is installed in the location specified at configuration time\&.
.RE
.PP
Because
@@ -364,12 +632,16 @@ tries to find the server and databases r
\fBmysqld_safe\fR
from the MySQL installation directory:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBcd \fR\fB\fImysql_installation_directory\fR\fR
shell> \fBbin/mysqld_safe &\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If
\fBmysqld_safe\fR
@@ -377,7 +649,7 @@ fails, even when invoked from the MySQL
\fB\-\-ledir\fR
and
\fB\-\-datadir\fR
-options to indicate the directories in which the server and databases are located on your system.
+options to indicate the directories in which the server and databases are located on your system\&.
.PP
When you use
\fBmysqld_safe\fR
@@ -386,43 +658,73 @@ to start
\fBmysqld_safe\fR
arranges for error (and notice) messages from itself and from
\fBmysqld\fR
-to go to the same destination.
+to go to the same destination\&.
.PP
-As of MySQL 5.1.20, there are several
+As of MySQL 5\&.1\&.20, there are several
\fBmysqld_safe\fR
options for controlling the destination of these messages:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-\-syslog\fR: Write error messages to
syslog
on systems that support the
\fBlogger\fR
-program.
-.TP 3n
-\(bu
+program\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-\-skip\-syslog\fR: Do not write error messages to
-syslog. Messages are written to the default error log file (\fI\fIhost_name\fR\fR\fI.err\fR
+syslog\&. Messages are written to the default error log file (\fIhost_name\fR\&.err
in the data directory), or to a named file if the
\fB\-\-log\-error\fR
-option is given.
-.TP 3n
-\(bu
-\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR: Write error messages to the named error file.
+option is given\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR: Write error messages to the named error file\&.
.RE
.PP
If none of these options is given, the default is
-\fB\-\-skip\-syslog\fR.
+\fB\-\-skip\-syslog\fR\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-In MySQL 5.1.20
+In MySQL 5\&.1\&.20
\fIonly\fR, the default is
-\fB\-\-syslog\fR. This differs from logging behavior for other versions of MySQL, for which the default is to write messages to the default error log file.
+\fB\-\-syslog\fR\&. This differs from logging behavior for other versions of MySQL, for which the default is to write messages to the default error log file\&.
+.sp .5v
+.RE
.PP
If
\fB\-\-syslog\fR
@@ -430,77 +732,127 @@ and
\fB\-\-log\-error\fR
are both given, a warning is issued and
\fB\-\-log\-error\fR
-takes precedence.
+takes precedence\&.
.PP
When
\fBmysqld_safe\fR
writes a message, notices go to the logging destination (syslog
or the error log file) and
-stdout. Errors go to the logging destination and
-stderr.
+stdout\&. Errors go to the logging destination and
+stderr\&.
.PP
-Before MySQL 5.1.20, error logging is controlled only with the
+Before MySQL 5\&.1\&.20, error logging is controlled only with the
\fB\-\-log\-error\fR
-option. If it is given, messages go to the named error file. Otherwise, messages go to the default error file.
+option\&. If it is given, messages go to the named error file\&. Otherwise, messages go to the default error file\&.
.PP
Normally, you should not edit the
\fBmysqld_safe\fR
-script. Instead, configure
+script\&. Instead, configure
\fBmysqld_safe\fR
by using command\-line options or options in the
[mysqld_safe]
section of a
-\fImy.cnf\fR
-option file. In rare cases, it might be necessary to edit
+my\&.cnf
+option file\&. In rare cases, it might be necessary to edit
\fBmysqld_safe\fR
-to get it to start the server properly. However, if you do this, your modified version of
+to get it to start the server properly\&. However, if you do this, your modified version of
\fBmysqld_safe\fR
-might be overwritten if you upgrade MySQL in the future, so you should make a copy of your edited version that you can reinstall.
+might be overwritten if you upgrade MySQL in the future, so you should make a copy of your edited version that you can reinstall\&.
.PP
On NetWare,
\fBmysqld_safe\fR
-is a NetWare Loadable Module (NLM) that is ported from the original Unix shell script. It starts the server as follows:
-.TP 3n
-1.
-Runs a number of system and option checks.
-.TP 3n
-2.
+is a NetWare Loadable Module (NLM) that is ported from the original Unix shell script\&. It starts the server as follows:
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+Runs a number of system and option checks\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
Runs a check on
MyISAM
-tables.
-.TP 3n
-3.
-Provides a screen presence for the MySQL server.
-.TP 3n
-4.
+tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
+Provides a screen presence for the MySQL server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 4.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 4." 4.2
+.\}
Starts
-\fBmysqld\fR, monitors it, and restarts it if it terminates in error.
-.TP 3n
-5.
+\fBmysqld\fR, monitors it, and restarts it if it terminates in error\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 5.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 5." 4.2
+.\}
Sends error messages from
\fBmysqld\fR
to the
-\fI\fIhost_name\fR\fR\fI.err\fR
-file in the data directory.
-.TP 3n
-6.
+\fIhost_name\fR\&.err
+file in the data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 6.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 6." 4.2
+.\}
Sends
\fBmysqld_safe\fR
screen output to the
-\fI\fIhost_name\fR\fR\fI.safe\fR
-file in the data directory.
+\fIhost_name\fR\&.safe
+file in the data directory\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqldump.1'
--- a/man/mysqldump.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqldump.1 2009-09-16 12:03:18 +0000
@@ -1,45 +1,62 @@
+'\" t
.\" Title: \fBmysqldump\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLDUMP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLDUMP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqldump
+.\" dumping: databases and tables
+.\" backups: databases and tables
+.\" databases: dumping
+.\" tables: dumping
.SH "NAME"
mysqldump \- a database backup program
.SH "SYNOPSIS"
-.HP 45
-\fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB ...]]\fR
+.HP \w'\fBmysqldump\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB\ [\fR\fB\fItbl_name\fR\fR\fB\ \&.\&.\&.]]\fR\ 'u
+\fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB \&.\&.\&.]]\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqldump\fR
-client is a backup program originally written by Igor Romanenko. It can be used to dump a database or a collection of databases for backup or transfer to another SQL server (not necessarily a MySQL server). The dump typically contains SQL statements to create the table, populate it, or both. However,
+client is a backup program originally written by Igor Romanenko\&. It can be used to dump a database or a collection of databases for backup or transfer to another SQL server (not necessarily a MySQL server)\&. The dump typically contains SQL statements to create the table, populate it, or both\&. However,
\fBmysqldump\fR
-can also be used to generate files in CSV, other delimited text, or XML format.
+can also be used to generate files in CSV, other delimited text, or XML format\&.
.PP
If you are doing a backup on the server and your tables all are
MyISAM
tables, consider using the
\fBmysqlhotcopy\fR
-instead because it can accomplish faster backups and faster restores. See
-\fBmysqlhotcopy\fR(1).
+instead because it can accomplish faster backups and faster restores\&. See
+\fBmysqlhotcopy\fR(1)\&.
.PP
There are three general ways to invoke
\fBmysqldump\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItables\fR\fR\fB]\fR
-shell> \fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \fR\fB\fIdb_name3\fR\fR\fB...]\fR
+shell> \fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \fR\fB\fIdb_name3\fR\fR\fB\&.\&.\&.]\fR
shell> \fBmysqldump [\fR\fB\fIoptions\fR\fR\fB] \-\-all\-databases\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you do not name any tables following
\fIdb_name\fR
@@ -47,27 +64,27 @@ or if you use the
\fB\-\-databases\fR
or
\fB\-\-all\-databases\fR
-option, entire databases are dumped.
+option, entire databases are dumped\&.
.PP
\fBmysqldump\fR
does not dump the
INFORMATION_SCHEMA
-database. If you name that database explicitly on the command line,
+database\&. If you name that database explicitly on the command line,
\fBmysqldump\fR
-silently ignores it.
+silently ignores it\&.
.PP
To get a list of the options your version of
\fBmysqldump\fR
supports, execute
-\fBmysqldump \-\-help\fR.
+\fBmysqldump \-\-help\fR\&.
.PP
Some
\fBmysqldump\fR
-options are shorthand for groups of other options.
+options are shorthand for groups of other options\&.
\fB\-\-opt\fR
and
\fB\-\-compact\fR
-fall into this category. For example, use of
+fall into this category\&. For example, use of
\fB\-\-opt\fR
is the same as specifying
\fB\-\-add\-drop\-table\fR
@@ -77,61 +94,75 @@ is the same as specifying
\fB\-\-extended\-insert\fR
\fB\-\-lock\-tables\fR
\fB\-\-quick\fR
-\fB\-\-set\-charset\fR. Note that all of the options that
+\fB\-\-set\-charset\fR\&. Note that all of the options that
\fB\-\-opt\fR
stands for also are on by default because
\fB\-\-opt\fR
-is on by default.
+is on by default\&.
.PP
To reverse the effect of a group option, uses its
\fB\-\-skip\-\fR\fB\fIxxx\fR\fR
form (\fB\-\-skip\-opt\fR
or
-\fB\-\-skip\-compact\fR). It is also possible to select only part of the effect of a group option by following it with options that enable or disable specific features. Here are some examples:
-.TP 3n
-\(bu
+\fB\-\-skip\-compact\fR)\&. It is also possible to select only part of the effect of a group option by following it with options that enable or disable specific features\&. Here are some examples:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
To select the effect of
\fB\-\-opt\fR
except for some features, use the
\fB\-\-skip\fR
-option for each feature. For example, to disable extended inserts and memory buffering, use
+option for each feature\&. For example, to disable extended inserts and memory buffering, use
\fB\-\-opt\fR
\fB\-\-skip\-extended\-insert\fR
-\fB\-\-skip\-quick\fR. (As of MySQL 5.1,
+\fB\-\-skip\-quick\fR\&. (As of MySQL 5\&.1,
\fB\-\-skip\-extended\-insert\fR
\fB\-\-skip\-quick\fR
is sufficient because
\fB\-\-opt\fR
-is on by default.)
-.TP 3n
-\(bu
+is on by default\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
To reverse
\fB\-\-opt\fR
for all features except index disabling and table locking, use
\fB\-\-skip\-opt\fR
\fB\-\-disable\-keys\fR
-\fB\-\-lock\-tables\fR.
-.sp
+\fB\-\-lock\-tables\fR\&.
.RE
.PP
-When you selectively enable or disable the effect of a group option, order is important because options are processed first to last. For example,
+When you selectively enable or disable the effect of a group option, order is important because options are processed first to last\&. For example,
\fB\-\-disable\-keys\fR
\fB\-\-lock\-tables\fR
\fB\-\-skip\-opt\fR
would not have the intended effect; it is the same as
\fB\-\-skip\-opt\fR
-by itself.
+by itself\&.
.PP
\fBmysqldump\fR
-can retrieve and dump table contents row by row, or it can retrieve the entire content from a table and buffer it in memory before dumping it. Buffering in memory can be a problem if you are dumping large tables. To dump tables row by row, use the
+can retrieve and dump table contents row by row, or it can retrieve the entire content from a table and buffer it in memory before dumping it\&. Buffering in memory can be a problem if you are dumping large tables\&. To dump tables row by row, use the
\fB\-\-quick\fR
option (or
\fB\-\-opt\fR, which enables
-\fB\-\-quick\fR). The
+\fB\-\-quick\fR)\&. The
\fB\-\-opt\fR
option (and hence
-\fB\-\-quick\fR) is enabled by default in MySQL 5.1; to enable memory buffering, use
-\fB\-\-skip\-quick\fR.
+\fB\-\-quick\fR) is enabled by default in MySQL 5\&.1; to enable memory buffering, use
+\fB\-\-skip\-quick\fR\&.
.PP
If you are using a recent version of
\fBmysqldump\fR
@@ -139,119 +170,245 @@ to generate a dump to be reloaded into a
\fB\-\-opt\fR
or
\fB\-\-extended\-insert\fR
-option. Use
+option\&. Use
\fB\-\-skip\-opt\fR
-instead.
+instead\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
\fBmysqldump\fR
-from the MySQL 5.1.21 distribution cannot be used to create dumps from MySQL server versions 5.1.20 and older. This issue is fixed in MySQL 5.1.22. ([1]\&\fIBug#30123\fR)
+from the MySQL 5\&.1\&.21 distribution cannot be used to create dumps from MySQL server versions 5\&.1\&.20 and older\&. This issue is fixed in MySQL 5\&.1\&.22\&. (\m[blue]\fBBug#30123\fR\m[]\&\s-2\u[1]\d\s+2)
+.sp .5v
+.RE
.PP
\fBmysqldump\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: help option
+.\" help option: mysqldump
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: add-drop-database option
+.\" add-drop-database option: mysqldump
\fB\-\-add\-drop\-database\fR
.sp
Add a
DROP DATABASE
statement before each
CREATE DATABASE
-statement.
-.TP 3n
-\(bu
+statement\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: add-drop-table option
+.\" add-drop-table option: mysqldump
\fB\-\-add\-drop\-table\fR
.sp
Add a
DROP TABLE
statement before each
CREATE TABLE
-statement.
-.TP 3n
-\(bu
+statement\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: add-locks option
+.\" add-locks option: mysqldump
\fB\-\-add\-locks\fR
.sp
Surround each table dump with
LOCK TABLES
and
UNLOCK TABLES
-statements. This results in faster inserts when the dump file is reloaded. See
-Section\ 7.2.20, \(lqSpeed of INSERT Statements\(rq.
-.TP 3n
-\(bu
+statements\&. This results in faster inserts when the dump file is reloaded\&. See
+Section\ \&7.2.21, \(lqSpeed of INSERT Statements\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: all-databases option
+.\" all-databases option: mysqldump
\fB\-\-all\-databases\fR,
\fB\-A\fR
.sp
-Dump all tables in all databases. This is the same as using the
+Dump all tables in all databases\&. This is the same as using the
\fB\-\-databases\fR
-option and naming all the databases on the command line.
-.TP 3n
-\(bu
+option and naming all the databases on the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: all-tablespaces option
+.\" all-tablespaces option: mysqldump
\fB\-\-all\-tablespaces\fR,
\fB\-Y\fR
.sp
Adds to a table dump all SQL statements needed to create any tablespaces used by an
NDBCLUSTER
-table. This information is not otherwise included in the output from
-\fBmysqldump\fR. This option is currently relevant only to MySQL Cluster tables.
+table\&. This information is not otherwise included in the output from
+\fBmysqldump\fR\&. This option is currently relevant only to MySQL Cluster tables\&.
+.sp
+This option was added in MySQL 5\&.1\&.6\&.
+.RE
.sp
-This option was added in MySQL 5.1.6.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: allow-keywords option
+.\" allow-keywords option: mysqldump
\fB\-\-allow\-keywords\fR
.sp
-Allow creation of column names that are keywords. This works by prefixing each column name with the table name.
-.TP 3n
-\(bu
+Allow creation of column names that are keywords\&. This works by prefixing each column name with the table name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: character-sets-dir option
+.\" character-sets-dir option: mysqldump
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: comments option
+.\" comments option: mysqldump
\fB\-\-comments\fR,
\fB\-i\fR
.sp
-Write additional information in the dump file such as program version, server version, and host. This option is enabled by default. To suppress this additional information, use
-\fB\-\-skip\-comments\fR.
-.TP 3n
-\(bu
+Write additional information in the dump file such as program version, server version, and host\&. This option is enabled by default\&. To suppress this additional information, use
+\fB\-\-skip\-comments\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: compact option
+.\" compact option: mysqldump
\fB\-\-compact\fR
.sp
-Produce less verbose output. This option enables the
+Produce less verbose output\&. This option enables the
\fB\-\-skip\-add\-drop\-table\fR,
\fB\-\-skip\-add\-locks\fR,
\fB\-\-skip\-comments\fR,
\fB\-\-skip\-disable\-keys\fR, and
\fB\-\-skip\-set\-charset\fR
-options.
+options\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
-Prior to release 5.1.21, this option did not create valid SQL if the database dump contained views. The recreation of views requires the creation and removal of temporary tables and this option suppressed the removal of those temporary tables. As a workaround, use
+.ps -1
+.br
+Prior to release 5\&.1\&.21, this option did not create valid SQL if the database dump contained views\&. The recreation of views requires the creation and removal of temporary tables and this option suppressed the removal of those temporary tables\&. As a workaround, use
\fB\-\-compact\fR
with the
\fB\-\-add\-drop\-table\fR
-option and then manually adjust the dump file.
-.TP 3n
-\(bu
+option and then manually adjust the dump file\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: compatible option
+.\" compatible option: mysqldump
\fB\-\-compatible=\fR\fB\fIname\fR\fR
.sp
-Produce output that is more compatible with other database systems or with older MySQL servers. The value of
+Produce output that is more compatible with other database systems or with older MySQL servers\&. The value of
name
can be
ansi,
@@ -264,100 +421,210 @@ db2,
maxdb,
no_key_options,
no_table_options, or
-no_field_options. To use several values, separate them by commas. These values have the same meaning as the corresponding options for setting the server SQL mode. See
-Section\ 5.1.7, \(lqServer SQL Modes\(rq.
+no_field_options\&. To use several values, separate them by commas\&. These values have the same meaning as the corresponding options for setting the server SQL mode\&. See
+Section\ \&5.1.8, \(lqServer SQL Modes\(rq\&.
.sp
-This option does not guarantee compatibility with other servers. It only enables those SQL mode values that are currently available for making dump output more compatible. For example,
+This option does not guarantee compatibility with other servers\&. It only enables those SQL mode values that are currently available for making dump output more compatible\&. For example,
\fB\-\-compatible=oracle\fR
-does not map data types to Oracle types or use Oracle comment syntax.
+does not map data types to Oracle types or use Oracle comment syntax\&.
.sp
-\fIThis option requires a server version of 4.1.0 or higher\fR. With older servers, it does nothing.
-.TP 3n
-\(bu
+\fIThis option requires a server version of 4\&.1\&.0 or higher\fR\&. With older servers, it does nothing\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: complete-insert option
+.\" complete-insert option: mysqldump
\fB\-\-complete\-insert\fR,
\fB\-c\fR
.sp
Use complete
INSERT
-statements that include column names.
-.TP 3n
-\(bu
+statements that include column names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: compress option
+.\" compress option: mysqldump
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: create-options option
+.\" create-options option: mysqldump
\fB\-\-create\-options\fR
.sp
Include all MySQL\-specific table options in the
CREATE TABLE
-statements.
-.TP 3n
-\(bu
+statements\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: databases option
+.\" databases option: mysqldump
\fB\-\-databases\fR,
\fB\-B\fR
.sp
-Dump several databases. Normally,
+Dump several databases\&. Normally,
\fBmysqldump\fR
-treats the first name argument on the command line as a database name and following names as table names. With this option, it treats all name arguments as database names.
+treats the first name argument on the command line as a database name and following names as table names\&. With this option, it treats all name arguments as database names\&.
CREATE DATABASE
and
USE
-statements are included in the output before each new database.
-.TP 3n
-\(bu
+statements are included in the output before each new database\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: debug option
+.\" debug option: mysqldump
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string is often
-\'d:t:o,\fIfile_name\fR'. The default value is
-\'d:t:o,/tmp/mysqldump.trace'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default value is
+\'d:t:o,/tmp/mysqldump\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: debug-check option
+.\" debug-check option: mysqldump
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: debug-info option
+.\" debug-info option: mysqldump
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: default-character-set option
+.\" default-character-set option: mysqldump
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq. If no character set is specified,
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&. If no character set is specified,
\fBmysqldump\fR
uses
utf8, and earlier versions use
-latin1.
+latin1\&.
.sp
This option has no effect for output data files produced by using the
\fB\-\-tab\fR
-option. See the description for that option.
-.TP 3n
-\(bu
+option\&. See the description for that option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: delayed-insert option
+.\" delayed-insert option: mysqldump
\fB\-\-delayed\-insert\fR
.sp
Write
INSERT DELAYED
statements rather than
INSERT
-statements.
-.TP 3n
-\(bu
+statements\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: delete-master-logs option
+.\" delete-master-logs option: mysqldump
\fB\-\-delete\-master\-logs\fR
.sp
-On a master replication server, delete the binary logs after performing the dump operation. This option automatically enables
-\fB\-\-master\-data\fR.
-.TP 3n
-\(bu
+On a master replication server, delete the binary logs after performing the dump operation\&. This option automatically enables
+\fB\-\-master\-data\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: disable-keys option
+.\" disable-keys option: mysqldump
\fB\-\-disable\-keys\fR,
\fB\-K\fR
.sp
@@ -367,11 +634,21 @@ statements with
/*!40000 ALTER TABLE \fItbl_name\fR DISABLE KEYS */;
and
/*!40000 ALTER TABLE \fItbl_name\fR ENABLE KEYS */;
-statements. This makes loading the dump file faster because the indexes are created after all rows are inserted. This option is effective only for non\-unique indexes of
+statements\&. This makes loading the dump file faster because the indexes are created after all rows are inserted\&. This option is effective only for nonunique indexes of
MyISAM
-tables.
-.TP 3n
-\(bu
+tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: dump-date option
+.\" dump-date option: mysqldump
\fB\-\-dump\-date\fR
.sp
\fBmysqldump\fR
@@ -379,23 +656,43 @@ produces a
\-\- Dump completed on \fIDATE\fR
comment at the end of the dump if the
\fB\-\-comments\fR
-option is given. However, the date causes dump files for identical data take at different times to appear to be different.
+option is given\&. However, the date causes dump files for identical data take at different times to appear to be different\&.
\fB\-\-dump\-date\fR
and
\fB\-\-skip\-dump\-date\fR
-control whether the date is added to the comment. The default is
+control whether the date is added to the comment\&. The default is
\fB\-\-dump\-date\fR
-(include the date in the comment).
+(include the date in the comment)\&.
\fB\-\-skip\-dump\-date\fR
-suppresses date printing. This option was added in MySQL 5.1.23.
-.TP 3n
-\(bu
+suppresses date printing\&. This option was added in MySQL 5\&.1\&.23\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: events option
+.\" events option: mysqldump
\fB\-\-events\fR,
\fB\-E\fR
.sp
-Dump events from the dumped databases. This option was added in MySQL 5.1.8.
-.TP 3n
-\(bu
+Dump events from the dumped databases\&. This option was added in MySQL 5\&.1\&.8\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: extended-insert option
+.\" extended-insert option: mysqldump
\fB\-\-extended\-insert\fR,
\fB\-e\fR
.sp
@@ -403,235 +700,456 @@ Use multiple\-row
INSERT
syntax that include several
VALUES
-lists. This results in a smaller dump file and speeds up inserts when the file is reloaded.
-.TP 3n
-\(bu
-\fB\-\-fields\-terminated\-by=...\fR,
-\fB\-\-fields\-enclosed\-by=...\fR,
-\fB\-\-fields\-optionally\-enclosed\-by=...\fR,
-\fB\-\-fields\-escaped\-by=...\fR
+lists\&. This results in a smaller dump file and speeds up inserts when the file is reloaded\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: fields-terminated-by option
+.\" fields-terminated-by option: mysqldump
+\fB\-\-fields\-terminated\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-enclosed-by option
+.\" fields-enclosed-by option: mysqldump
+\fB\-\-fields\-enclosed\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-optionally-enclosed-by option
+.\" fields-optionally-enclosed-by option: mysqldump
+\fB\-\-fields\-optionally\-enclosed\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-escaped-by option
+.\" fields-escaped-by option: mysqldump
+\fB\-\-fields\-escaped\-by=\&.\&.\&.\fR
.sp
These options are used with the
\fB\-T\fR
option and have the same meaning as the corresponding clauses for
-LOAD DATA INFILE. See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
-.TP 3n
-\(bu
+LOAD DATA INFILE\&. See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: first-slave option
+.\" first-slave option: mysqldump
\fB\-\-first\-slave\fR,
\fB\-x\fR
.sp
-Deprecated. Now renamed to
-\fB\-\-lock\-all\-tables\fR.
-.TP 3n
-\(bu
+Deprecated\&. Now renamed to
+\fB\-\-lock\-all\-tables\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: flush-logs option
+.\" flush-logs option: mysqldump
\fB\-\-flush\-logs\fR,
\fB\-F\fR
.sp
-Flush the MySQL server log files before starting the dump. This option requires the
+Flush the MySQL server log files before starting the dump\&. This option requires the
RELOAD
-privilege. Note that if you use this option in combination with the
+privilege\&. Note that if you use this option in combination with the
\fB\-\-all\-databases\fR
(or
\fB\-A\fR) option, the logs are flushed
-\fIfor each database dumped\fR. The exception is when using
+\fIfor each database dumped\fR\&. The exception is when using
\fB\-\-lock\-all\-tables\fR
or
-\fB\-\-master\-data\fR: In this case, the logs are flushed only once, corresponding to the moment that all tables are locked. If you want your dump and the log flush to happen at exactly the same moment, you should use
+\fB\-\-master\-data\fR: In this case, the logs are flushed only once, corresponding to the moment that all tables are locked\&. If you want your dump and the log flush to happen at exactly the same moment, you should use
\fB\-\-flush\-logs\fR
together with either
\fB\-\-lock\-all\-tables\fR
or
-\fB\-\-master\-data\fR.
-.TP 3n
-\(bu
+\fB\-\-master\-data\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: flush-privileges option
+.\" flush-privileges option: mysqldump
\fB\-\-flush\-privileges\fR
.sp
Emit a
FLUSH PRIVILEGES
statement after dumping the
mysql
-database. This option should be used any time the dump contains the
+database\&. This option should be used any time the dump contains the
mysql
database and any other database that depends on the data in the
mysql
-database for proper restoration. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+database for proper restoration\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: force option
+.\" force option: mysqldump
\fB\-\-force\fR,
\fB\-f\fR
.sp
-Continue even if an SQL error occurs during a table dump.
+Continue even if an SQL error occurs during a table dump\&.
.sp
One use for this option is to cause
\fBmysqldump\fR
-to continue executing even when it encounters a view that has become invalid because the definition refers to a table that has been dropped. Without
+to continue executing even when it encounters a view that has become invalid because the definition refers to a table that has been dropped\&. Without
\fB\-\-force\fR,
\fBmysqldump\fR
-exits with an error message. With
+exits with an error message\&. With
\fB\-\-force\fR,
\fBmysqldump\fR
-prints the error message, but it also writes an SQL comment containing the view definition to the dump output and continues executing.
-.TP 3n
-\(bu
+prints the error message, but it also writes an SQL comment containing the view definition to the dump output and continues executing\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: host option
+.\" host option: mysqldump
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Dump data from the MySQL server on the given host. The default host is
-localhost.
-.TP 3n
-\(bu
+Dump data from the MySQL server on the given host\&. The default host is
+localhost\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: hex-blob option
+.\" hex-blob option: mysqldump
\fB\-\-hex\-blob\fR
.sp
Dump binary columns using hexadecimal notation (for example,
-\'abc'
+\'abc\'
becomes
-0x616263). The affected data types are
+0x616263)\&. The affected data types are
BINARY,
VARBINARY,
BLOB, and
-BIT.
-.TP 3n
-\(bu
-\fB\-\-ignore\-table=\fR\fB\fIdb_name.tbl_name\fR\fR
-.sp
-Do not dump the given table, which must be specified using both the database and table names. To ignore multiple tables, use this option multiple times. This option also can be used to ignore views.
-.TP 3n
-\(bu
+BIT\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: ignore-table option
+.\" ignore-table option: mysqldump
+\fB\-\-ignore\-table=\fR\fB\fIdb_name\&.tbl_name\fR\fR
+.sp
+Do not dump the given table, which must be specified using both the database and table names\&. To ignore multiple tables, use this option multiple times\&. This option also can be used to ignore views\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: insert-ignore option
+.\" insert-ignore option: mysqldump
\fB\-\-insert\-ignore\fR
.sp
Write
INSERT
statements with the
IGNORE
-option.
-.TP 3n
-\(bu
-\fB\-\-lines\-terminated\-by=...\fR
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: lines-terminated-by option
+.\" lines-terminated-by option: mysqldump
+\fB\-\-lines\-terminated\-by=\&.\&.\&.\fR
.sp
This option is used with the
\fB\-T\fR
option and has the same meaning as the corresponding clause for
-LOAD DATA INFILE. See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
-.TP 3n
-\(bu
+LOAD DATA INFILE\&. See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: lock-all-tables option
+.\" lock-all-tables option: mysqldump
\fB\-\-lock\-all\-tables\fR,
\fB\-x\fR
.sp
-Lock all tables across all databases. This is achieved by acquiring a global read lock for the duration of the whole dump. This option automatically turns off
+Lock all tables across all databases\&. This is achieved by acquiring a global read lock for the duration of the whole dump\&. This option automatically turns off
\fB\-\-single\-transaction\fR
and
-\fB\-\-lock\-tables\fR.
-.TP 3n
-\(bu
+\fB\-\-lock\-tables\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: lock-tables option
+.\" lock-tables option: mysqldump
\fB\-\-lock\-tables\fR,
\fB\-l\fR
.sp
-Lock all tables before dumping them. The tables are locked with
+Lock all tables before dumping them\&. The tables are locked with
READ LOCAL
to allow concurrent inserts in the case of
MyISAM
-tables. For transactional tables such as
-InnoDB
-and
-BDB,
+tables\&. For transactional tables such as
+InnoDB,
\fB\-\-single\-transaction\fR
-is a much better option, because it does not need to lock the tables at all.
+is a much better option, because it does not need to lock the tables at all\&.
.sp
Please note that when dumping multiple databases,
\fB\-\-lock\-tables\fR
-locks tables for each database separately. Therefore, this option does not guarantee that the tables in the dump file are logically consistent between databases. Tables in different databases may be dumped in completely different states.
-.TP 3n
-\(bu
+locks tables for each database separately\&. Therefore, this option does not guarantee that the tables in the dump file are logically consistent between databases\&. Tables in different databases may be dumped in completely different states\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: log-error option
+.\" log-error option: mysqldump
\fB\-\-log\-error=\fR\fB\fIfile_name\fR\fR
.sp
-Append warnings and errors to the named file. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+Append warnings and errors to the named file\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: master-data option
+.\" master-data option: mysqldump
\fB\-\-master\-data[=\fR\fB\fIvalue\fR\fR\fB]\fR
.sp
-Use this option to dump a master replication server to produce a dump file that can be used to set up another server as a slave of the master. It causes the dump output to include a
+Use this option to dump a master replication server to produce a dump file that can be used to set up another server as a slave of the master\&. It causes the dump output to include a
CHANGE MASTER TO
-statement that indicates the binary log coordinates (file name and position) of the dumped server. These are the master server coordinates from which the slave should start replicating.
+statement that indicates the binary log coordinates (file name and position) of the dumped server\&. These are the master server coordinates from which the slave should start replicating\&.
.sp
If the option value is 2, the
CHANGE MASTER TO
-statement is written as an SQL comment, and thus is informative only; it has no effect when the dump file is reloaded. If the option value is 1, the statement takes effect when the dump file is reloaded. If the option value is not specified, the default value is 1.
+statement is written as an SQL comment, and thus is informative only; it has no effect when the dump file is reloaded\&. If the option value is 1, the statement takes effect when the dump file is reloaded\&. If the option value is not specified, the default value is 1\&.
.sp
This option requires the
RELOAD
-privilege and the binary log must be enabled.
+privilege and the binary log must be enabled\&.
.sp
The
\fB\-\-master\-data\fR
option automatically turns off
-\fB\-\-lock\-tables\fR. It also turns on
+\fB\-\-lock\-tables\fR\&. It also turns on
\fB\-\-lock\-all\-tables\fR, unless
\fB\-\-single\-transaction\fR
also is specified, in which case, a global read lock is acquired only for a short time at the beginning of the dump (see the description for
-\fB\-\-single\-transaction\fR). In all cases, any action on logs happens at the exact moment of the dump.
+\fB\-\-single\-transaction\fR)\&. In all cases, any action on logs happens at the exact moment of the dump\&.
.sp
-It is also possible to set up a slave by dumping an existing slave of the master. To do this, use the following procedure on the existing slave:
-.RS 3n
-.TP 3n
-1.
-Stop the slave's SQL thread and get its current status:
+It is also possible to set up a slave by dumping an existing slave of the master\&. To do this, use the following procedure on the existing slave:
.sp
-.RS 3n
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+Stop the slave\'s SQL thread and get its current status:
+.sp
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSTOP SLAVE SQL_THREAD;\fR
mysql> \fBSHOW SLAVE STATUS;\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-2.
-From the output of the SHOW SLAVE STATUS statement, get the binary log coordinates of the master server from which the new slave should start replicating. These coordinates are the values of the Relay_Master_Log_File and Exec_Master_Log_Pos values. Denote those values as file_name and file_pos.
-.TP 3n
-3.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+From the output of the SHOW SLAVE STATUS statement, get the binary log coordinates of the master server from which the new slave should start replicating\&. These coordinates are the values of the Relay_Master_Log_File and Exec_Master_Log_Pos values\&. Denote those values as file_name and file_pos\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
Dump the slave server:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump \-\-master\-data=2 \-\-all\-databases > dumpfile\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-4.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 4.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 4." 4.2
+.\}
Restart the slave:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSTART SLAVE;\fR
.fi
+.if n \{\
.RE
-.TP 3n
-5.
+.\}
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 5.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 5." 4.2
+.\}
On the new slave, reload the dump file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysql < dumpfile\fR
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-6.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 6.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 6." 4.2
+.\}
On the new slave, set the replication coordinates to those of the master server obtained earlier:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBCHANGE MASTER TO\fR
- \-> \fBMASTER_LOG_FILE = 'file_name', MASTER_LOG_POS = file_pos;\fR
+ \-> \fBMASTER_LOG_FILE = \'file_name\', MASTER_LOG_POS = file_pos;\fR
.fi
+.if n \{\
.RE
+.\}
+.sp
The
CHANGE MASTER TO
statement might also need other parameters, such as
MASTER_HOST
-to point the slave to the correct master server host. Add any such parameters as necessary.
+to point the slave to the correct master server host\&. Add any such parameters as necessary\&.
.RE
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-autocommit option
+.\" no-autocommit option: mysqldump
\fB\-\-no\-autocommit\fR
.sp
Enclose the
@@ -640,9 +1158,19 @@ statements for each dumped table within
SET autocommit = 0
and
COMMIT
-statements.
-.TP 3n
-\(bu
+statements\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-create-db option
+.\" no-create-db option: mysqldump
\fB\-\-no\-create\-db\fR,
\fB\-n\fR
.sp
@@ -652,25 +1180,71 @@ statements that are otherwise included i
\fB\-\-databases\fR
or
\fB\-\-all\-databases\fR
-option is given.
-.TP 3n
-\(bu
+option is given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-create-info option
+.\" no-create-info option: mysqldump
\fB\-\-no\-create\-info\fR,
\fB\-t\fR
.sp
Do not write
CREATE TABLE
-statements that re\-create each dumped table.
-.TP 3n
-\(bu
+statements that re\-create each dumped table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-data option
+.\" no-data option: mysqldump
\fB\-\-no\-data\fR,
\fB\-d\fR
.sp
-Do not write any table row information (that is, do not dump table contents). This is very useful if you want to dump only the
+Do not write any table row information (that is, do not dump table contents)\&. This is very useful if you want to dump only the
CREATE TABLE
-statement for the table.
-.TP 3n
-\(bu
+statement for the table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: no-set-names option
+.\" no-set-names option: mysqldump
+\fB\-\-no\-set\-names\fR
+.sp
+This option is deprecated\&. Use
+\fB\-\-skip\-set\-charset\fR\&. instead\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: opt option
+.\" opt option: mysqldump
\fB\-\-opt\fR
.sp
This option is shorthand; it is the same as specifying
@@ -681,155 +1255,275 @@ This option is shorthand; it is the same
\fB\-\-extended\-insert\fR
\fB\-\-lock\-tables\fR
\fB\-\-quick\fR
-\fB\-\-set\-charset\fR. It should give you a fast dump operation and produce a dump file that can be reloaded into a MySQL server quickly.
+\fB\-\-set\-charset\fR\&. It should give you a fast dump operation and produce a dump file that can be reloaded into a MySQL server quickly\&.
.sp
-\fIThe \fR\fI\fB\-\-opt\fR\fR\fI option is enabled by default. Use \fR\fI\fB\-\-skip\-opt\fR\fR\fI to disable it.\fR
+\fIThe \fR\fI\fB\-\-opt\fR\fR\fI option is enabled by default\&. Use \fR\fI\fB\-\-skip\-opt\fR\fR\fI to disable it\&.\fR
See the discussion at the beginning of this section for information about selectively enabling or disabling certain of the options affected by
-\fB\-\-opt\fR.
-.TP 3n
-\(bu
+\fB\-\-opt\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: order-by-primary option
+.\" order-by-primary option: mysqldump
\fB\-\-order\-by\-primary\fR
.sp
-Sorts each table's rows by its primary key, or by its first unique index, if such an index exists. This is useful when dumping a
+Sort each table\'s rows by its primary key, or by its first unique index, if such an index exists\&. This is useful when dumping a
MyISAM
table to be loaded into an
InnoDB
-table, but will make the dump itself take considerably longer.
-.TP 3n
-\(bu
+table, but will make the dump itself take considerably longer\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: password option
+.\" password option: mysqldump
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: pipe option
+.\" pipe option: mysqldump
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: port option
+.\" port option: mysqldump
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: protocol option
+.\" protocol option: mysqldump
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: quick option
+.\" quick option: mysqldump
\fB\-\-quick\fR,
\fB\-q\fR
.sp
-This option is useful for dumping large tables. It forces
+This option is useful for dumping large tables\&. It forces
\fBmysqldump\fR
-to retrieve rows for a table from the server a row at a time rather than retrieving the entire row set and buffering it in memory before writing it out.
-.TP 3n
-\(bu
+to retrieve rows for a table from the server a row at a time rather than retrieving the entire row set and buffering it in memory before writing it out\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: quote-names option
+.\" quote-names option: mysqldump
\fB\-\-quote\-names\fR,
\fB\-Q\fR
.sp
Quote database, table, and column names within
\(lq`\(rq
-characters. If the
+characters\&. If the
ANSI_QUOTES
SQL mode is enabled, names are quoted within
\(lq"\(rq
-characters. This option is enabled by default. It can be disabled with
+characters\&. This option is enabled by default\&. It can be disabled with
\fB\-\-skip\-quote\-names\fR, but this option should be given after any option such as
\fB\-\-compatible\fR
that may enable
-\fB\-\-quote\-names\fR.
-.TP 3n
-\(bu
+\fB\-\-quote\-names\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: replace option
+.\" replace option: mysqldump
\fB\-\-replace\fR
.sp
Write
REPLACE
statements rather than
INSERT
-statements. Available as of MySQL 5.1.3.
-.TP 3n
-\(bu
+statements\&. Available as of MySQL 5\&.1\&.3\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: result-file option
+.\" result-file option: mysqldump
\fB\-\-result\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-r \fR\fB\fIfile_name\fR\fR
.sp
-Direct output to a given file. This option should be used on Windows to prevent newline
-\(lq\\n\(rq
+Direct output to a given file\&. This option should be used on Windows to prevent newline
+\(lq\en\(rq
characters from being converted to
-\(lq\\r\\n\(rq
-carriage return/newline sequences. The result file is created and its contents overwritten, even if an error occurs while generating the dump. The previous contents are lost.
-.TP 3n
-\(bu
+\(lq\er\en\(rq
+carriage return/newline sequences\&. The result file is created and its contents overwritten, even if an error occurs while generating the dump\&. The previous contents are lost\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: routines option
+.\" routines option: mysqldump
\fB\-\-routines\fR,
\fB\-R\fR
.sp
-Dump stored routines (procedures and functions) from the dumped databases. Use of this option requires the
+Dump stored routines (procedures and functions) from the dumped databases\&. Use of this option requires the
SELECT
privilege for the
-mysql.proc
-table. The output generated by using
+mysql\&.proc
+table\&. The output generated by using
\fB\-\-routines\fR
contains
CREATE PROCEDURE
and
CREATE FUNCTION
-statements to re\-create the routines. However, these statements do not include attributes such as the routine creation and modification timestamps. This means that when the routines are reloaded, they will be created with the timestamps equal to the reload time.
+statements to re\-create the routines\&. However, these statements do not include attributes such as the routine creation and modification timestamps\&. This means that when the routines are reloaded, they will be created with the timestamps equal to the reload time\&.
.sp
If you require routines to be re\-created with their original timestamp attributes, do not use
-\fB\-\-routines\fR. Instead, dump and reload the contents of the
-mysql.proc
+\fB\-\-routines\fR\&. Instead, dump and reload the contents of the
+mysql\&.proc
table directly, using a MySQL account that has appropriate privileges for the
mysql
-database.
+database\&.
.sp
-This option was added in MySQL 5.1.2. Before that, stored routines are not dumped. Routine
+This option was added in MySQL 5\&.1\&.2\&. Before that, stored routines are not dumped\&. Routine
DEFINER
-values are not dumped until MySQL 5.1.8. This means that before 5.1.8, when routines are reloaded, they will be created with the definer set to the reloading user. If you require routines to be re\-created with their original definer, dump and load the contents of the
-mysql.proc
-table directly as described earlier.
-.TP 3n
-\(bu
+values are not dumped until MySQL 5\&.1\&.8\&. This means that before 5\&.1\&.8, when routines are reloaded, they will be created with the definer set to the reloading user\&. If you require routines to be re\-created with their original definer, dump and load the contents of the
+mysql\&.proc
+table directly as described earlier\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: set-charset option
+.\" set-charset option: mysqldump
\fB\-\-set\-charset\fR
.sp
Add
SET NAMES \fIdefault_character_set\fR
-to the output. This option is enabled by default. To suppress the
+to the output\&. This option is enabled by default\&. To suppress the
SET NAMES
statement, use
-\fB\-\-skip\-set\-charset\fR.
-.TP 3n
-\(bu
+\fB\-\-skip\-set\-charset\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: single-transaction option
+.\" single-transaction option: mysqldump
\fB\-\-single\-transaction\fR
.sp
This option issues a
BEGIN
-SQL statement before dumping data from the server. It is useful only with transactional tables such as
+SQL statement before dumping data from the server\&. It is useful only with transactional tables such as
InnoDB, because then it dumps the consistent state of the database at the time when
BEGIN
-was issued without blocking any applications.
+was issued without blocking any applications\&.
.sp
When using this option, you should keep in mind that only
InnoDB
-tables are dumped in a consistent state. For example, any
+tables are dumped in a consistent state\&. For example, any
MyISAM
or
MEMORY
-tables dumped while using this option may still change state.
+tables dumped while using this option may still change state\&.
.sp
While a
\fB\-\-single\-transaction\fR
@@ -837,19 +1531,19 @@ dump is in process, to ensure a valid du
ALTER TABLE,
DROP TABLE,
RENAME TABLE,
-TRUNCATE TABLE. A consistent read is not isolated from those statements, so use of them on a table to be dumped can cause the
+TRUNCATE TABLE\&. A consistent read is not isolated from those statements, so use of them on a table to be dumped can cause the
SELECT
performed by
\fBmysqldump\fR
-to retrieve the table contents to obtain incorrect contents or fail.
+to retrieve the table contents to obtain incorrect contents or fail\&.
.sp
This option is not supported for MySQL Cluster tables; the results cannot be guaranteed to be consistent due to the fact that the
NDBCLUSTER
storage engine supports only the
READ_COMMITTED
-transaction isolation level. You should always use
+transaction isolation level\&. You should always use
NDB
-backup and restore instead.
+backup and restore instead\&.
.sp
The
\fB\-\-single\-transaction\fR
@@ -857,164 +1551,306 @@ option and the
\fB\-\-lock\-tables\fR
option are mutually exclusive, because
LOCK TABLES
-causes any pending transactions to be committed implicitly.
+causes any pending transactions to be committed implicitly\&.
.sp
To dump large tables, you should combine this option with
-\fB\-\-quick\fR.
-.TP 3n
-\(bu
+\fB\-\-quick\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: skip-comments option
+.\" skip-comments option: mysqldump
\fB\-\-skip\-comments\fR
.sp
See the description for the
\fB\-\-comments\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: skip-opt option
+.\" skip-opt option: mysqldump
\fB\-\-skip\-opt\fR
.sp
See the description for the
\fB\-\-opt\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: socket option
+.\" socket option: mysqldump
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: SSL options
+.\" SSL options: mysqldump
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: tab option
+.\" tab option: mysqldump
\fB\-\-tab=\fR\fB\fIpath\fR\fR,
\fB\-T \fR\fB\fIpath\fR\fR
.sp
-Produce tab\-separated data files. For each dumped table,
+Produce tab\-separated data files\&. For each dumped table,
\fBmysqldump\fR
creates a
-\fI\fItbl_name\fR\fR\fI.sql\fR
+\fItbl_name\fR\&.sql
file that contains the
CREATE TABLE
statement that creates the table, and a
-\fI\fItbl_name\fR\fR\fI.txt\fR
-file that contains its data. The option value is the directory in which to write the files.
+\fItbl_name\fR\&.txt
+file that contains its data\&. The option value is the directory in which to write the files\&.
.sp
By default, the
-\fI.txt\fR
-data files are formatted using tab characters between column values and a newline at the end of each line. The format can be specified explicitly using the
+\&.txt
+data files are formatted using tab characters between column values and a newline at the end of each line\&. The format can be specified explicitly using the
\fB\-\-fields\-\fR\fB\fIxxx\fR\fR
and
\fB\-\-lines\-terminated\-by\fR
-options.
+options\&.
.sp
Column values are dumped using the
binary
character set and the
\fB\-\-default\-character\-set\fR
-option is ignored. In effect, there is no character set conversion. If a table contains columns in several character sets, the output data file will as well and you may not be able to reload the file correctly.
+option is ignored\&. In effect, there is no character set conversion\&. If a table contains columns in several character sets, the output data file will as well and you may not be able to reload the file correctly\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
This option should be used only when
\fBmysqldump\fR
is run on the same machine as the
\fBmysqld\fR
-server. You must have the
+server\&. You must have the
FILE
-privilege, and the server must have permission to write files in the directory that you specify.
-.TP 3n
-\(bu
+privilege, and the server must have permission to write files in the directory that you specify\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: tables option
+.\" tables option: mysqldump
\fB\-\-tables\fR
.sp
Override the
\fB\-\-databases\fR
or
\fB\-B\fR
-option.
+option\&.
\fBmysqldump\fR
-regards all name arguments following the option as table names.
-.TP 3n
-\(bu
+regards all name arguments following the option as table names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: triggers option
+.\" triggers option: mysqldump
\fB\-\-triggers\fR
.sp
-Dump triggers for each dumped table. This option is enabled by default; disable it with
-\fB\-\-skip\-triggers\fR.
-.TP 3n
-\(bu
+Dump triggers for each dumped table\&. This option is enabled by default; disable it with
+\fB\-\-skip\-triggers\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: tz-utc option
+.\" tz-utc option: mysqldump
\fB\-\-tz\-utc\fR
.sp
This option enables
TIMESTAMP
-columns to be dumped and reloaded between servers in different time zones.
+columns to be dumped and reloaded between servers in different time zones\&.
\fBmysqldump\fR
sets its connection time zone to UTC and adds
-SET TIME_ZONE='+00:00'
-to the dump file. Without this option,
+SET TIME_ZONE=\'+00:00\'
+to the dump file\&. Without this option,
TIMESTAMP
-columns are dumped and reloaded in the time zones local to the source and destination servers, which can cause the values to change.
+columns are dumped and reloaded in the time zones local to the source and destination servers, which can cause the values to change\&.
\fB\-\-tz\-utc\fR
-also protects against changes due to daylight saving time.
+also protects against changes due to daylight saving time\&.
\fB\-\-tz\-utc\fR
-is enabled by default. To disable it, use
-\fB\-\-skip\-tz\-utc\fR. This option was added in MySQL 5.1.2.
-.TP 3n
-\(bu
+is enabled by default\&. To disable it, use
+\fB\-\-skip\-tz\-utc\fR\&. This option was added in MySQL 5\&.1\&.2\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: user option
+.\" user option: mysqldump
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: verbose option
+.\" verbose option: mysqldump
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: version option
+.\" version option: mysqldump
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
-\fB\-\-where='\fR\fB\fIwhere_condition\fR\fR\fB'\fR,
-\fB\-w '\fR\fB\fIwhere_condition\fR\fR\fB'\fR
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: where option
+.\" where option: mysqldump
+\fB\-\-where=\'\fR\fB\fIwhere_condition\fR\fR\fB\'\fR,
+\fB\-w \'\fR\fB\fIwhere_condition\fR\fR\fB\'\fR
.sp
Dump only rows selected by the given
WHERE
-condition. Quotes around the condition are mandatory if it contains spaces or other characters that are special to your command interpreter.
+condition\&. Quotes around the condition are mandatory if it contains spaces or other characters that are special to your command interpreter\&.
.sp
Examples:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-\-\-where="user='jimf'"
+\-\-where="user=\'jimf\'"
\-w"userid>1"
\-w"userid<1"
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: xml option
+.\" xml option: mysqldump
\fB\-\-xml\fR,
\fB\-X\fR
.sp
-Write dump output as well\-formed XML.
+Write dump output as well\-formed XML\&.
.sp
-\fBNULL\fR\fB, \fR\fB'NULL'\fR\fB, and Empty Values\fR: For some column named
+\fBNULL\fR\fB, \fR\fB\'NULL\'\fR\fB, and Empty Values\fR: For some column named
\fIcolumn_name\fR, the
NULL
value, an empty string, and the string value
-\'NULL'
-are distinguished from one another in the output generated by this option as follows.
+\'NULL\'
+are distinguished from one another in the output generated by this option as follows\&.
.TS
allbox tab(:);
l l
@@ -1029,39 +1865,38 @@ T}
T{
NULL (\fIunknown value\fR)
T}:T{
-<field name="\fIcolumn_name\fR"
- xsi:nil="true" />
+<field name="\fIcolumn_name\fR" xsi:nil="true" />
T}
T{
-\'' (\fIempty string\fR)
+\'\' (\fIempty string\fR)
T}:T{
-<field
- name="\fIcolumn_name\fR"></field>
+<field name="\fIcolumn_name\fR"></field>
T}
T{
-\'NULL' (\fIstring value\fR)
+\'NULL\' (\fIstring value\fR)
T}:T{
-<field
- name="\fIcolumn_name\fR">NULL</field>
+<field name="\fIcolumn_name\fR">NULL</field>
T}
.TE
-.sp
-Beginning with MySQL 5.1.12, the output from the
+.sp 1
+Beginning with MySQL 5\&.1\&.12, the output from the
\fBmysql\fR
client when run using the
\fB\-\-xml\fR
-option also follows these rules. (See
-the section called \(lq\fBMYSQL\fR OPTIONS\(rq.)
+option also follows these rules\&. (See
+the section called \(lqMYSQL OPTIONS\(rq\&.)
.sp
-Beginning with MySQL 5.1.18, XML output from
+Beginning with MySQL 5\&.1\&.18, XML output from
\fBmysqldump\fR
includes the XML namespace, as shown here:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump \-\-xml \-u root world City\fR
-<?xml version="1.0"?>
-<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema\-instance">
+<?xml version="1\&.0"?>
+<mysqldump xmlns:xsi="http://www\&.w3\&.org/2001/XMLSchema\-instance">
<database name="world">
<table_structure name="City">
<field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
@@ -1083,7 +1918,7 @@ e_time="2007\-03\-31 01:47:02" Collation
<field name="District">Kabol</field>
<field name="Population">1780000</field>
</row>
-\fI...\fR
+\fI\&.\&.\&.\fR
<row>
<field name="ID">4079</field>
<field name="Name">Rafah</field>
@@ -1095,88 +1930,127 @@ e_time="2007\-03\-31 01:47:02" Collation
</database>
</mysqldump>
.fi
+.if n \{\
.RE
-.sp
+.\}
.sp
.RE
.PP
You can also set the following variables by using
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
syntax:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
max_allowed_packet
.sp
-The maximum size of the buffer for client/server communication. The maximum is 1GB.
-.TP 3n
-\(bu
+The maximum size of the buffer for client/server communication\&. The maximum is 1GB\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
net_buffer_length
.sp
-The initial size of the buffer for client/server communication. When creating multiple\-row\-insert statements (as with option
+The initial size of the buffer for client/server communication\&. When creating multiple\-row\-insert statements (as with option
\fB\-\-extended\-insert\fR
or
\fB\-\-opt\fR),
\fBmysqldump\fR
creates rows up to
net_buffer_length
-length. If you increase this variable, you should also ensure that the
+length\&. If you increase this variable, you should also ensure that the
net_buffer_length
-variable in the MySQL server is at least this large.
-.sp
+variable in the MySQL server is at least this large\&.
.RE
.PP
The most common use of
\fBmysqldump\fR
is probably for making a backup of an entire database:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \fR\fB\fIdb_name\fR\fR\fB > \fR\fB\fIbackup\-file.sql\fR\fR
+shell> \fBmysqldump \fR\fB\fIdb_name\fR\fR\fB > \fR\fB\fIbackup\-file\&.sql\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
You can read the dump file back into the server like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fIbackup\-file.sql\fR\fR
+shell> \fBmysql \fR\fB\fIdb_name\fR\fR\fB < \fR\fB\fIbackup\-file\&.sql\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Or like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-e "source \fR\fB\fI/path\-to\-backup/backup\-file.sql\fR\fR\fB" \fR\fB\fIdb_name\fR\fR
+shell> \fBmysql \-e "source \fR\fB\fI/path\-to\-backup/backup\-file\&.sql\fR\fR\fB" \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqldump\fR
is also very useful for populating databases by copying data from one MySQL server to another:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump \-\-opt \fR\fB\fIdb_name\fR\fR\fB | mysql \-\-host=\fR\fB\fIremote_host\fR\fR\fB \-C \fR\fB\fIdb_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
It is possible to dump several databases with one command:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB ...] > my_databases.sql\fR
+shell> \fBmysqldump \-\-databases \fR\fB\fIdb_name1\fR\fR\fB [\fR\fB\fIdb_name2\fR\fR\fB \&.\&.\&.] > my_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
To dump all databases, use the
\fB\-\-all\-databases\fR
option:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \-\-all\-databases > all_databases.sql\fR
+shell> \fBmysqldump \-\-all\-databases > all_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For
InnoDB
@@ -1184,36 +2058,48 @@ tables,
\fBmysqldump\fR
provides a way of making an online backup:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \-\-all\-databases \-\-single\-transaction > all_databases.sql\fR
+shell> \fBmysqldump \-\-all\-databases \-\-single\-transaction > all_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
This backup acquires a global read lock on all tables (using
-FLUSH TABLES WITH READ LOCK) at the beginning of the dump. As soon as this lock has been acquired, the binary log coordinates are read and the lock is released. If long updating statements are running when the
+FLUSH TABLES WITH READ LOCK) at the beginning of the dump\&. As soon as this lock has been acquired, the binary log coordinates are read and the lock is released\&. If long updating statements are running when the
FLUSH
-statement is issued, the MySQL server may get stalled until those statements finish. After that, the dump becomes lock\-free and does not disturb reads and writes on the tables. If the update statements that the MySQL server receives are short (in terms of execution time), the initial lock period should not be noticeable, even with many updates.
+statement is issued, the MySQL server may get stalled until those statements finish\&. After that, the dump becomes lock\-free and does not disturb reads and writes on the tables\&. If the update statements that the MySQL server receives are short (in terms of execution time), the initial lock period should not be noticeable, even with many updates\&.
.PP
For point\-in\-time recovery (also known as
\(lqroll\-forward,\(rq
when you need to restore an old backup and replay the changes that happened since that backup), it is often useful to rotate the binary log (see
-Section\ 5.2.4, \(lqThe Binary Log\(rq) or at least know the binary log coordinates to which the dump corresponds:
+Section\ \&5.2.4, \(lqThe Binary Log\(rq) or at least know the binary log coordinates to which the dump corresponds:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldump \-\-all\-databases \-\-master\-data=2 > all_databases.sql\fR
+shell> \fBmysqldump \-\-all\-databases \-\-master\-data=2 > all_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Or:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldump \-\-all\-databases \-\-flush\-logs \-\-master\-data=2\fR
- \fB> all_databases.sql\fR
+ \fB> all_databases\&.sql\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fB\-\-master\-data\fR
@@ -1221,30 +2107,37 @@ and
\fB\-\-single\-transaction\fR
options can be used simultaneously, which provides a convenient way to make an online backup suitable for point\-in\-time recovery if tables are stored using the
InnoDB
-storage engine.
+storage engine\&.
.PP
For more information on making backups, see
-Section\ 6.1, \(lqDatabase Backups\(rq, and
-Section\ 6.2, \(lqExample Backup and Recovery Strategy\(rq.
+Section\ \&6.1, \(lqDatabase Backups\(rq, and
+Section\ \&6.2, \(lqExample Backup and Recovery Strategy\(rq\&.
+.\" mysqldump: views
+.\" mysqldump: problems
+.\" mysqldump: workarounds
.PP
-If you encounter problems backing up views, please read the section that covers restrictions on views which describes a workaround for backing up views when this fails due to insufficient privileges. See
-Section\ D.4, \(lqRestrictions on Views\(rq.
+If you encounter problems backing up views, please read the section that covers restrictions on views which describes a workaround for backing up views when this fails due to insufficient privileges\&. See
+Section\ \&D.4, \(lqRestrictions on Views\(rq\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ Bug#30123
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#30123
+.RS 4
\%http://bugs.mysql.com/30123
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqldumpslow.1'
--- a/man/mysqldumpslow.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqldumpslow.1 2009-09-16 12:03:18 +0000
@@ -1,176 +1,325 @@
+'\" t
.\" Title: \fBmysqldumpslow\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLDUMPSLOW\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLDUMPSLOW\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqldumpslow
.SH "NAME"
mysqldumpslow \- Summarize slow query log files
.SH "SYNOPSIS"
-.HP 39
-\fBmysqldumpslow [\fR\fBoptions\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB ...]\fR
+.HP \w'\fBmysqldumpslow\ [\fR\fBoptions\fR\fB]\ [\fR\fB\fIlog_file\fR\fR\fB\ \&.\&.\&.]\fR\ 'u
+\fBmysqldumpslow [\fR\fBoptions\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB \&.\&.\&.]\fR
.SH "DESCRIPTION"
.PP
The MySQL slow query log contains information about queries that take a long time to execute (see
-Section\ 5.2.5, \(lqThe Slow Query Log\(rq).
+Section\ \&5.2.5, \(lqThe Slow Query Log\(rq)\&.
\fBmysqldumpslow\fR
-parses MySQL slow query log files and prints a summary of their contents.
+parses MySQL slow query log files and prints a summary of their contents\&.
.PP
Normally,
\fBmysqldumpslow\fR
-groups queries that are similar except for the particular values of number and string data values. It
+groups queries that are similar except for the particular values of number and string data values\&. It
\(lqabstracts\(rq
these values to
N
and
-\'S'
-when displaying summary output. The
+\'S\'
+when displaying summary output\&. The
\fB\-a\fR
and
\fB\-n\fR
-options can be used to modify value abstracting behavior.
+options can be used to modify value abstracting behavior\&.
.PP
Invoke
\fBmysqldumpslow\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqldumpslow [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB ...]\fR
+shell> \fBmysqldumpslow [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIlog_file\fR\fR\fB \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqldumpslow\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldumpslow: help option
+.\" help option: mysqldumpslow
\fB\-\-help\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-a\fR
.sp
Do not abstract all numbers to
N
and strings to
-\'S'.
-.TP 3n
-\(bu
+\'S\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldumpslow: debug option
+.\" debug option: mysqldumpslow
\fB\-\-debug\fR,
\fB\-d\fR
.sp
-Run in debug mode.
-.TP 3n
-\(bu
+Run in debug mode\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-g \fR\fB\fIpattern\fR\fR
.sp
-Consider only queries that match the (\fBgrep\fR\-style) pattern.
-.TP 3n
-\(bu
+Consider only queries that match the (\fBgrep\fR\-style) pattern\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
Host name of MySQL server for
-\fI*\-slow.log\fR
-file name. The value can contain a wildcare. The default is
+*\-slow\&.log
+file name\&. The value can contain a wildcare\&. The default is
*
-(match all).
-.TP 3n
-\(bu
+(match all)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-i \fR\fB\fIname\fR\fR
.sp
Name of server instance (if using
-\fBmysql.server\fR
-startup script).
-.TP 3n
-\(bu
+\fBmysql\&.server\fR
+startup script)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-l\fR
.sp
-Do not subtract lock time from total time.
-.TP 3n
-\(bu
+Do not subtract lock time from total time\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-n \fR\fB\fIN\fR\fR
.sp
Abstract numbers with at least
\fIN\fR
-digits within names.
-.TP 3n
-\(bu
+digits within names\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-r\fR
.sp
-Reverse the sort order.
-.TP 3n
-\(bu
+Reverse the sort order\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-s \fR\fB\fIsort_type\fR\fR
.sp
-How to sort the output. The value of
+How to sort the output\&. The value of
\fIsort_type\fR
should be chosen from the following list:
-.RS 3n
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
t,
at: Sort by query time or average query time
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
l,
al: Sort by lock time or average lock time
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
s,
-as: Sort by rows sent or average rows went
-.TP 3n
-\(bu
+as: Sort by rows sent or average rows sent
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
c: Sort by count
.RE
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-t \fR\fB\fIN\fR\fR
.sp
Display only the first
\fIN\fR
-queries in the output.
-.TP 3n
-\(bu
+queries in the output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldumpslow: verbose option
+.\" verbose option: mysqldumpslow
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.sp
+Verbose mode\&. Print more information about what the program does\&.
.RE
.PP
Example of usage:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqldumpslow\fR
-Reading mysql slow query log from /usr/local/mysql/data/mysqld51\-apple\-slow.log
-Count: 1 Time=4.32s (4s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
+Reading mysql slow query log from /usr/local/mysql/data/mysqld51\-apple\-slow\&.log
+Count: 1 Time=4\&.32s (4s) Lock=0\&.00s (0s) Rows=0\&.0 (0), root[root]@localhost
insert into t2 select * from t1
-Count: 3 Time=2.53s (7s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
+Count: 3 Time=2\&.53s (7s) Lock=0\&.00s (0s) Rows=0\&.0 (0), root[root]@localhost
insert into t2 select * from t1 limit N
-Count: 3 Time=2.13s (6s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
+Count: 3 Time=2\&.13s (6s) Lock=0\&.00s (0s) Rows=0\&.0 (0), root[root]@localhost
insert into t1 select * from t1
.fi
+.if n \{\
.RE
+.\}
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlhotcopy.1'
--- a/man/mysqlhotcopy.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlhotcopy.1 2009-09-16 12:03:18 +0000
@@ -1,219 +1,476 @@
+'\" t
.\" Title: \fBmysqlhotcopy\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLHOTCOPY\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLHOTCOPY\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlhotcopy
+.\" dumping: databases and tables
+.\" backups: databases and tables
+.\" databases: dumping
+.\" tables: dumping
.SH "NAME"
mysqlhotcopy \- a database backup program
.SH "SYNOPSIS"
-.HP 23
+.HP \w'\fBmysqlhotcopy\ \fR\fB\fIarguments\fR\fR\ 'u
\fBmysqlhotcopy \fR\fB\fIarguments\fR\fR
.SH "DESCRIPTION"
.PP
\fBmysqlhotcopy\fR
-is a Perl script that was originally written and contributed by Tim Bunce. It uses
+is a Perl script that was originally written and contributed by Tim Bunce\&. It uses
LOCK TABLES,
FLUSH TABLES, and
cp
or
scp
-to make a database backup quickly. It is the fastest way to make a backup of the database or single tables, but it can be run only on the same machine where the database directories are located.
+to make a database backup quickly\&. It is the fastest way to make a backup of the database or single tables, but it can be run only on the same machine where the database directories are located\&.
\fBmysqlhotcopy\fR
works only for backing up
MyISAM
and
ARCHIVE
-tables. It runs on Unix and NetWare.
+tables\&. It runs on Unix and NetWare\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fI/path/to/new_directory\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlhotcopy \fR\fB\fIdb_name_1\fR\fR\fB ... \fR\fB\fIdb_name_n\fR\fR\fB \fR\fB\fI/path/to/new_directory\fR\fR
+shell> \fBmysqlhotcopy \fR\fB\fIdb_name_1\fR\fR\fB \&.\&.\&. \fR\fB\fIdb_name_n\fR\fR\fB \fR\fB\fI/path/to/new_directory\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Back up tables in the given database that match a regular expression:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB./\fR\fB\fIregex\fR\fR\fB/\fR
+shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB\&./\fR\fB\fIregex\fR\fR\fB/\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The regular expression for the table name can be negated by prefixing it with a tilde (\(lq~\(rq):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB./~\fR\fB\fIregex\fR\fR\fB/\fR
+shell> \fBmysqlhotcopy \fR\fB\fIdb_name\fR\fR\fB\&./~\fR\fB\fIregex\fR\fR\fB/\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqlhotcopy\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: help option
+.\" help option: mysqlhotcopy
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: addtodest option
+.\" addtodest option: mysqlhotcopy
\fB\-\-addtodest\fR
.sp
-Do not rename target directory (if it exists); merely add files to it.
-.TP 3n
-\(bu
+Do not rename target directory (if it exists); merely add files to it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: allowold option
+.\" allowold option: mysqlhotcopy
\fB\-\-allowold\fR
.sp
Do not abort if a target exists; rename it by adding an
_old
-suffix.
-.TP 3n
-\(bu
-\fB\-\-checkpoint=\fR\fB\fIdb_name\fR\fR\fB.\fR\fB\fItbl_name\fR\fR
+suffix\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: checkpoint option
+.\" checkpoint option: mysqlhotcopy
+\fB\-\-checkpoint=\fR\fB\fIdb_name\fR\fR\fB\&.\fR\fB\fItbl_name\fR\fR
.sp
Insert checkpoint entries into the specified database
\fIdb_name\fR
and table
-\fItbl_name\fR.
-.TP 3n
-\(bu
+\fItbl_name\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: chroot option
+.\" chroot option: mysqlhotcopy
\fB\-\-chroot=\fR\fB\fIpath\fR\fR
.sp
Base directory of the
\fBchroot\fR
jail in which
\fBmysqld\fR
-operates. The
+operates\&. The
\fIpath\fR
value should match that of the
\fB\-\-chroot\fR
option given to
-\fBmysqld\fR.
-.TP 3n
-\(bu
+\fBmysqld\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: debug option
+.\" debug option: mysqlhotcopy
\fB\-\-debug\fR
.sp
-Enable debug output.
-.TP 3n
-\(bu
+Enable debug output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: dryrun option
+.\" dryrun option: mysqlhotcopy
\fB\-\-dryrun\fR,
\fB\-n\fR
.sp
-Report actions without performing them.
-.TP 3n
-\(bu
+Report actions without performing them\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: flushlog option
+.\" flushlog option: mysqlhotcopy
\fB\-\-flushlog\fR
.sp
-Flush logs after all tables are locked.
-.TP 3n
-\(bu
+Flush logs after all tables are locked\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: host option
+.\" host option: mysqlhotcopy
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-The host name of the local host to use for making a TCP/IP connection to the local server. By default, the connection is made to
+The host name of the local host to use for making a TCP/IP connection to the local server\&. By default, the connection is made to
localhost
-using a Unix socket file.
-.TP 3n
-\(bu
+using a Unix socket file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: keepold option
+.\" keepold option: mysqlhotcopy
\fB\-\-keepold\fR
.sp
-Do not delete previous (renamed) target when done.
-.TP 3n
-\(bu
+Do not delete previous (renamed) target when done\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: method option
+.\" method option: mysqlhotcopy
\fB\-\-method=\fR\fB\fIcommand\fR\fR
.sp
The method for copying files (cp
or
-scp).
-.TP 3n
-\(bu
+scp)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: noindices option
+.\" noindices option: mysqlhotcopy
\fB\-\-noindices\fR
.sp
-Do not include full index files in the backup. This makes the backup smaller and faster. The indexes for reloaded tables can be reconstructed later with
-\fBmyisamchk \-rq\fR.
-.TP 3n
-\(bu
+Do not include full index files in the backup\&. This makes the backup smaller and faster\&. The indexes for reloaded tables can be reconstructed later with
+\fBmyisamchk \-rq\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: password option
+.\" password option: mysqlhotcopy
\fB\-\-password=\fR\fB\fIpassword\fR\fR,
\fB\-p\fR\fB\fIpassword\fR\fR
.sp
-The password to use when connecting to the server. Note that the password value is not optional for this option, unlike for other MySQL programs. You can use an option file to avoid giving the password on the command line.
+The password to use when connecting to the server\&. Note that the password value is not optional for this option, unlike for other MySQL programs\&. You can use an option file to avoid giving the password on the command line\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: port option
+.\" port option: mysqlhotcopy
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use when connecting to the local server.
-.TP 3n
-\(bu
+The TCP/IP port number to use when connecting to the local server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: quiet option
+.\" quiet option: mysqlhotcopy
\fB\-\-quiet\fR,
\fB\-q\fR
.sp
-Be silent except for errors.
-.TP 3n
-\(bu
-\fB\-\-record_log_pos=\fR\fB\fIdb_name\fR\fR\fB.\fR\fB\fItbl_name\fR\fR
+Be silent except for errors\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: record_log_pos option
+.\" record_log_pos option: mysqlhotcopy
+\fB\-\-record_log_pos=\fR\fB\fIdb_name\fR\fR\fB\&.\fR\fB\fItbl_name\fR\fR
.sp
Record master and slave status in the specified database
\fIdb_name\fR
and table
-\fItbl_name\fR.
-.TP 3n
-\(bu
+\fItbl_name\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: regexp option
+.\" regexp option: mysqlhotcopy
\fB\-\-regexp=\fR\fB\fIexpr\fR\fR
.sp
-Copy all databases with names that match the given regular expression.
-.TP 3n
-\(bu
+Copy all databases with names that match the given regular expression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: resetmaster option
+.\" resetmaster option: mysqlhotcopy
\fB\-\-resetmaster\fR
.sp
-Reset the binary log after locking all the tables.
-.TP 3n
-\(bu
+Reset the binary log after locking all the tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: resetslave option
+.\" resetslave option: mysqlhotcopy
\fB\-\-resetslave\fR
.sp
Reset the
-\fImaster.info\fR
-file after locking all the tables.
-.TP 3n
-\(bu
+master\&.info
+file after locking all the tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: socket option
+.\" socket option: mysqlhotcopy
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
-The Unix socket file to use for the connection.
-.TP 3n
-\(bu
+The Unix socket file to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: suffix option
+.\" suffix option: mysqlhotcopy
\fB\-\-suffix=\fR\fB\fIstr\fR\fR
.sp
-The suffix for names of copied databases.
-.TP 3n
-\(bu
+The suffix for names of copied databases\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: tmpdir option
+.\" tmpdir option: mysqlhotcopy
\fB\-\-tmpdir=\fR\fB\fIpath\fR\fR
.sp
-The temporary directory. The default is
-\fI/tmp\fR.
-.TP 3n
-\(bu
+The temporary directory\&. The default is
+/tmp\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlhotcopy: user option
+.\" user option: mysqlhotcopy
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.sp
+The MySQL user name to use when connecting to the server\&.
.RE
.PP
\fBmysqlhotcopy\fR
@@ -221,7 +478,7 @@ reads the
[client]
and
[mysqlhotcopy]
-option groups from option files.
+option groups from option files\&.
.PP
To execute
\fBmysqlhotcopy\fR, you must have access to the files for the tables that you are backing up, the
@@ -231,7 +488,7 @@ RELOAD
privilege (to be able to execute
FLUSH TABLES), and the
LOCK TABLES
-privilege (to be able to lock the tables).
+privilege (to be able to lock the tables)\&.
.PP
Use
perldoc
@@ -243,23 +500,29 @@ and
\fB\-\-record_log_pos\fR
options:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBperldoc mysqlhotcopy\fR
.fi
+.if n \{\
.RE
+.\}
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlimport.1'
--- a/man/mysqlimport.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlimport.1 2009-09-16 12:03:18 +0000
@@ -1,220 +1,474 @@
+'\" t
.\" Title: \fBmysqlimport\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLIMPORT\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLIMPORT\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlimport
+.\" importing: data
+.\" data: importing
+.\" files: text
+.\" text files: importing
.SH "NAME"
mysqlimport \- a data import program
.SH "SYNOPSIS"
-.HP 44
-\fBmysqlimport [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB \fR\fB\fItextfile1\fR\fR\fB ...\fR
+.HP \w'\fBmysqlimport\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIdb_name\fR\fR\fB\ \fR\fB\fItextfile1\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBmysqlimport [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB \fR\fB\fItextfile1\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqlimport\fR
client provides a command\-line interface to the
LOAD DATA INFILE
-SQL statement. Most options to
+SQL statement\&. Most options to
\fBmysqlimport\fR
correspond directly to clauses of
LOAD DATA INFILE
-syntax. See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
+syntax\&. See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
.PP
Invoke
\fBmysqlimport\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlimport [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB \fR\fB\fItextfile1\fR\fR\fB [\fR\fB\fItextfile2\fR\fR\fB ...]\fR
+shell> \fBmysqlimport [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIdb_name\fR\fR\fB \fR\fB\fItextfile1\fR\fR\fB [\fR\fB\fItextfile2\fR\fR\fB \&.\&.\&.]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
For each text file named on the command line,
\fBmysqlimport\fR
-strips any extension from the file name and uses the result to determine the name of the table into which to import the file's contents. For example, files named
-\fIpatient.txt\fR,
-\fIpatient.text\fR, and
-\fIpatient\fR
+strips any extension from the file name and uses the result to determine the name of the table into which to import the file\'s contents\&. For example, files named
+patient\&.txt,
+patient\&.text, and
+patient
all would be imported into a table named
-patient.
+patient\&.
.PP
\fBmysqlimport\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: help option
+.\" help option: mysqlimport
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: character-sets-dir option
+.\" character-sets-dir option: mysqlimport
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: columns option
+.\" columns option: mysqlimport
\fB\-\-columns=\fR\fB\fIcolumn_list\fR\fR,
\fB\-c \fR\fB\fIcolumn_list\fR\fR
.sp
-This option takes a comma\-separated list of column names as its value. The order of the column names indicates how to match data file columns with table columns.
-.TP 3n
-\(bu
+This option takes a comma\-separated list of column names as its value\&. The order of the column names indicates how to match data file columns with table columns\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: compress option
+.\" compress option: mysqlimport
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: debug option
+.\" debug option: mysqlimport
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: debug-check option
+.\" debug-check option: mysqlimport
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: debug-info option
+.\" debug-info option: mysqlimport
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: default-character-set option
+.\" default-character-set option: mysqlimport
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: delete option
+.\" delete option: mysqlimport
\fB\-\-delete\fR,
\fB\-D\fR
.sp
-Empty the table before importing the text file.
-.TP 3n
-\(bu
-\fB\-\-fields\-terminated\-by=...\fR,
-\fB\-\-fields\-enclosed\-by=...\fR,
-\fB\-\-fields\-optionally\-enclosed\-by=...\fR,
-\fB\-\-fields\-escaped\-by=...\fR
+Empty the table before importing the text file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: fields-terminated-by option
+.\" fields-terminated-by option: mysqldump
+\fB\-\-fields\-terminated\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-enclosed-by option
+.\" fields-enclosed-by option: mysqldump
+\fB\-\-fields\-enclosed\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-optionally-enclosed-by option
+.\" fields-optionally-enclosed-by option: mysqldump
+\fB\-\-fields\-optionally\-enclosed\-by=\&.\&.\&.\fR,
+.\" mysqldump: fields-escaped-by option
+.\" fields-escaped-by option: mysqldump
+\fB\-\-fields\-escaped\-by=\&.\&.\&.\fR
.sp
These options have the same meaning as the corresponding clauses for
-LOAD DATA INFILE. See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
-.TP 3n
-\(bu
+LOAD DATA INFILE\&. See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: force option
+.\" force option: mysqlimport
\fB\-\-force\fR,
\fB\-f\fR
.sp
-Ignore errors. For example, if a table for a text file does not exist, continue processing any remaining files. Without
+Ignore errors\&. For example, if a table for a text file does not exist, continue processing any remaining files\&. Without
\fB\-\-force\fR,
\fBmysqlimport\fR
-exits if a table does not exist.
-.TP 3n
-\(bu
+exits if a table does not exist\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: host option
+.\" host option: mysqlimport
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Import data to the MySQL server on the given host. The default host is
-localhost.
-.TP 3n
-\(bu
+Import data to the MySQL server on the given host\&. The default host is
+localhost\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: ignore option
+.\" ignore option: mysqlimport
\fB\-\-ignore\fR,
\fB\-i\fR
.sp
See the description for the
\fB\-\-replace\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: ignore-lines option
+.\" ignore-lines option: mysqlimport
\fB\-\-ignore\-lines=\fR\fB\fIN\fR\fR
.sp
Ignore the first
\fIN\fR
-lines of the data file.
-.TP 3n
-\(bu
-\fB\-\-lines\-terminated\-by=...\fR
+lines of the data file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqldump: lines-terminated-by option
+.\" lines-terminated-by option: mysqldump
+\fB\-\-lines\-terminated\-by=\&.\&.\&.\fR
.sp
This option has the same meaning as the corresponding clause for
-LOAD DATA INFILE. For example, to import Windows files that have lines terminated with carriage return/linefeed pairs, use
-\fB\-\-lines\-terminated\-by="\\r\\n"\fR. (You might have to double the backslashes, depending on the escaping conventions of your command interpreter.) See
-Section\ 12.2.6, \(lqLOAD DATA INFILE Syntax\(rq.
-.TP 3n
-\(bu
+LOAD DATA INFILE\&. For example, to import Windows files that have lines terminated with carriage return/linefeed pairs, use
+\fB\-\-lines\-terminated\-by="\er\en"\fR\&. (You might have to double the backslashes, depending on the escaping conventions of your command interpreter\&.) See
+Section\ \&12.2.6, \(lqLOAD DATA INFILE Syntax\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: local option
+.\" local option: mysqlimport
\fB\-\-local\fR,
\fB\-L\fR
.sp
-Read input files locally from the client host.
-.TP 3n
-\(bu
+Read input files locally from the client host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: lock-tables option
+.\" lock-tables option: mysqlimport
\fB\-\-lock\-tables\fR,
\fB\-l\fR
.sp
Lock
\fIall\fR
-tables for writing before processing any text files. This ensures that all tables are synchronized on the server.
-.TP 3n
-\(bu
+tables for writing before processing any text files\&. This ensures that all tables are synchronized on the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: low-priority option
+.\" low-priority option: mysqlimport
\fB\-\-low\-priority\fR
.sp
Use
LOW_PRIORITY
-when loading the table. This affects only storage engines that use only table\-level locking (MyISAM,
+when loading the table\&. This affects only storage engines that use only table\-level locking (MyISAM,
MEMORY,
-MERGE).
-.TP 3n
-\(bu
+MERGE)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: password option
+.\" password option: mysqlimport
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: pipe option
+.\" pipe option: mysqlimport
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: port option
+.\" port option: mysqlimport
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: protocol option
+.\" protocol option: mysqlimport
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: replace option
+.\" replace option: mysqlimport
\fB\-\-replace\fR,
\fB\-r\fR
.sp
@@ -222,79 +476,150 @@ The
\fB\-\-replace\fR
and
\fB\-\-ignore\fR
-options control handling of input rows that duplicate existing rows on unique key values. If you specify
-\fB\-\-replace\fR, new rows replace existing rows that have the same unique key value. If you specify
-\fB\-\-ignore\fR, input rows that duplicate an existing row on a unique key value are skipped. If you do not specify either option, an error occurs when a duplicate key value is found, and the rest of the text file is ignored.
-.TP 3n
-\(bu
+options control handling of input rows that duplicate existing rows on unique key values\&. If you specify
+\fB\-\-replace\fR, new rows replace existing rows that have the same unique key value\&. If you specify
+\fB\-\-ignore\fR, input rows that duplicate an existing row on a unique key value are skipped\&. If you do not specify either option, an error occurs when a duplicate key value is found, and the rest of the text file is ignored\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: silent option
+.\" silent option: mysqlimport
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Produce output only when errors occur.
-.TP 3n
-\(bu
+Silent mode\&. Produce output only when errors occur\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: socket option
+.\" socket option: mysqlimport
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: SSL options
+.\" SSL options: mysqlimport
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: user option
+.\" user option: mysqlimport
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: use-threads option
+.\" use-threads option: mysqlimport
\fB\-\-use\-threads=\fR\fB\fIN\fR\fR
.sp
Load files in parallel using
\fIN\fR
-threads. This option was added in MySQL 5.1.7.
-.TP 3n
-\(bu
+threads\&. This option was added in MySQL 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: verbose option
+.\" verbose option: mysqlimport
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlimport: version option
+.\" version option: mysqlimport
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.sp
+Display version information and exit\&.
.RE
.PP
Here is a sample session that demonstrates use of
\fBmysqlimport\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test\fR
+shell> \fBmysql \-e \'CREATE TABLE imptest(id INT, n VARCHAR(30))\' test\fR
shell> \fBed\fR
a
100 Max Sydow
101 Count Dracula
-.
-w imptest.txt
+\&.
+w imptest\&.txt
32
q
-shell> \fBod \-c imptest.txt\fR
-0000000 1 0 0 \\t M a x S y d o w \\n 1 0
-0000020 1 \\t C o u n t D r a c u l a \\n
+shell> \fBod \-c imptest\&.txt\fR
+0000000 1 0 0 \et M a x S y d o w \en 1 0
+0000020 1 \et C o u n t D r a c u l a \en
0000040
-shell> \fBmysqlimport \-\-local test imptest.txt\fR
-test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
-shell> \fBmysql \-e 'SELECT * FROM imptest' test\fR
+shell> \fBmysqlimport \-\-local test imptest\&.txt\fR
+test\&.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
+shell> \fBmysql \-e \'SELECT * FROM imptest\' test\fR
+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
| id | n |
+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
@@ -302,19 +627,23 @@ shell> \fBmysql \-e 'SELECT * FROM impte
| 101 | Count Dracula |
+\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
.RE
+.\}
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlmanager.8'
--- a/man/mysqlmanager.8 2009-05-25 09:59:47 +0000
+++ b/man/mysqlmanager.8 2009-09-16 12:03:18 +0000
@@ -1,366 +1,751 @@
+'\" t
.\" Title: \fBmysqlmanager\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLMANAGER\fR" "8" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLMANAGER\FR" "8" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlmanager
+.\" MySQL Instance Manager
.SH "NAME"
mysqlmanager \- the MySQL Instance Manager
.SH "SYNOPSIS"
-.HP 23
+.HP \w'\fBmysqlmanager\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysqlmanager [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
\fBmysqlmanager\fR
-is the MySQL Instance Manager (IM). This program monitors and manages MySQL Database Server instances. MySQL Instance Manager is available for Unix\-like operating systems, as well as Windows. It runs as a daemon that listens on a TCP/IP port. On Unix, it also listens on a Unix socket file.
+is the MySQL Instance Manager (IM)\&. This program monitors and manages MySQL Database Server instances\&. MySQL Instance Manager is available for Unix\-like operating systems, as well as Windows\&. It runs as a daemon that listens on a TCP/IP port\&. On Unix, it also listens on a Unix socket file\&.
.PP
MySQL Instance Manager can be used in place of the
mysqld_safe
-script to start and stop one or more instances of MySQL Server. Because Instance Manager can manage multiple server instances, it can also be used in place of the
+script to start and stop one or more instances of MySQL Server\&. Because Instance Manager can manage multiple server instances, it can also be used in place of the
\fBmysqld_multi\fR
-script. Instance Manager offers these capabilities:
-.TP 3n
-\(bu
-Instance Manager can start and stop instances, and report on the status of instances.
-.TP 3n
-\(bu
+script\&. Instance Manager offers these capabilities:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager can start and stop instances, and report on the status of instances\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Server instances can be treated as guarded or unguarded:
-.RS 3n
-.TP 3n
-\(bu
-When Instance Manager starts, it starts each guarded instance. If the instance crashes, Instance Manager detects this and restarts it. When Instance Manager stops, it stops the instance.
-.TP 3n
-\(bu
-A nonguarded instance is not started when Instance Manager starts or monitored by it. If the instance crashes after being started, Instance Manager does not restart it. When Instance Manager exits, it does not stop the instance if it is running.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+When Instance Manager starts, it starts each guarded instance\&. If the instance crashes, Instance Manager detects this and restarts it\&. When Instance Manager stops, it stops the instance\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+A nonguarded instance is not started when Instance Manager starts or monitored by it\&. If the instance crashes after being started, Instance Manager does not restart it\&. When Instance Manager exits, it does not stop the instance if it is running\&.
.RE
-.IP "" 3n
-Instances are guarded by default. An instance can be designated as nonguarded by including the
+.RS 4
+Instances are guarded by default\&. An instance can be designated as nonguarded by including the
\fBnonguarded\fR
-option in the configuration file.
-.TP 3n
-\(bu
-Instance Manager provides an interactive interface for configuring instances, so that the need to edit the configuration file manually is reduced or eliminated.
-.TP 3n
-\(bu
-Instance Manager provides remote instance management. That is, it runs on the host where you want to control MySQL Server instances, but you can connect to it from a remote host to perform instance\-management operations.
+option in the configuration file\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager provides an interactive interface for configuring instances, so that the need to edit the configuration file manually is reduced or eliminated\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager provides remote instance management\&. That is, it runs on the host where you want to control MySQL Server instances, but you can connect to it from a remote host to perform instance\-management operations\&.
.RE
.PP
-The following sections describe MySQL Instance Manager operation in more detail.
+The following sections describe MySQL Instance Manager operation in more detail\&.
.SH "MYSQL INSTANCE MANAGER COMMAND OPTIONS"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-The MySQL Instance Manager supports a number of command options. For a brief listing, invoke
+The MySQL Instance Manager supports a number of command options\&. For a brief listing, invoke
\fBmysqlmanager\fR
with the
\fB\-\-help\fR
-option. Options may be given on the command line or in the Instance Manager configuration file. On Windows, the standard configuration file is
-\fImy.ini\fR
-in the directory where Instance Manager is installed. On Unix, the standard file is
-\fI/etc/my.cnf\fR. To specify a different configuration file, start Instance Manager with the
+option\&. Options may be given on the command line or in the Instance Manager configuration file\&. On Windows, the standard configuration file is
+my\&.ini
+in the directory where Instance Manager is installed\&. On Unix, the standard file is
+/etc/my\&.cnf\&. To specify a different configuration file, start Instance Manager with the
\fB\-\-defaults\-file\fR
-option.
+option\&.
.PP
\fBmysqlmanager\fR
-supports the options described in the following list. The options for managing entries in the password file are described further in
-the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq.
-.TP 3n
-\(bu
+supports the options described in the following list\&. The options for managing entries in the password file are described further in
+the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: help option
+.\" help option: mysqlmanager
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: add-user option
+.\" add-user option: mysqlmanager
\fB\-\-add\-user\fR
.sp
Add a new user (specified with the
\fB\-\-username\fR
-option) to the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+option) to the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: angel-pid-file option
+.\" angel-pid-file option: mysqlmanager
\fB\-\-angel\-pid\-file=\fR\fB\fIfile_name\fR\fR
.sp
The file in which the angel process records its process ID when
\fBmysqlmanager\fR
runs in daemon mode (that is, when the
\fB\-\-run\-as\-service\fR
-option is given). The default file name is
-\fImysqlmanager.angel.pid\fR.
+option is given)\&. The default file name is
+mysqlmanager\&.angel\&.pid\&.
.sp
If the
\fB\-\-angel\-pid\-file\fR
option is not given, the default angel PID file has the same name as the PID file except that any PID file extension is replaced with an extension of
-\fI.angel.pid\fR. (For example,
-\fImysqlmanager.pid\fR
+\&.angel\&.pid\&. (For example,
+mysqlmanager\&.pid
becomes
-\fImysqlmanager.angel.pid\fR.)
+mysqlmanager\&.angel\&.pid\&.)
.sp
-This option was added in MySQL 5.1.11.
-.TP 3n
-\(bu
+This option was added in MySQL 5\&.1\&.11\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: bind-address option
+.\" bind-address option: mysqlmanager
\fB\-\-bind\-address=\fR\fB\fIIP\fR\fR
.sp
-The IP address to bind to.
-.TP 3n
-\(bu
+The IP address to bind to\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: check-password-file option
+.\" check-password-file option: mysqlmanager
\fB\-\-check\-password\-file\fR
.sp
-Check the validity and consistency of the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+Check the validity and consistency of the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: clean-password-file option
+.\" clean-password-file option: mysqlmanager
\fB\-\-clean\-password\-file\fR
.sp
-Drop all users from the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+Drop all users from the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: debug option
+.\" debug option: mysqlmanager
\fB\-\-debug=\fR\fB\fIdebug_options\fR\fR\fB, \-# \fR\fB\fIdebug_options\fR\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'. This option was added in MySQL 5.1.10.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. This option was added in MySQL 5\&.1\&.10\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: default-mysqld-path option
+.\" default-mysqld-path option: mysqlmanager
\fB\-\-default\-mysqld\-path=\fR\fB\fIpath\fR\fR
.sp
-The path name of the MySQL Server binary. This path name is used for all server instance sections in the configuration file for which no
+The path name of the MySQL Server binary\&. This path name is used for all server instance sections in the configuration file for which no
\fBmysqld\-path\fR
-option is present. The default value of this option is the compiled\-in path name, which depends on how the MySQL distribution was configured. Example:
+option is present\&. The default value of this option is the compiled\-in path name, which depends on how the MySQL distribution was configured\&. Example:
\fB\-\-default\-mysqld\-path=/usr/sbin/mysqld\fR
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: defaults-file option
+.\" defaults-file option: mysqlmanager
\fB\-\-defaults\-file=\fR\fB\fIfile_name\fR\fR
.sp
-Read Instance Manager and MySQL Server settings from the given file. All configuration changes made by the Instance Manager will be written to this file. This must be the first option on the command line if it is used, and the file must exist.
+Read Instance Manager and MySQL Server settings from the given file\&. All configuration changes made by the Instance Manager will be written to this file\&. This must be the first option on the command line if it is used, and the file must exist\&.
.sp
-If this option is not given, Instance Manager uses its standard configuration file. On Windows, the standard file is
-\fImy.ini\fR
-in the directory where Instance Manager is installed. On Unix, the standard file is
-\fI/etc/my.cnf\fR.
-.TP 3n
-\(bu
+If this option is not given, Instance Manager uses its standard configuration file\&. On Windows, the standard file is
+my\&.ini
+in the directory where Instance Manager is installed\&. On Unix, the standard file is
+/etc/my\&.cnf\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: drop-user option
+.\" drop-user option: mysqlmanager
\fB\-\-drop\-user\fR
.sp
Drop a user (specified with the
\fB\-\-username\fR
-option) from the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+option) from the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: edit-user option
+.\" edit-user option: mysqlmanager
\fB\-\-edit\-user\fR
.sp
Change an entry for an existing user (specified with the
\fB\-\-username\fR
-option) in the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+option) in the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: install option
+.\" install option: mysqlmanager
\fB\-\-install\fR
.sp
-On Windows, install Instance Manager as a Windows service. The service name is
-MySQL Manager.
-.TP 3n
-\(bu
+On Windows, install Instance Manager as a Windows service\&. The service name is
+MySQL Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: list-users option
+.\" list-users option: mysqlmanager
\fB\-\-list\-users\fR
.sp
-List the users in the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+List the users in the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: log option
+.\" log option: mysqlmanager
\fB\-\-log=\fR\fB\fIfile_name\fR\fR
.sp
-The path to the Instance Manager log file. This option has no effect unless the
+The path to the Instance Manager log file\&. This option has no effect unless the
\fB\-\-run\-as\-service\fR
-option is also given. If the file name specified for the option is a relative name, the log file is created under the directory from which Instance Manager is started. To ensure that the file is created in a specific directory, specify it as a full path name.
+option is also given\&. If the file name specified for the option is a relative name, the log file is created under the directory from which Instance Manager is started\&. To ensure that the file is created in a specific directory, specify it as a full path name\&.
.sp
If
\fB\-\-run\-as\-service\fR
is given without
\fB\-\-log\fR, the log file is
-\fImysqlmanager.log\fR
-in the data directory.
+mysqlmanager\&.log
+in the data directory\&.
.sp
If
\fB\-\-run\-as\-service\fR
-is not given, log messages go to the standard output. To capture log output, you can redirect Instance Manager output to a file:
+is not given, log messages go to the standard output\&. To capture log output, you can redirect Instance Manager output to a file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlmanager > im.log
+mysqlmanager > im\&.log
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: monitoring-interval option
+.\" monitoring-interval option: mysqlmanager
\fB\-\-monitoring\-interval=\fR\fB\fIseconds\fR\fR
.sp
-The interval in seconds for monitoring server instances. The default value is 20 seconds. Instance Manager tries to connect to each monitored (guarded) instance using the non\-existing
+The interval in seconds for monitoring server instances\&. The default value is 20 seconds\&. Instance Manager tries to connect to each monitored (guarded) instance using the nonexisting
MySQL_Instance_Manager
-user account to check whether it is alive/not hanging. If the result of the connection attempt indicates that the instance is unavailable, Instance Manager performs several attempts to restart the instance.
+user account to check whether it is alive/not hanging\&. If the result of the connection attempt indicates that the instance is unavailable, Instance Manager performs several attempts to restart the instance\&.
.sp
Normally, the
MySQL_Instance_Manager
account does not exist, so the connection attempts by Instance Manager cause the monitored instance to produce messages in its general query log similar to the following:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-Access denied for user 'MySQL_Instance_M'@'localhost' \(Fc
+Access denied for user \'MySQL_Instance_M\'@\'localhost\' \(Fc
(using password: YES)
.fi
+.if n \{\
.RE
-.sp
+.\}
.sp
The
nonguarded
-option in the appropriate server instance section disables monitoring for a particular instance. If the instance dies after being started, Instance Manager will not restart it. Instance Manager tries to connect to a nonguarded instance only when you request the instance's status (for example, with the
+option in the appropriate server instance section disables monitoring for a particular instance\&. If the instance dies after being started, Instance Manager will not restart it\&. Instance Manager tries to connect to a nonguarded instance only when you request the instance\'s status (for example, with the
SHOW INSTANCES
-status.
+status\&.
.sp
See
-the section called \(lqMYSQL SERVER INSTANCE STATUS MONITORING\(rq, for more information.
-.TP 3n
-\(bu
+the section called \(lqMYSQL SERVER INSTANCE STATUS MONITORING\(rq, for more information\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: mysqld-safe-compatible option
+.\" mysqld-safe-compatible option: mysqlmanager
\fB\-\-mysqld\-safe\-compatible\fR
.sp
Run in a
-\fBmysqld_safe\fR\-compatible manner. For details, see
-the section called \(lqSTARTING THE MYSQL SERVER WITH MYSQL INSTANCE MANAGER\(rq. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+\fBmysqld_safe\fR\-compatible manner\&. For details, see
+the section called \(lqSTARTING THE MYSQL SERVER WITH MYSQL INSTANCE MANAGER\(rq\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: password option
+.\" password option: mysqlmanager
\fB\-\-password=\fR\fB\fIpassword\fR\fR,
\fB\-p \fR\fB\fIpassword\fR\fR
.sp
-Specify the password for an entry to be added to or modified in the password file. Unlike the
+Specify the password for an entry to be added to or modified in the password file\&. Unlike the
\fB\-\-password\fR/\fB\-P\fR
-option for most MySQL programs, the password value is required, not optional. See also
-the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+option for most MySQL programs, the password value is required, not optional\&. See also
+the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: password-file option
+.\" password-file option: mysqlmanager
\fB\-\-password\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The name of the file where the Instance Manager looks for users and passwords. On Windows, the default is
-\fImysqlmanager.passwd\fR
-in the directory where Instance Manager is installed. On Unix, the default file is
-\fI/etc/mysqlmanager.passwd\fR. See also
-the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq.
-.TP 3n
-\(bu
+The name of the file where the Instance Manager looks for users and passwords\&. On Windows, the default is
+mysqlmanager\&.passwd
+in the directory where Instance Manager is installed\&. On Unix, the default file is
+/etc/mysqlmanager\&.passwd\&. See also
+the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: pid-file option
+.\" pid-file option: mysqlmanager
\fB\-\-pid\-file=\fR\fB\fIfile_name\fR\fR
.sp
-The process ID file to use. On Windows, the default file is
-\fImysqlmanager.pid\fR
-in the directory where Instance Manager is installed. On Unix, the default is
-\fImysqlmanager.pid\fR
-in the data directory.
-.TP 3n
-\(bu
+The process ID file to use\&. On Windows, the default file is
+mysqlmanager\&.pid
+in the directory where Instance Manager is installed\&. On Unix, the default is
+mysqlmanager\&.pid
+in the data directory\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: port option
+.\" port option: mysqlmanager
\fB\-\-port=\fR\fB\fIport_num\fR\fR
.sp
-The port number to use when listening for TCP/IP connections from clients. The default port number (assigned by IANA) is 2273.
-.TP 3n
-\(bu
+The port number to use when listening for TCP/IP connections from clients\&. The default port number (assigned by IANA) is 2273\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: print-defaults option
+.\" print-defaults option: mysqlmanager
\fB\-\-print\-defaults\fR
.sp
-Print the current defaults and exit. This must be the first option on the command line if it is used.
-.TP 3n
-\(bu
+Print the current defaults and exit\&. This must be the first option on the command line if it is used\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: print-password-line option
+.\" print-password-line option: mysqlmanager
\fB\-\-print\-password\-line\fR
.sp
-Prepare an entry for the password file, print it to the standard output, and exit. You can redirect the output from Instance Manager to a file to save the entry in the file.
+Prepare an entry for the password file, print it to the standard output, and exit\&. You can redirect the output from Instance Manager to a file to save the entry in the file\&.
+.sp
+Prior to MySQL 5\&.1\&.12, this option was named
+\fB\-\-passwd\fR\&.
+.RE
.sp
-Prior to MySQL 5.1.12, this option was named
-\fB\-\-passwd\fR.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: remove option
+.\" remove option: mysqlmanager
\fB\-\-remove\fR
.sp
-On Windows, removes Instance Manager as a Windows service. This assumes that Instance Manager has been run with
+On Windows, removes Instance Manager as a Windows service\&. This assumes that Instance Manager has been run with
\fB\-\-install\fR
-previously.
-.TP 3n
-\(bu
+previously\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: run-as-service option
+.\" run-as-service option: mysqlmanager
\fB\-\-run\-as\-service\fR
.sp
-On Unix, daemonize and start an angel process. The angel process monitors Instance Manager and restarts it if it crashes. (The angel process itself is simple and unlikely to crash.)
-.TP 3n
-\(bu
+On Unix, daemonize and start an angel process\&. The angel process monitors Instance Manager and restarts it if it crashes\&. (The angel process itself is simple and unlikely to crash\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: socket option
+.\" socket option: mysqlmanager
\fB\-\-socket=\fR\fB\fIpath\fR\fR
.sp
-On Unix, the socket file to use for incoming connections. The default file is named
-\fI/tmp/mysqlmanager.sock\fR. This option has no meaning on Windows.
-.TP 3n
-\(bu
+On Unix, the socket file to use for incoming connections\&. The default file is named
+/tmp/mysqlmanager\&.sock\&. This option has no meaning on Windows\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: standalone option
+.\" standalone option: mysqlmanager
\fB\-\-standalone\fR
.sp
-This option is used on Windows to run Instance Manager in standalone mode. You should specify it when you start Instance Manager from the command line.
-.TP 3n
-\(bu
+This option is used on Windows to run Instance Manager in standalone mode\&. You should specify it when you start Instance Manager from the command line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: user option
+.\" user option: mysqlmanager
\fB\-\-user=\fR\fB\fIuser_name\fR\fR
.sp
On Unix, the user name of the system account to use for starting and running
-\fBmysqlmanager\fR. This option generates a warning and has no effect unless you start
+\fBmysqlmanager\fR\&. This option generates a warning and has no effect unless you start
\fBmysqlmanager\fR
as
root
-(so that it can change its effective user ID), or as the named user. It is recommended that you configure
+(so that it can change its effective user ID), or as the named user\&. It is recommended that you configure
\fBmysqlmanager\fR
to run using the same account used to run the
\fBmysqld\fR
-server. (\(lqUser\(rq
-in this context refers to a system login account, not a MySQL user listed in the grant tables.)
-.TP 3n
-\(bu
+server\&. (\(lqUser\(rq
+in this context refers to a system login account, not a MySQL user listed in the grant tables\&.)
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: username option
+.\" username option: mysqlmanager
\fB\-\-username=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-Specify the user name for an entry to be added to or modified in the password file. This option was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+Specify the user name for an entry to be added to or modified in the password file\&. This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: version option
+.\" version option: mysqlmanager
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlmanager: wait-timeout option
+.\" wait-timeout option: mysqlmanager
\fB\-\-wait\-timeout=\fR\fB\fIN\fR\fR
.sp
-The number of seconds to wait for activity on an incoming connection before closing it. The default is 28800 seconds (8 hours).
+The number of seconds to wait for activity on an incoming connection before closing it\&. The default is 28800 seconds (8 hours)\&.
.sp
-This option was added in MySQL 5.1.7. Before that, the timeout is 30 seconds and cannot be changed.
+This option was added in MySQL 5\&.1\&.7\&. Before that, the timeout is 30 seconds and cannot be changed\&.
+.RE
.SH "MYSQL INSTANCE MANAGER CONFIGURATION FILES"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
Instance Manager uses its standard configuration file unless it is started with a
\fB\-\-defaults\-file\fR
-option that specifies a different file. On Windows, the standard file is
-\fImy.ini\fR
-in the directory where Instance Manager is installed. On Unix, the standard file is
-\fI/etc/my.cnf\fR.
+option that specifies a different file\&. On Windows, the standard file is
+my\&.ini
+in the directory where Instance Manager is installed\&. On Unix, the standard file is
+/etc/my\&.cnf\&.
.PP
Instance Manager reads options for itself from the
[manager]
@@ -368,74 +753,110 @@ section of the configuration file, and o
[mysqld]
or
[mysqld\fIN\fR]
-sections. The
+sections\&. The
[manager]
section contains any of the options listed in
-the section called \(lqMYSQL INSTANCE MANAGER COMMAND OPTIONS\(rq, except for those specified as having to be given as the first option on the command line. Here is a sample
+the section called \(lqMYSQL INSTANCE MANAGER COMMAND OPTIONS\(rq, except for those specified as having to be given as the first option on the command line\&. Here is a sample
[manager]
section:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
# MySQL Instance Manager options section
[manager]
default\-mysqld\-path = /usr/local/mysql/libexec/mysqld
-socket=/tmp/manager.sock
-pid\-file=/tmp/manager.pid
-password\-file = /home/cps/.mysqlmanager.passwd
+socket=/tmp/manager\&.sock
+pid\-file=/tmp/manager\&.pid
+password\-file = /home/cps/\&.mysqlmanager\&.passwd
monitoring\-interval = 2
port = 1999
-bind\-address = 192.168.1.5
+bind\-address = 192\&.168\&.1\&.5
.fi
+.if n \{\
.RE
+.\}
.PP
Each
[mysqld]
or
[mysqld\fIN\fR]
-instance section specifies options given by Instance Manager to a server instance at startup. These are mainly common MySQL Server options (see
-Section\ 5.1.2, \(lqServer Command Options\(rq). In addition, a
+instance section specifies options given by Instance Manager to a server instance at startup\&. These are mainly common MySQL Server options (see
+Section\ \&5.1.2, \(lqServer Command Options\(rq)\&. In addition, a
[mysqld\fIN\fR]
-section can contain the options in the following list, which are specific to Instance Manager. These options are interpreted by Instance Manager itself; it does not pass them to the server when it attempts to start that server.
+section can contain the options in the following list, which are specific to Instance Manager\&. These options are interpreted by Instance Manager itself; it does not pass them to the server when it attempts to start that server\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBWarning\fR
+.ps -1
+.br
.PP
The Instance Manager\-specific options must not be used in a
[mysqld]
-section. If a server is started without using Instance Manager, it will not recognize these options and will fail to start properly.
-.TP 3n
-\(bu
+section\&. If a server is started without using Instance Manager, it will not recognize these options and will fail to start properly\&.
+.sp .5v
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
mysqld\-path = \fIpath\fR
.sp
The path name of the
\fBmysqld\fR
-server binary to use for the server instance.
-.TP 3n
-\(bu
+server binary to use for the server instance\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
nonguarded
.sp
-This option disables Instance Manager monitoring functionality for the server instance. By default, an instance is guarded: At Instance Manager start time, it starts the instance. It also monitors the instance status and attempts to restart it if it fails. At Instance Manager exit time, it stops the instance. None of these things happen for nonguarded instances.
-.TP 3n
-\(bu
+This option disables Instance Manager monitoring functionality for the server instance\&. By default, an instance is guarded: At Instance Manager start time, it starts the instance\&. It also monitors the instance status and attempts to restart it if it fails\&. At Instance Manager exit time, it stops the instance\&. None of these things happen for nonguarded instances\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
shutdown\-delay = \fIseconds\fR
.sp
-The number of seconds Instance Manager should wait for the server instance to shut down. The default value is 35 seconds. After the delay expires, Instance Manager assumes that the instance is hanging and attempts to terminate it. If you use
+The number of seconds Instance Manager should wait for the server instance to shut down\&. The default value is 35 seconds\&. After the delay expires, Instance Manager assumes that the instance is hanging and attempts to terminate it\&. If you use
InnoDB
-with large tables, you should increase this value.
-.sp
+with large tables, you should increase this value\&.
.RE
.PP
Here are some sample instance sections:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld1]
mysqld\-path=/usr/local/mysql/libexec/mysqld
-socket=/tmp/mysql.sock
+socket=/tmp/mysql\&.sock
port=3307
server_id=1
skip\-stack\-trace
@@ -448,367 +869,575 @@ log\-slow\-queries
nonguarded
port=3308
server_id=2
-mysqld\-path= /home/cps/mysql/trees/mysql\-5.1/sql/mysqld
-socket = /tmp/mysql.sock5
-pid\-file = /tmp/hostname.pid5
+mysqld\-path= /home/cps/mysql/trees/mysql\-5\&.1/sql/mysqld
+socket = /tmp/mysql\&.sock5
+pid\-file = /tmp/hostname\&.pid5
datadir= /home/cps/mysql_data/data_dir1
-language=/home/cps/mysql/trees/mysql\-5.1/sql/share/english
+language=/home/cps/mysql/trees/mysql\-5\&.1/sql/share/english
log\-bin
-log=/tmp/fordel.log
+log=/tmp/fordel\&.log
.fi
+.if n \{\
.RE
+.\}
.SH "STARTING THE MYSQL SERVER WITH MYSQL INSTANCE MANAGER"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-This section discusses how Instance Manager starts server instances when it starts. However, before you start Instance Manager, you should set up a password file for it. Otherwise, you will not be able to connect to Instance Manager to control it after it starts. For details about creating Instance Manager accounts, see
-the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq.
+This section discusses how Instance Manager starts server instances when it starts\&. However, before you start Instance Manager, you should set up a password file for it\&. Otherwise, you will not be able to connect to Instance Manager to control it after it starts\&. For details about creating Instance Manager accounts, see
+the section called \(lqINSTANCE MANAGER USER AND PASSWORD MANAGEMENT\(rq\&.
.PP
On Unix, the
\fBmysqld\fR
MySQL database server normally is started with the
-\fBmysql.server\fR
+\fBmysql\&.server\fR
script, which usually resides in the
-/etc/init.d/
-folder. That script invokes the
+/etc/init\&.d/
+folder\&. That script invokes the
\fBmysqld_safe\fR
-script by default. However, you can use Instance Manager instead if you modify the
-\fI/etc/my.cnf\fR
+script by default\&. However, you can use Instance Manager instead if you modify the
+/etc/my\&.cnf
configuration file by adding
use\-manager
to the
-[mysql.server]
+[mysql\&.server]
section:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-[mysql.server]
+[mysql\&.server]
use\-manager
.fi
+.if n \{\
.RE
+.\}
.PP
-Before MySQL 5.1.12, Instance Manager always tries to start at least one server instance: When it starts, it reads its configuration file if it exists to find server instance sections and prepare a list of instances. Instance sections have names of the form
+Before MySQL 5\&.1\&.12, Instance Manager always tries to start at least one server instance: When it starts, it reads its configuration file if it exists to find server instance sections and prepare a list of instances\&. Instance sections have names of the form
[mysqld]
or
[mysqld\fIN\fR], where
\fIN\fR
is an unsigned integer (for example,
[mysqld1],
-[mysqld2], and so forth).
+[mysqld2], and so forth)\&.
.PP
-After preparing the list of instances, Instance Manager starts the guarded instances in the list. If there are no instances, Instance Manager creates an instance named
+After preparing the list of instances, Instance Manager starts the guarded instances in the list\&. If there are no instances, Instance Manager creates an instance named
mysqld
-and attempts to start it with default (compiled\-in) configuration values. This means that the Instance Manager cannot find the
+and attempts to start it with default (compiled\-in) configuration values\&. This means that the Instance Manager cannot find the
\fBmysqld\fR
-program if it is not installed in the default location. (Section\ 2.1.5, \(lqInstallation Layouts\(rq, describes default locations for components of MySQL distributions.) If you have installed the MySQL server in a non\-standard location, you should create the Instance Manager configuration file.
+program if it is not installed in the default location\&. (Section\ \&2.1.5, \(lqInstallation Layouts\(rq, describes default locations for components of MySQL distributions\&.) If you have installed the MySQL server in a nonstandard location, you should create the Instance Manager configuration file\&.
.PP
The startup behavior just described is similar to that of
-\fBmysqld_safe\fR, which always attempts to start a server. However, it lacks the flexibility required for some operations because it is not possible to run Instance Manager in such a way that it refrains from starting any server instances. For example, you cannot invoke Instance Manager for the purpose of configuring an instance without also starting it (a task that a MySQL installer application might want to perform). Consequently, MySQL 5.1.12 introduces the following changes:
-.TP 3n
-\(bu
+\fBmysqld_safe\fR, which always attempts to start a server\&. However, it lacks the flexibility required for some operations because it is not possible to run Instance Manager in such a way that it refrains from starting any server instances\&. For example, you cannot invoke Instance Manager for the purpose of configuring an instance without also starting it (a task that a MySQL installer application might want to perform)\&. Consequently, MySQL 5\&.1\&.12 introduces the following changes:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
A new option,
-\fB\-\-mysqld\-safe\-compatible\fR, may be used to cause Instance Manager to run with startup behavior similar to that used before MySQL 5.1.12: If Instance Manager finds a
+\fB\-\-mysqld\-safe\-compatible\fR, may be used to cause Instance Manager to run with startup behavior similar to that used before MySQL 5\&.1\&.12: If Instance Manager finds a
[mysqld]
-instance section in the configuration file, it will start it. If Instance Manager finds no
+instance section in the configuration file, it will start it\&. If Instance Manager finds no
[mysqld]
section, it creates one using default configuration values, writes a
[mysqld]
section to the configuration file if it is accessible, and starts the
mysqld
-instance. Instance Manager also starts any other guarded instances listed in the configuration file.
-.TP 3n
-\(bu
-Without
-\fB\-\-mysqld\-safe\-compatible\fR, Instance Manager reads its configuration file if it exists and starts instances for any guarded instance sections that it finds. If there are none, it starts no instances.
+instance\&. Instance Manager also starts any other guarded instances listed in the configuration file\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Without
+\fB\-\-mysqld\-safe\-compatible\fR, Instance Manager reads its configuration file if it exists and starts instances for any guarded instance sections that it finds\&. If there are none, it starts no instances\&.
.RE
.PP
-Instance Manager also stops all guarded server instances when it shuts down.
+Instance Manager also stops all guarded server instances when it shuts down\&.
.PP
The allowable options for
[mysqld\fIN\fR]
server instance sections are described in
-the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq. In these sections, you can use a special
+the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq\&. In these sections, you can use a special
\fBmysqld\-path=\fR\fB\fIpath\-to\-mysqld\-binary\fR\fR
-option that is recognized only by Instance Manager. Use this option to let Instance Manager know where the
+option that is recognized only by Instance Manager\&. Use this option to let Instance Manager know where the
\fBmysqld\fR
-binary resides. If there are multiple instances, it may also be necessary to set other options such as
+binary resides\&. If there are multiple instances, it may also be necessary to set other options such as
\fBdatadir\fR
and
-\fBport\fR, to ensure that each instance has a different data directory and TCP/IP port number.
-Section\ 5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq, discusses the configuration values that must differ for each instance when you run multiple instance on the same machine.
+\fBport\fR, to ensure that each instance has a different data directory and TCP/IP port number\&.
+Section\ \&5.6, \(lqRunning Multiple MySQL Servers on the Same Machine\(rq, discusses the configuration values that must differ for each instance when you run multiple instance on the same machine\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBWarning\fR
+.ps -1
+.br
.PP
The
[mysqld]
-instance section, if it exists, must not contain any Instance Manager\-specific options.
+instance section, if it exists, must not contain any Instance Manager\-specific options\&.
+.sp .5v
+.RE
.PP
The typical Unix startup/shutdown cycle for a MySQL server with the MySQL Instance Manager enabled is as follows:
-.TP 3n
-1.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
The
-\fB/etc/init.d/mysql\fR
-script starts MySQL Instance Manager.
-.TP 3n
-2.
-Instance Manager starts the guarded server instances and monitors them.
-.TP 3n
-3.
-If a server instance fails, Instance Manager restarts it.
-.TP 3n
-4.
+\fB/etc/init\&.d/mysql\fR
+script starts MySQL Instance Manager\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+Instance Manager starts the guarded server instances and monitors them\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
+If a server instance fails, Instance Manager restarts it\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 4.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 4." 4.2
+.\}
If Instance Manager is shut down (for example, with the
-\fB/etc/init.d/mysql stop\fR
-command), it shuts down all server instances.
+\fB/etc/init\&.d/mysql stop\fR
+command), it shuts down all server instances\&.
+.RE
.SH "INSTANCE MANAGER USER AND PASSWORD MANAGEMENT"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-The Instance Manager stores its user information in a password file. On Windows, the default is
-\fImysqlmanager.passwd\fR
-in the directory where Instance Manager is installed. On Unix, the default file is
-\fI/etc/mysqlmanager.passwd\fR. To specify a different location for the password file, use the
+The Instance Manager stores its user information in a password file\&. On Windows, the default is
+mysqlmanager\&.passwd
+in the directory where Instance Manager is installed\&. On Unix, the default file is
+/etc/mysqlmanager\&.passwd\&. To specify a different location for the password file, use the
\fB\-\-password\-file\fR
-option.
+option\&.
.PP
-If the password file does not exist or contains no password entries, you cannot connect to the Instance Manager.
+If the password file does not exist or contains no password entries, you cannot connect to the Instance Manager\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-Any Instance Manager process that is running to monitor server instances does not notice changes to the password file. You must stop it and restart it after making password entry changes.
+Any Instance Manager process that is running to monitor server instances does not notice changes to the password file\&. You must stop it and restart it after making password entry changes\&.
+.sp .5v
+.RE
.PP
Entries in the password file have the following format, where the two fields are the account user name and encrypted password, separated by a colon:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
petr:*35110DC9B4D8140F5DE667E28C72DD2597B5C848
.fi
+.if n \{\
.RE
+.\}
.PP
-Instance Manager password encryption is the same as that used by MySQL Server. It is a one\-way operation; no means are provided for decrypting encrypted passwords.
+Instance Manager password encryption is the same as that used by MySQL Server\&. It is a one\-way operation; no means are provided for decrypting encrypted passwords\&.
.PP
Instance Manager accounts differ somewhat from MySQL Server accounts:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
MySQL Server accounts are associated with a host name, user name, and password (see
-Section\ 5.5.1, \(lqUser Names and Passwords\(rq).
-.TP 3n
-\(bu
-Instance Manager accounts are associated with a user name and password only.
+Section\ \&5.5.1, \(lqUser Names and Passwords\(rq)\&.
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager accounts are associated with a user name and password only\&.
.RE
.PP
-This means that a client can connect to Instance Manager with a given user name from any host. To limit connections so that clients can connect only from the local host, start Instance Manager with the
-\fB\-\-bind\-address=127.0.0.1\fR
-option so that it listens only to the local network interface. Remote clients will not be able to connect. Local clients can connect like this:
+This means that a client can connect to Instance Manager with a given user name from any host\&. To limit connections so that clients can connect only from the local host, start Instance Manager with the
+\fB\-\-bind\-address=127\&.0\&.0\&.1\fR
+option so that it listens only to the local network interface\&. Remote clients will not be able to connect\&. Local clients can connect like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-h 127.0.0.1 \-P 2273\fR
+shell> \fBmysql \-h 127\&.0\&.0\&.1 \-P 2273\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Before MySQL 5.1.12, the only option for creating password file entries is
-\fB\-\-passwd\fR, which causes Instance Manager to prompt for user name and password values and display the resulting entry. You can save the output in the
-\fI/etc/mysqlmanager.passwd\fR
-password file to store it. Here is an example:
+Before MySQL 5\&.1\&.12, the only option for creating password file entries is
+\fB\-\-passwd\fR, which causes Instance Manager to prompt for user name and password values and display the resulting entry\&. You can save the output in the
+/etc/mysqlmanager\&.passwd
+password file to store it\&. Here is an example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysqlmanager \-\-passwd >> /etc/mysqlmanager.passwd\fR
-Creating record for new user.
+shell> \fBmysqlmanager \-\-passwd >> /etc/mysqlmanager\&.passwd\fR
+Creating record for new user\&.
Enter user name: \fBmike\fR
Enter password: \fBmikepass\fR
Re\-type password: \fBmikepass\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-At the prompts, enter the user name and password for the new Instance Manager user. You must enter the password twice. It does not echo to the screen, so double entry guards against entering a different password than you intend (if the two passwords do not match, no entry is generated).
+At the prompts, enter the user name and password for the new Instance Manager user\&. You must enter the password twice\&. It does not echo to the screen, so double entry guards against entering a different password than you intend (if the two passwords do not match, no entry is generated)\&.
.PP
The preceding command causes the following line to be added to
-\fI/etc/mysqlmanager.passwd\fR:
+/etc/mysqlmanager\&.passwd:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mike:*BBF1F551DD9DD96A01E66EC7DDC073911BAD17BA
.fi
+.if n \{\
.RE
+.\}
.PP
Use of the
\fB\-\-password\fR
option fails if
\fBmysqlmanager\fR
-is invoked directly from an IBM 5250 terminal. To work around this, use a command like the following from the command line to generate the password entry:
+is invoked directly from an IBM 5250 terminal\&. To work around this, use a command like the following from the command line to generate the password entry:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell< \fBmysql \-B \-\-skip\-column\-name \\\fR
- \fB\-e 'SELECT CONCAT("\fR\fB\fIuser_name\fR\fR\fB",":",PASSWORD("\fR\fB\fIpass_val\fR\fR\fB"));'\fR
+shell> \fBmysql \-B \-\-skip\-column\-name \e\fR
+ \fB\-e \'SELECT CONCAT("\fR\fB\fIuser_name\fR\fR\fB",":",PASSWORD("\fR\fB\fIpass_val\fR\fR\fB"));\'\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The output from the command can be used an entry in the
-\fI/etc/mysqlmanager.passwd\fR
-file.
+/etc/mysqlmanager\&.passwd
+file\&.
.PP
-Beginning with MySQL 5.1.12, the
+Beginning with MySQL 5\&.1\&.12, the
\fB\-\-passwd\fR
option is renamed to
\fB\-\-print\-password\-line\fR
-and there are several other options for managing user accounts from the command line. For example, the
+and there are several other options for managing user accounts from the command line\&. For example, the
\fB\-\-username\fR
and
\fB\-\-password\fR
-options are available on the command line for specifying the user name and password for an account entry. You can use them to generate an entry with no prompting like this (type the command on a single line):
+options are available on the command line for specifying the user name and password for an account entry\&. You can use them to generate an entry with no prompting like this (type the command on a single line):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlmanager \-\-print\-password\-line\fR
- \fB\-\-username=mike \-\-password=mikepass >> /etc/mysqlmanager.passwd\fR
+ \fB\-\-username=mike \-\-password=mikepass >> /etc/mysqlmanager\&.passwd\fR
.fi
+.if n \{\
.RE
+.\}
.PP
If you omit the
\fB\-\-username\fR
or
\fB\-\-password\fR
-option, Instance Manager prompts for the required value.
+option, Instance Manager prompts for the required value\&.
.PP
\fB\-\-print\-password\-line\fR
-causes Instance Manager to send the resulting account entry to its output, which you can append to the password file. The following list describes other account\-management options that cause Instance Manager to operate directly on the password file. (These options make Instance Manager scriptable for account\-management purposes.) For operations on the password file to succeed, the file must exist and it must be accessible by Instance Manager. (The exception is
-\fB\-\-clean\-password\-file\fR, which creates the file if it does not exist. Alternatively, if there is no password file, manually create it as an empty file and ensure that its ownership and access modes allow it to be read and written by Instance Manager.) The default password file is used unless you specify a
+causes Instance Manager to send the resulting account entry to its output, which you can append to the password file\&. The following list describes other account\-management options that cause Instance Manager to operate directly on the password file\&. (These options make Instance Manager scriptable for account\-management purposes\&.) For operations on the password file to succeed, the file must exist and it must be accessible by Instance Manager\&. (The exception is
+\fB\-\-clean\-password\-file\fR, which creates the file if it does not exist\&. Alternatively, if there is no password file, manually create it as an empty file and ensure that its ownership and access modes allow it to be read and written by Instance Manager\&.) The default password file is used unless you specify a
\fB\-\-password\-file\fR
-option.
+option\&.
.PP
-To ensure consistent treatment of the password file, it should be owned by the system account that you use for running Instance Manager to manage server instances, and you should invoke it from that account when you use it to manage accounts in the password file.
-.TP 3n
-\(bu
+To ensure consistent treatment of the password file, it should be owned by the system account that you use for running Instance Manager to manage server instances, and you should invoke it from that account when you use it to manage accounts in the password file\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Create a new user:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-add\-user \-\-username=\fIuser_name\fR [\-\-password=\fIpassword\fR]
.fi
+.if n \{\
.RE
-This command adds a new entry with the given user name and password to the password file. The
+.\}
+.sp
+This command adds a new entry with the given user name and password to the password file\&. The
\fB\-\-username\fR
(or
-\fB\-u\fR) option is required.
+\fB\-u\fR) option is required\&.
\fBmysqlmanager\fR
prompts for the password if it is not given on the command line with the
\fB\-\-password\fR
(or
-\fB\-p\fR) option. The command fails if the user already exists.
-.TP 3n
-\(bu
+\fB\-p\fR) option\&. The command fails if the user already exists\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Drop an existing user:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-drop\-user \-\-username=\fIuser_name\fR
.fi
+.if n \{\
+.RE
+.\}
+.sp
+This command removes the entry with the given user name from the password file\&. The user name is required\&. The command fails if the user does not exist\&.
.RE
-This command removes the entry with the given user name from the password file. The user name is required. The command fails if the user does not exist.
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Change the password for an existing user:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-edit\-user \-\-username=\fIuser_name\fR [\-\-password=\fIpassword\fR]
.fi
+.if n \{\
.RE
-This command changes the given user's password in the password file. The user name is required.
+.\}
+.sp
+This command changes the given user\'s password in the password file\&. The user name is required\&.
\fBmysqlmanager\fR
-prompts for the password it is not given on the command line. The command fails if the user does not exist.
-.TP 3n
-\(bu
+prompts for the password it is not given on the command line\&. The command fails if the user does not exist\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
List existing users:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-list\-users
.fi
+.if n \{\
.RE
-This command lists the user names of the accounts in the password file.
-.TP 3n
-\(bu
+.\}
+.sp
+This command lists the user names of the accounts in the password file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Check the password file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-check\-password\-file
.fi
+.if n \{\
.RE
-This command performs a consistency and validity check of the password file. The command fails if there is something wrong with the file.
-.TP 3n
-\(bu
+.\}
+.sp
+This command performs a consistency and validity check of the password file\&. The command fails if there is something wrong with the file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Empty the password file:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysqlmanager \-\-clean\-password\-file
.fi
+.if n \{\
+.RE
+.\}
+.sp
+This command empties the password file, which has the effect of dropping all users listed in it\&. The option creates the password file if it does not exist, so it can be used to initialize a new password file to be used for other account\-management operations\&. Take care not to use this option to reinitialize a file containing accounts that you do not want to drop\&.
.RE
-This command empties the password file, which has the effect of dropping all users listed in it. The option creates the password file if it does not exist, so it can be used to initialize a new password file to be used for other account\-management operations. Take care not to use this option to reinitialize a file containing accounts that you do not want to drop.
.SH "MYSQL SERVER INSTANCE STATUS MONITORING"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
To monitor the status of each guarded server instance, the MySQL Instance Manager attempts to connect to the instance at regular intervals using the
MySQL_Instance_Manager@localhost
user account with a password of
-check_connection.
+check_connection\&.
.PP
You are
\fInot\fR
-required to create this account for MySQL Server; in fact, it is expected that it will not exist. Instance Manager can tell that a server is operational if the server accepts the connection attempt but refuses access for the account by returning a login error. However, these failed connection attempts are logged by the server to its general query log (see
-Section\ 5.2.3, \(lqThe General Query Log\(rq).
+required to create this account for MySQL Server; in fact, it is expected that it will not exist\&. Instance Manager can tell that a server is operational if the server accepts the connection attempt but refuses access for the account by returning a login error\&. However, these failed connection attempts are logged by the server to its general query log (see
+Section\ \&5.2.3, \(lqThe General Query Log\(rq)\&.
.PP
Instance Manager also attempts a connection to nonguarded server instances when you use the
SHOW INSTANCES
or
SHOW INSTANCE STATUS
-command. This is the only status monitoring done for nonguarded instances.
+command\&. This is the only status monitoring done for nonguarded instances\&.
.PP
-Instance Manager knows if a server instance fails at startup because it receives a status from the attempt. For an instance that starts but later crashes, Instance Manager receives a signal because it is the parent process of the instance.
+Instance Manager knows if a server instance fails at startup because it receives a status from the attempt\&. For an instance that starts but later crashes, Instance Manager receives a signal because it is the parent process of the instance\&.
.PP
-Beginning with MySQL 5.1.12, Instance Manager tracks instance states so that it can determine which commands are allowed for each instance. For example, commands that modify an instance's configuration are allowed only while the instance is offline.
+Beginning with MySQL 5\&.1\&.12, Instance Manager tracks instance states so that it can determine which commands are allowed for each instance\&. For example, commands that modify an instance\'s configuration are allowed only while the instance is offline\&.
.PP
-Each instance is in one of the states described in the following table. Guarded instances can be in any of the states. Nonguarded instances can only be offline or online. Instance state information is displayed in the
+Each instance is in one of the states described in the following table\&. Guarded instances can be in any of the states\&. Nonguarded instances can only be offline or online\&. Instance state information is displayed in the
status
column of the
SHOW INSTANCES
and
SHOW INSTANCE STATUS
-commands.
+commands\&.
.TS
allbox tab(:);
l l
@@ -827,26 +1456,26 @@ T}
T{
offline
T}:T{
-The instance has not been started and is not running.
+The instance has not been started and is not running\&.
T}
T{
starting
T}:T{
-The instance is starting (initializing). Nonguarded instances cannot be
- in this state. A nonguarded instance goes directly from
- offline to online.
+The instance is starting (initializing)\&. Nonguarded instances cannot be
+ in this state\&. A nonguarded instance goes directly from
+ offline to online\&.
T}
T{
stopping
T}:T{
-The instance is stopping. Nonguarded instances cannot be in this state.
+The instance is stopping\&. Nonguarded instances cannot be in this state\&.
A nonguarded instance goes directly from online to
- offline, or stays offline if startup fails.
+ offline, or stays offline if startup fails\&.
T}
T{
online
T}:T{
-The instance has started and is running.
+The instance has started and is running\&.
T}
T{
failed
@@ -854,191 +1483,321 @@ T}:T{
The instance was online but it crashed and is being restarted by
Instance Manager, or else the instance failed to start
at all and Instance Manager is again attempting to start
- it. Nonguarded instances cannot be in this state.
+ it\&. Nonguarded instances cannot be in this state\&.
T}
T{
crashed
T}:T{
-Instance Manager failed to start the instance after several attempts.
- (Instance Manager will try again later.) Nonguarded
- instances cannot be in this state.
+Instance Manager failed to start the instance after several attempts\&.
+ (Instance Manager will try again later\&.) Nonguarded
+ instances cannot be in this state\&.
T}
T{
abandoned
T}:T{
Instance Manager was not able to start the instance, has given up, and
will make no further attempts until instructed
- otherwise. To tell Instance Manager to try again, you
+ otherwise\&. To tell Instance Manager to try again, you
must first use STOP INSTANCE to put
the instance in offline state, and then use
- START INSTANCE to start the instance.
+ START INSTANCE to start the instance\&.
If it is necessary to make configuration changes for the
instance, you must do so after putting the instance
- offline and before starting it. (Instance Manager
+ offline and before starting it\&. (Instance Manager
accepts configuration\-changing commands only for offline
- instances.) Nonguarded instances cannot be in this
- state.
+ instances\&.) Nonguarded instances cannot be in this
+ state\&.
T}
.TE
-.sp
+.sp 1
.SH "CONNECTING TO MYSQL INSTANCE MANAGER"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-After you set up a password file for the MySQL Instance Manager and Instance Manager is running, you can connect to it. The MySQL client\-server protocol is used to communicate with the Instance Manager. For example, you can connect to it using the standard
+After you set up a password file for the MySQL Instance Manager and Instance Manager is running, you can connect to it\&. The MySQL client\-server protocol is used to communicate with the Instance Manager\&. For example, you can connect to it using the standard
\fBmysql\fR
client program:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBmysql \-\-port=2273 \-\-host=im.example.org \-\-user=mysql \-\-password\fR
+shell> \fBmysql \-\-port=2273 \-\-host=im\&.example\&.org \-\-user=mysql \-\-password\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Instance Manager supports the version of the MySQL client\-server protocol used by the client tools and libraries distributed with MySQL 4.1 or later, so other programs that use the MySQL C API also can connect to it.
+Instance Manager supports the version of the MySQL client\-server protocol used by the client tools and libraries distributed with MySQL 4\&.1 or later, so other programs that use the MySQL C API also can connect to it\&.
.SH "MYSQL INSTANCE MANAGER COMMANDS"
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
.PP
-MySQL Instance Manager has been deprecated and is removed in MySQL 6.0.
+MySQL Instance Manager has been deprecated and is removed in MySQL 5\&.4\&.
+.sp .5v
+.RE
.PP
-After you connect to MySQL Instance Manager, you can issue commands. The following general principles apply to Instance Manager command execution:
-.TP 3n
-\(bu
-Commands that take an instance name fail if the name is not a valid instance name.
-.TP 3n
-\(bu
+After you connect to MySQL Instance Manager, you can issue commands\&. The following general principles apply to Instance Manager command execution:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Commands that take an instance name fail if the name is not a valid instance name\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Commands that take an instance name (other than
-CREATE INSTANCE) fail if the instance does not exist.
-.TP 3n
-\(bu
-As of MySQL 5.1.12, commands for an instance require that the instance be in an appropriate state. You cannot configure or start an instance that is not offline. You cannot start an instance that is online.
-.TP 3n
-\(bu
-Instance Manager maintains information about instance configuration in an internal (in\-memory) cache. Initially, this information comes from the configuration file if it exists, but some commands change the configuration of an instance. Commands that modify the configuration file fail if the file does not exist or is not accessible to Instance Manager.
-.sp
-As of MySQL 5.1.12, configuration\-changing commands modify both the in\-memory cache and the server instance section recorded in the configuration file to maintain consistency between them. For this to occur, the instance must be offline and the configuration file must be accessible and not malformed. If the configuration file cannot be updated, the command fails and the cache remains unchanged.
-.TP 3n
-\(bu
+CREATE INSTANCE) fail if the instance does not exist\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+As of MySQL 5\&.1\&.12, commands for an instance require that the instance be in an appropriate state\&. You cannot configure or start an instance that is not offline\&. You cannot start an instance that is online\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Instance Manager maintains information about instance configuration in an internal (in\-memory) cache\&. Initially, this information comes from the configuration file if it exists, but some commands change the configuration of an instance\&. Commands that modify the configuration file fail if the file does not exist or is not accessible to Instance Manager\&.
+.sp
+As of MySQL 5\&.1\&.12, configuration\-changing commands modify both the in\-memory cache and the server instance section recorded in the configuration file to maintain consistency between them\&. For this to occur, the instance must be offline and the configuration file must be accessible and not malformed\&. If the configuration file cannot be updated, the command fails and the cache remains unchanged\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
On Windows, the standard file is
-\fImy.ini\fR
-in the directory where Instance Manager is installed. On Unix, the standard configuration file is
-\fI/etc/my.cnf\fR. To specify a different configuration file, start Instance Manager with the
+my\&.ini
+in the directory where Instance Manager is installed\&. On Unix, the standard configuration file is
+/etc/my\&.cnf\&. To specify a different configuration file, start Instance Manager with the
\fB\-\-defaults\-file\fR
-option.
-.TP 3n
-\(bu
+option\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
If a
[mysqld]
instance section exists in the configuration file, it must not contain any Instance Manager\-specific options (see
-the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq). Therefore, you must not add any of these options if you change the configuration for an instance named
-mysqld.
-.sp
+the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq)\&. Therefore, you must not add any of these options if you change the configuration for an instance named
+mysqld\&.
.RE
.PP
-The following list describes the commands that Instance Manager accepts, with examples.
-.TP 3n
-\(bu
-CREATE INSTANCE \fIinstance_name\fR [\fIoption_name\fR[=\fIoption_value\fR], ...]
+The following list describes the commands that Instance Manager accepts, with examples\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+CREATE INSTANCE \fIinstance_name\fR [\fIoption_name\fR[=\fIoption_value\fR], \&.\&.\&.]
.sp
This command configures a new instance by creating an
[\fIinstance_name\fR]
-section in the configuration file. The command fails if
+section in the configuration file\&. The command fails if
\fIinstance_name\fR
-is not a valid instance name or the instance already exists.
+is not a valid instance name or the instance already exists\&.
.sp
-The created section instance is empty if no options are given. Otherwise, the options are added to the section. Options should be given in the same format used when you write options in option files. (See
-Section\ 4.2.3.2, \(lqUsing Option Files\(rq
-for a description of the allowable syntax.) If you specify multiple options, separate them by commas.
+The created section instance is empty if no options are given\&. Otherwise, the options are added to the section\&. Options should be given in the same format used when you write options in option files\&. (See
+Section\ \&4.2.3.3, \(lqUsing Option Files\(rq
+for a description of the allowable syntax\&.) If you specify multiple options, separate them by commas\&.
.sp
For example, to create an instance section named
[mysqld98], you might write something like this were you to modify the configuration file directly:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
[mysqld98]
basedir=/var/mysql98
.fi
+.if n \{\
.RE
+.\}
+.sp
To achieve the same effect via
CREATE INSTANCE, issue this command to Instance Manager:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBCREATE INSTANCE mysqld98 basedir="/var/mysql98";\fR
Query OK, 0 rows affected (0,00 sec)
.fi
+.if n \{\
.RE
+.\}
+.sp
CREATE INSTANCE
-creates the instance but does not start it.
+creates the instance but does not start it\&.
.sp
If the instance name is the (deprecated) name
mysqld, the option list cannot include any options that are specific to Instance Manager, such as
nonguarded
(see
-the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq).
+the section called \(lqMYSQL INSTANCE MANAGER CONFIGURATION FILES\(rq)\&.
.sp
-This command was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+This command was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
DROP INSTANCE \fIinstance_name\fR
.sp
This command removes the configuration for
\fIinstance_name\fR
-from the configuration file.
+from the configuration file\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBDROP INSTANCE mysqld98;\fR
Query OK, 0 rows affected (0,00 sec)
.fi
+.if n \{\
.RE
+.\}
+.sp
The command fails if
\fIinstance_name\fR
-is not a valid instance name, the instance does not exist, or is not offline.
+is not a valid instance name, the instance does not exist, or is not offline\&.
.sp
-This command was added in MySQL 5.1.12.
-.TP 3n
-\(bu
+This command was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
START INSTANCE \fIinstance_name\fR
.sp
-This command attempts to start an offline instance. The command is asynchronous; it does not wait for the instance to start.
+This command attempts to start an offline instance\&. The command is asynchronous; it does not wait for the instance to start\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSTART INSTANCE mysqld4;\fR
Query OK, 0 rows affected (0,00 sec)
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
STOP INSTANCE \fIinstance_name\fR
.sp
-This command attempts to stop an instance. The command is synchronous; it waits for the instance to stop.
+This command attempts to stop an instance\&. The command is synchronous; it waits for the instance to stop\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSTOP INSTANCE mysqld4;\fR
Query OK, 0 rows affected (0,00 sec)
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW INSTANCES
.sp
-Shows the names and status of all loaded instances.
+Shows the names and status of all loaded instances\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW INSTANCES;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+
@@ -1049,14 +1808,26 @@ mysql> \fBSHOW INSTANCES;\fR
| mysqld2 | offline |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW INSTANCE STATUS \fIinstance_name\fR
.sp
-Shows status and version information for an instance.
+Shows status and version information for an instance\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW INSTANCE STATUS mysqld3;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+
@@ -1065,65 +1836,102 @@ mysql> \fBSHOW INSTANCE STATUS mysqld3;\
| mysqld3 | online | unknown |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW INSTANCE OPTIONS \fIinstance_name\fR
.sp
-Shows the options used by an instance.
+Shows the options used by an instance\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW INSTANCE OPTIONS mysqld3;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
| option_name | value |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
| instance_name | mysqld3 |
-| mysqld\-path | /home/cps/mysql/trees/mysql\-4.1/sql/mysqld |
+| mysqld\-path | /home/cps/mysql/trees/mysql\-4\&.1/sql/mysqld |
| port | 3309 |
-| socket | /tmp/mysql.sock3 |
-| pid\-file | hostname.pid3 |
+| socket | /tmp/mysql\&.sock3 |
+| pid\-file | hostname\&.pid3 |
| datadir | /home/cps/mysql_data/data_dir1/ |
-| language | /home/cps/mysql/trees/mysql\-4.1/sql/share/english |
+| language | /home/cps/mysql/trees/mysql\-4\&.1/sql/share/english |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW \fIinstance_name\fR LOG FILES
.sp
-The command lists all log files used by the instance. The result set contains the path to the log file and the log file size. If no log file path is specified in the instance section of the configuration file (for example,
-log=/var/mysql.log), the Instance Manager tries to guess its placement. If Instance Manager is unable to guess the log file placement you should specify the log file location explicitly by using a log option in the appropriate instance section of the configuration file.
+The command lists all log files used by the instance\&. The result set contains the path to the log file and the log file size\&. If no log file path is specified in the instance section of the configuration file (for example,
+log=/var/mysql\&.log), the Instance Manager tries to guess its placement\&. If Instance Manager is unable to guess the log file placement you should specify the log file location explicitly by using a log option in the appropriate instance section of the configuration file\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW mysqld LOG FILES;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+
| Logfile | Path | Filesize |
+\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+
-| ERROR LOG | /home/cps/var/mysql/owlet.err | 9186 |
-| GENERAL LOG | /home/cps/var/mysql/owlet.log | 471503 |
-| SLOW LOG | /home/cps/var/mysql/owlet\-slow.log | 4463 |
+| ERROR LOG | /home/cps/var/mysql/owlet\&.err | 9186 |
+| GENERAL LOG | /home/cps/var/mysql/owlet\&.log | 471503 |
+| SLOW LOG | /home/cps/var/mysql/owlet\-slow\&.log | 4463 |
+\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
.RE
-SHOW ... LOG FILES
-displays information only about log files. If a server instance uses log tables (see
-Section\ 5.2.1, \(lqSelecting General Query and Slow Query Log Output Destinations\(rq), no information about those tables is shown.
+.\}
+.sp
+SHOW \&.\&.\&. LOG FILES
+displays information only about log files\&. If a server instance uses log tables (see
+Section\ \&5.2.1, \(lqSelecting General Query and Slow Query Log Output Destinations\(rq), no information about those tables is shown\&.
.sp
Log options are described in
-Section\ 5.1.2, \(lqServer Command Options\(rq.
-.TP 3n
-\(bu
+Section\ \&5.1.2, \(lqServer Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
SHOW \fIinstance_name\fR LOG {ERROR | SLOW | GENERAL} \fIsize\fR[,\fIoffset_from_end\fR]
.sp
-This command retrieves a portion of the specified log file. Because most users are interested in the latest log messages, the
+This command retrieves a portion of the specified log file\&. Because most users are interested in the latest log messages, the
\fIsize\fR
-parameter defines the number of bytes to retrieve from the end of the log. To retrieve data from the middle of the log file, specify the optional
+parameter defines the number of bytes to retrieve from the end of the log\&. To retrieve data from the middle of the log file, specify the optional
\fIoffset_from_end\fR
-parameter. The following example retrieves 21 bytes of data, starting 23 bytes before the end of the log file and ending 2 bytes before the end:
+parameter\&. The following example retrieves 21 bytes of data, starting 23 bytes before the end of the log file and ending 2 bytes before the end:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBSHOW mysqld LOG GENERAL 21, 2;\fR
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
@@ -1132,85 +1940,138 @@ mysql> \fBSHOW mysqld LOG GENERAL 21, 2;
| using password: YES |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
.fi
+.if n \{\
+.RE
+.\}
.RE
-.TP 3n
-\(bu
-SET \fIinstance_name\fR.\fIoption_name\fR[=\fIoption_value\fR]
.sp
-This command edits the specified instance's configuration section to change or add instance options. The option is added to the section is it is not already present. Otherwise, the new setting replaces the existing one.
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+SET \fIinstance_name\fR\&.\fIoption_name\fR[=\fIoption_value\fR]
+.sp
+This command edits the specified instance\'s configuration section to change or add instance options\&. The option is added to the section is it is not already present\&. Otherwise, the new setting replaces the existing one\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBSET mysqld2.port=3322;\fR
-Query OK, 0 rows affected (0.00 sec)
+mysql> \fBSET mysqld2\&.port=3322;\fR
+Query OK, 0 rows affected (0\&.00 sec)
.fi
+.if n \{\
.RE
-As of MySQL 5.1.12, you can specify multiple options (separated by commas), and
+.\}
+.sp
+As of MySQL 5\&.1\&.12, you can specify multiple options (separated by commas), and
SET
-can be used only for offline instances. Each option must indicate the instance name:
+can be used only for offline instances\&. Each option must indicate the instance name:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBSET mysqld2.port=3322, mysqld3.nonguarded;\fR
-Query OK, 0 rows affected (0.00 sec)
+mysql> \fBSET mysqld2\&.port=3322, mysqld3\&.nonguarded;\fR
+Query OK, 0 rows affected (0\&.00 sec)
.fi
+.if n \{\
.RE
-Before MySQL 5.1.12, only a single option can be specified. Also, changes made to the configuration file do not take effect until the MySQL server is restarted. In addition, these changes are not stored in the instance manager's local cache of instance settings until a
+.\}
+.sp
+Before MySQL 5\&.1\&.12, only a single option can be specified\&. Also, changes made to the configuration file do not take effect until the MySQL server is restarted\&. In addition, these changes are not stored in the instance manager\'s local cache of instance settings until a
FLUSH INSTANCES
-command is executed.
-.TP 3n
-\(bu
-UNSET \fIinstance_name\fR.\fIoption_name\fR
+command is executed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+UNSET \fIinstance_name\fR\&.\fIoption_name\fR
.sp
-This command removes an option from an instance's configuration section.
+This command removes an option from an instance\'s configuration section\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBUNSET mysqld2.port;\fR
-Query OK, 0 rows affected (0.00 sec)
+mysql> \fBUNSET mysqld2\&.port;\fR
+Query OK, 0 rows affected (0\&.00 sec)
.fi
+.if n \{\
.RE
-As of MySQL 5.1.12, you can specify multiple options (separated by commas), and
+.\}
+.sp
+As of MySQL 5\&.1\&.12, you can specify multiple options (separated by commas), and
UNSET
-can be used only for offline instances. Each option must indicate the instance name:
+can be used only for offline instances\&. Each option must indicate the instance name:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysql> \fBUNSET mysqld2.port, mysqld4.nonguarded;\fR
-Query OK, 0 rows affected (0.00 sec)
+mysql> \fBUNSET mysqld2\&.port, mysqld4\&.nonguarded;\fR
+Query OK, 0 rows affected (0\&.00 sec)
.fi
+.if n \{\
.RE
-Before MySQL 5.1.12, only a single option can be specified. Also, changes made to the configuration file do not take effect until the MySQL server is restarted. In addition, these changes are not stored in the instance manager's local cache of instance settings until a
+.\}
+.sp
+Before MySQL 5\&.1\&.12, only a single option can be specified\&. Also, changes made to the configuration file do not take effect until the MySQL server is restarted\&. In addition, these changes are not stored in the instance manager\'s local cache of instance settings until a
FLUSH INSTANCES
-command is executed.
-.TP 3n
-\(bu
+command is executed\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
FLUSH INSTANCES
.sp
-As of MySQL 5.1.12,
+As of MySQL 5\&.1\&.12,
FLUSH INSTANCES
-cannot be used unless all instances are offline. The command causes Instance Manager to reread the configuration file, update its in\-memory configuration cache, and start any guarded instances.
+cannot be used unless all instances are offline\&. The command causes Instance Manager to reread the configuration file, update its in\-memory configuration cache, and start any guarded instances\&.
.sp
-Before MySQL 5.1.12, this command forces Instance Manager reread the configuration file and to refresh internal structures. This command should be performed after editing the configuration file. The command does not restart instances.
+Before MySQL 5\&.1\&.12, this command forces Instance Manager reread the configuration file and to refresh internal structures\&. This command should be performed after editing the configuration file\&. The command does not restart instances\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
mysql> \fBFLUSH INSTANCES;\fR
-Query OK, 0 rows affected (0.04 sec)
+Query OK, 0 rows affected (0\&.04 sec)
.fi
+.if n \{\
+.RE
+.\}
.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlshow.1'
--- a/man/mysqlshow.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlshow.1 2009-09-16 12:03:18 +0000
@@ -1,61 +1,101 @@
+'\" t
.\" Title: \fBmysqlshow\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLSHOW\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLSHOW\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlshow
+.\" databases: displaying
+.\" displaying: database information
+.\" tables: displaying
+.\" columns: displaying
+.\" showing: database information
.SH "NAME"
mysqlshow \- display database, table, and column information
.SH "SYNOPSIS"
-.HP 52
+.HP \w'\fBmysqlshow\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB\ [\fR\fB\fItbl_name\fR\fR\fB\ [\fR\fB\fIcol_name\fR\fR\fB]]]\fR\ 'u
\fBmysqlshow [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB [\fR\fB\fIcol_name\fR\fR\fB]]]\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqlshow\fR
-client can be used to quickly see which databases exist, their tables, or a table's columns or indexes.
+client can be used to quickly see which databases exist, their tables, or a table\'s columns or indexes\&.
.PP
\fBmysqlshow\fR
provides a command\-line interface to several SQL
SHOW
-statements. See
-Section\ 12.5.5, \(lqSHOW Syntax\(rq. The same information can be obtained by using those statements directly. For example, you can issue them from the
+statements\&. See
+Section\ \&12.5.5, \(lqSHOW Syntax\(rq\&. The same information can be obtained by using those statements directly\&. For example, you can issue them from the
\fBmysql\fR
-client program.
+client program\&.
.PP
Invoke
\fBmysqlshow\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlshow [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB [\fR\fB\fItbl_name\fR\fR\fB [\fR\fB\fIcol_name\fR\fR\fB]]]\fR
.fi
+.if n \{\
.RE
-.TP 3n
-\(bu
-If no database is given, a list of database names is shown.
-.TP 3n
-\(bu
-If no table is given, all matching tables in the database are shown.
-.TP 3n
-\(bu
-If no column is given, all matching columns and column types in the table are shown.
+.\}
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+If no database is given, a list of database names is shown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+If no table is given, all matching tables in the database are shown\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+If no column is given, all matching columns and column types in the table are shown\&.
.RE
.PP
-The output displays only the names of those databases, tables, or columns for which you have some privileges.
+The output displays only the names of those databases, tables, or columns for which you have some privileges\&.
.PP
If the last argument contains shell or SQL wildcard characters (\(lq*\(rq,
\(lq?\(rq,
\(lq%\(rq, or
-\(lq_\(rq), only those names that are matched by the wildcard are shown. If a database name contains any underscores, those should be escaped with a backslash (some Unix shells require two) to get a list of the proper tables or columns.
+\(lq_\(rq), only those names that are matched by the wildcard are shown\&. If a database name contains any underscores, those should be escaped with a backslash (some Unix shells require two) to get a list of the proper tables or columns\&.
\(lq*\(rq
and
\(lq?\(rq
@@ -63,175 +103,389 @@ characters are converted into SQL
\(lq%\(rq
and
\(lq_\(rq
-wildcard characters. This might cause some confusion when you try to display the columns for a table with a
+wildcard characters\&. This might cause some confusion when you try to display the columns for a table with a
\(lq_\(rq
in the name, because in this case,
\fBmysqlshow\fR
-shows you only the table names that match the pattern. This is easily fixed by adding an extra
+shows you only the table names that match the pattern\&. This is easily fixed by adding an extra
\(lq%\(rq
-last on the command line as a separate argument.
+last on the command line as a separate argument\&.
.PP
\fBmysqlshow\fR
-supports the following options:
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: help option
+.\" help option: mysqlshow
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: character-sets-dir option
+.\" character-sets-dir option: mysqlshow
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: compress option
+.\" compress option: mysqlshow
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: count option
+.\" count option: mysqlshow
\fB\-\-count\fR
.sp
-Show the number of rows per table. This can be slow for non\-MyISAM
-tables.
-.TP 3n
-\(bu
+Show the number of rows per table\&. This can be slow for non\-MyISAM
+tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: debug option
+.\" debug option: mysqlshow
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: debug-check option
+.\" debug-check option: mysqlshow
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: debug-info option
+.\" debug-info option: mysqlshow
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: default-character-set option
+.\" default-character-set option: mysqlshow
\fB\-\-default\-character\-set=\fR\fB\fIcharset_name\fR\fR
.sp
Use
\fIcharset_name\fR
-as the default character set. See
-Section\ 9.2, \(lqThe Character Set Used for Data and Sorting\(rq.
-.TP 3n
-\(bu
+as the default character set\&. See
+Section\ \&9.2, \(lqThe Character Set Used for Data and Sorting\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: host option
+.\" host option: mysqlshow
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: keys option
+.\" keys option: mysqlshow
\fB\-\-keys\fR,
\fB\-k\fR
.sp
-Show table indexes.
-.TP 3n
-\(bu
+Show table indexes\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: password option
+.\" password option: mysqlshow
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
+.sp
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: pipe option
+.\" pipe option: mysqlshow
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: port option
+.\" port option: mysqlshow
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: protocol option
+.\" protocol option: mysqlshow
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: show-table-type option
+.\" show-table-type option: mysqlshow
\fB\-\-show\-table\-type\fR,
\fB\-t\fR
.sp
Show a column indicating the table type, as in
-SHOW FULL TABLES. The type is
+SHOW FULL TABLES\&. The type is
BASE TABLE
or
-VIEW.
-.TP 3n
-\(bu
+VIEW\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: socket option
+.\" socket option: mysqlshow
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: SSL options
+.\" SSL options: mysqlshow
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: status option
+.\" status option: mysqlshow
\fB\-\-status\fR,
\fB\-i\fR
.sp
-Display extra information about each table.
-.TP 3n
-\(bu
+Display extra information about each table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: user option
+.\" user option: mysqlshow
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: verbose option
+.\" verbose option: mysqlshow
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does. This option can be used multiple times to increase the amount of information.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&. This option can be used multiple times to increase the amount of information\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlshow: version option
+.\" version option: mysqlshow
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqlslap.1'
--- a/man/mysqlslap.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqlslap.1 2009-09-16 12:03:18 +0000
@@ -1,72 +1,112 @@
+'\" t
.\" Title: \fBmysqlslap\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBMYSQLSLAP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBMYSQLSLAP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqlslap
+.\" load emulation
.SH "NAME"
mysqlslap \- load emulation client
.SH "SYNOPSIS"
-.HP 20
+.HP \w'\fBmysqlslap\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBmysqlslap [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBmysqlslap\fR
-is a diagnostic program designed to emulate client load for a MySQL server and to report the timing of each stage. It works as if multiple clients are accessing the server.
+is a diagnostic program designed to emulate client load for a MySQL server and to report the timing of each stage\&. It works as if multiple clients are accessing the server\&.
\fBmysqlslap\fR
-is available as of MySQL 5.1.4.
+is available as of MySQL 5\&.1\&.4\&.
.PP
Invoke
\fBmysqlslap\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqlslap [\fR\fB\fIoptions\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Some options such as
\fB\-\-create\fR
or
\fB\-\-query\fR
-enable you to specify a string containing an SQL statement or a file containing statements. If you specify a file, by default it must contain one statement per line. (That is, the implicit statement delimiter is the newline character.) Use the
+enable you to specify a string containing an SQL statement or a file containing statements\&. If you specify a file, by default it must contain one statement per line\&. (That is, the implicit statement delimiter is the newline character\&.) Use the
\fB\-\-delimiter\fR
-option to specify a different delimiter, which enables you to specify statements that span multiple lines or place multiple statements on a single line. You cannot include comments in a file;
+option to specify a different delimiter, which enables you to specify statements that span multiple lines or place multiple statements on a single line\&. You cannot include comments in a file;
\fBmysqlslap\fR
-does not understand them.
+does not understand them\&.
.PP
\fBmysqlslap\fR
runs in three stages:
-.TP 3n
-1.
-Create schema, table, and optionally any stored programs or data you want to using for the test. This stage uses a single client connection.
-.TP 3n
-2.
-Run the load test. This stage can use many client connections.
-.TP 3n
-3.
-Clean up (disconnect, drop table if specified). This stage uses a single client connection.
.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
+Create schema, table, and optionally any stored programs or data you want to using for the test\&. This stage uses a single client connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
+Run the load test\&. This stage can use many client connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 3.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 3." 4.2
+.\}
+Clean up (disconnect, drop table if specified)\&. This stage uses a single client connection\&.
.RE
.PP
Examples:
.PP
Supply your own create and query SQL statements, with 50 clients querying and 200 selects for each:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlslap \-\-delimiter=";" \\
- \-\-create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" \\
+mysqlslap \-\-delimiter=";" \e
+ \-\-create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" \e
\-\-query="SELECT * FROM a" \-\-concurrency=50 \-\-iterations=200
.fi
+.if n \{\
.RE
+.\}
.PP
Let
\fBmysqlslap\fR
@@ -74,71 +114,138 @@ build the query SQL statement with a tab
INT
columns and three
VARCHAR
-columns. Use five clients querying 20 times each. Do not create the table or insert the data (that is, use the previous test's schema and data):
+columns\&. Use five clients querying 20 times each\&. Do not create the table or insert the data (that is, use the previous test\'s schema and data):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlslap \-\-concurrency=5 \-\-iterations=20 \\
- \-\-number\-int\-cols=2 \-\-number\-char\-cols=3 \\
+mysqlslap \-\-concurrency=5 \-\-iterations=20 \e
+ \-\-number\-int\-cols=2 \-\-number\-char\-cols=3 \e
\-\-auto\-generate\-sql
.fi
+.if n \{\
.RE
+.\}
.PP
Tell the program to load the create, insert, and query SQL statements from the specified files, where the
-\fIcreate.sql\fR
+create\&.sql
file has multiple table creation statements delimited by
-\';'
+\';\'
and multiple insert statements delimited by
-\';'. The
+\';\'\&. The
\fB\-\-query\fR
file will have multiple queries delimited by
-\';'. Run all the load statements, then run all the queries in the query file with five clients (five times each):
+\';\'\&. Run all the load statements, then run all the queries in the query file with five clients (five times each):
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-mysqlslap \-\-concurrency=5 \\
- \-\-iterations=5 \-\-query=query.sql \-\-create=create.sql \\
+mysqlslap \-\-concurrency=5 \e
+ \-\-iterations=5 \-\-query=query\&.sql \-\-create=create\&.sql \e
\-\-delimiter=";"
.fi
+.if n \{\
.RE
+.\}
.PP
\fBmysqlslap\fR
-supports the options in the following list. It also reads option files and supports the options for processing them described at
-Section\ 4.2.3.2.1, \(lqCommand\-Line Options that Affect Option\-File Handling\(rq.
-.TP 3n
-\(bu
+supports the options in the following list\&. It also reads option files and supports the options for processing them described at
+Section\ \&4.2.3.3.1, \(lqCommand-Line Options that Affect Option-File Handling\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: help option
+.\" help option: mysqlslap
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql option
+.\" auto-generate-sql option: mysqlslap
\fB\-\-auto\-generate\-sql\fR,
\fB\-a\fR
.sp
-Generate SQL statements automatically when they are not supplied in files or via command options.
-.TP 3n
-\(bu
+Generate SQL statements automatically when they are not supplied in files or via command options\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-add-autoincrement option
+.\" auto-generate-sql-add-autoincrement option: mysqlslap
\fB\-\-auto\-generate\-sql\-add\-autoincrement\fR
.sp
Add an
AUTO_INCREMENT
-column to automatically generated tables. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+column to automatically generated tables\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-execute-number option
+.\" auto-generate-sql-execute-number option: mysqlslap
\fB\-\-auto\-generate\-sql\-execute\-number=\fR\fB\fIN\fR\fR
.sp
-Specify how many queries to generate automatically. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+Specify how many queries to generate automatically\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-guid-primary option
+.\" auto-generate-sql-guid-primary option: mysqlslap
\fB\-\-auto\-generate\-sql\-guid\-primary\fR
.sp
-Add a GUID\-based primary key to automatically generated tables. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+Add a GUID\-based primary key to automatically generated tables\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-load-type option
+.\" auto-generate-sql-load-type option: mysqlslap
\fB\-\-auto\-generate\-sql\-load\-type=\fR\fB\fItype\fR\fR
.sp
-Specify the test load type. The allowable values are
+Specify the test load type\&. The allowable values are
read
(scan tables),
write
@@ -148,123 +255,324 @@ key
update
(update primary keys), or
mixed
-(half inserts, half scanning selects). The default is
-mixed. This option was added in MySQL 5.1.16.
-.TP 3n
-\(bu
+(half inserts, half scanning selects)\&. The default is
+mixed\&. This option was added in MySQL 5\&.1\&.16\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-secondary-indexes option
+.\" auto-generate-sql-secondary-indexes option: mysqlslap
\fB\-\-auto\-generate\-sql\-secondary\-indexes=\fR\fB\fIN\fR\fR
.sp
-Specify how many secondary indexes to add to automatically generated tables. By default, none are added. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+Specify how many secondary indexes to add to automatically generated tables\&. By default, none are added\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-unique-query-number option
+.\" auto-generate-sql-unique-query-number option: mysqlslap
\fB\-\-auto\-generate\-sql\-unique\-query\-number=\fR\fB\fIN\fR\fR
.sp
-How many different queries to generate for automatic tests. For example, if you run a
+How many different queries to generate for automatic tests\&. For example, if you run a
key
-test that performs 1000 selects, you can use this option with a value of 1000 to run 1000 unique queries, or with a value of 50 to perform 50 different selects. The default is 10. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+test that performs 1000 selects, you can use this option with a value of 1000 to run 1000 unique queries, or with a value of 50 to perform 50 different selects\&. The default is 10\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-unique-write-number option
+.\" auto-generate-sql-unique-write-number option: mysqlslap
\fB\-\-auto\-generate\-sql\-unique\-write\-number=\fR\fB\fIN\fR\fR
.sp
How many different queries to generate for
-\fB\-\-auto\-generate\-sql\-write\-number\fR. The default is 10. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+\fB\-\-auto\-generate\-sql\-write\-number\fR\&. The default is 10\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: auto-generate-sql-write-number option
+.\" auto-generate-sql-write-number option: mysqlslap
\fB\-\-auto\-generate\-sql\-write\-number=\fR\fB\fIN\fR\fR
.sp
-How many row inserts to perform on each thread. The default is 100. This option was added in MySQL 5.1.16.
-.TP 3n
-\(bu
+How many row inserts to perform on each thread\&. The default is 100\&. This option was added in MySQL 5\&.1\&.16\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: commit option
+.\" commit option: mysqlslap
\fB\-\-commit=\fR\fB\fIN\fR\fR
.sp
-How many statements to execute before committing. The default is 0 (no commits are done). This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+How many statements to execute before committing\&. The default is 0 (no commits are done)\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: compress option
+.\" compress option: mysqlslap
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: concurrency option
+.\" concurrency option: mysqlslap
\fB\-\-concurrency=\fR\fB\fIN\fR\fR,
\fB\-c \fR\fB\fIN\fR\fR
.sp
The number of clients to simulate when issuing the
SELECT
-statement.
-.TP 3n
-\(bu
+statement\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: create option
+.\" create option: mysqlslap
\fB\-\-create=\fR\fB\fIvalue\fR\fR
.sp
-The file or string containing the statement to use for creating the table.
-.TP 3n
-\(bu
+The file or string containing the statement to use for creating the table\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: create-schema option
+.\" create-schema option: mysqlslap
\fB\-\-create\-schema=\fR\fB\fIvalue\fR\fR
.sp
-The schema in which to run the tests. This option was added in MySQL 5.1.5.
-.TP 3n
-\(bu
+The schema in which to run the tests\&. This option was added in MySQL 5\&.1\&.5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: csv option
+.\" csv option: mysqlslap
\fB\-\-csv[=\fR\fB\fIfile_name\fR\fR\fB]\fR
.sp
-Generate output in comma\-separated values format. The output goes to the named file, or to the standard output if no file is given. This option was added in MySQL 5.1.5.
-.TP 3n
-\(bu
+Generate output in comma\-separated values format\&. The output goes to the named file, or to the standard output if no file is given\&. This option was added in MySQL 5\&.1\&.5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: debug option
+.\" debug option: mysqlslap
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-# [\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log. The
+Write a debugging log\&. A typical
\fIdebug_options\fR
-string often is
-\'d:t:o,\fIfile_name\fR'.
-.TP 3n
-\(bu
+string is
+\'d:t:o,\fIfile_name\fR\'\&. The default is
+\'d:t:o,/tmp/mysqlslap\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: debug-check option
+.\" debug-check option: mysqlslap
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: debug-info option
+.\" debug-info option: mysqlslap
\fB\-\-debug\-info\fR,
\fB\-T\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: delimiter option
+.\" delimiter option: mysqlslap
\fB\-\-delimiter=\fR\fB\fIstr\fR\fR,
\fB\-F \fR\fB\fIstr\fR\fR
.sp
-The delimiter to use in SQL statements supplied in files or via command options.
-.TP 3n
-\(bu
+The delimiter to use in SQL statements supplied in files or via command options\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: detach option
+.\" detach option: mysqlslap
\fB\-\-detach=\fR\fB\fIN\fR\fR
.sp
Detach (close and reopen) each connection after each
\fIN\fR
-statements. The default is 0 (connections are not detached). This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+statements\&. The default is 0 (connections are not detached)\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: engine option
+.\" engine option: mysqlslap
\fB\-\-engine=\fR\fB\fIengine_name\fR\fR,
\fB\-e \fR\fB\fIengine_name\fR\fR
.sp
-The storage engine to use for creating tables.
-.TP 3n
-\(bu
+The storage engine to use for creating tables\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: host option
+.\" host option: mysqlslap
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: iterations option
+.\" iterations option: mysqlslap
\fB\-\-iterations=\fR\fB\fIN\fR\fR,
\fB\-i \fR\fB\fIN\fR\fR
.sp
-The number of times to run the tests.
-.TP 3n
-\(bu
+The number of times to run the tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: lock-directory option
+.\" lock-directory option: mysqlslap
\fB\-\-lock\-directory=\fR\fB\fIpath\fR\fR
.sp
-The directory to use for storing locks. This option was added in MySQL 5.1.5 and removed in 5.1.18.
-.TP 3n
-\(bu
+The directory to use for storing locks\&. This option was added in MySQL 5\&.1\&.5 and removed in 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: number-char-cols option
+.\" number-char-cols option: mysqlslap
\fB\-\-number\-char\-cols=\fR\fB\fIN\fR\fR,
\fB\-x \fR\fB\fIN\fR\fR
.sp
@@ -272,9 +580,19 @@ The number of
VARCHAR
columns to use if
\fB\-\-auto\-generate\-sql\fR
-is specified.
-.TP 3n
-\(bu
+is specified\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: number-int-cols option
+.\" number-int-cols option: mysqlslap
\fB\-\-number\-int\-cols=\fR\fB\fIN\fR\fR,
\fB\-y \fR\fB\fIN\fR\fR
.sp
@@ -282,173 +600,388 @@ The number of
INT
columns to use if
\fB\-\-auto\-generate\-sql\fR
-is specified.
-.TP 3n
-\(bu
+is specified\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: number-of-queries option
+.\" number-of-queries option: mysqlslap
\fB\-\-number\-of\-queries=\fR\fB\fIN\fR\fR
.sp
-Limit each client to approximately this number of queries. This option was added in MySQL 5.1.5.
-.TP 3n
-\(bu
+Limit each client to approximately this number of queries\&. This option was added in MySQL 5\&.1\&.5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: only-print option
+.\" only-print option: mysqlslap
\fB\-\-only\-print\fR
.sp
-Do not connect to databases.
+Do not connect to databases\&.
\fBmysqlslap\fR
-only prints what it would have done. This option was added in MySQL 5.1.5.
-.TP 3n
-\(bu
+only prints what it would have done\&. This option was added in MySQL 5\&.1\&.5\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: password option
+.\" password option: mysqlslap
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
+.\" mysqlslap: password option
+.\" password option: mysqlslap
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
+option on the command line, you are prompted for one\&.
.sp
-Specifying a password on the command line should be considered insecure. See
-Section\ 5.5.6.2, \(lqEnd\-User Guidelines for Password Security\(rq.
-.TP 3n
-\(bu
+Specifying a password on the command line should be considered insecure\&. See
+Section\ \&5.5.6.2, \(lqEnd-User Guidelines for Password Security\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: pipe option
+.\" pipe option: mysqlslap
\fB\-\-pipe\fR,
\fB\-W\fR
.sp
-On Windows, connect to the server via a named pipe. This option applies only for connections to a local server, and only if the server supports named\-pipe connections.
-.TP 3n
-\(bu
+On Windows, connect to the server via a named pipe\&. This option applies only for connections to a local server, and only if the server supports named\-pipe connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: port option
+.\" port option: mysqlslap
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: post-query option
+.\" post-query option: mysqlslap
\fB\-\-post\-query=\fR\fB\fIvalue\fR\fR
.sp
-The file or string containing the statement to execute after the tests have completed. This execution is not counted for timing purposes. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+The file or string containing the statement to execute after the tests have completed\&. This execution is not counted for timing purposes\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: shared-memory-base-name option
+.\" shared-memory-base-name option: mysqlslap
\fB\-\-shared\-memory\-base\-name=\fR\fB\fIname\fR\fR
.sp
-On Windows, the shared\-memory name to use, for connections made via shared memory to a local server. This option applies only if the server supports shared\-memory connections.
-.TP 3n
-\(bu
+On Windows, the shared\-memory name to use, for connections made via shared memory to a local server\&. This option applies only if the server supports shared\-memory connections\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: post-system option
+.\" post-system option: mysqlslap
\fB\-\-post\-system=\fR\fB\fIstr\fR\fR
.sp
The string to execute via
system()
-after the tests have completed. This execution is not counted for timing purposes. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+after the tests have completed\&. This execution is not counted for timing purposes\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: pre-query option
+.\" pre-query option: mysqlslap
\fB\-\-pre\-query=\fR\fB\fIvalue\fR\fR
.sp
-The file or string containing the statement to execute before running the tests. This execution is not counted for timing purposes. This option was added in MySQL 5.1.18.
-.TP 3n
-\(bu
+The file or string containing the statement to execute before running the tests\&. This execution is not counted for timing purposes\&. This option was added in MySQL 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: pre-system option
+.\" pre-system option: mysqlslap
\fB\-\-pre\-system=\fR\fB\fIstr\fR\fR
.sp
The string to execute via
system()
-before running the tests. This execution is not counted for timing purposes. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+before running the tests\&. This execution is not counted for timing purposes\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: preserve-schema option
+.\" preserve-schema option: mysqlslap
\fB\-\-preserve\-schema\fR
.sp
Preserve the schema from the
\fBmysqlslap\fR
-run. The
+run\&. The
\fB\-\-auto\-generate\-sql\fR
and
\fB\-\-create\fR
-options disable this option. This option was added in MySQL 5.1.5 and removed in MySQL 5.1.23.
-.TP 3n
-\(bu
+options disable this option\&. This option was added in MySQL 5\&.1\&.5 and removed in MySQL 5\&.1\&.23\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: protocol option
+.\" protocol option: mysqlslap
\fB\-\-protocol={TCP|SOCKET|PIPE|MEMORY}\fR
.sp
-The connection protocol to use for connecting to the server. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want. For details on the allowable values, see
-Section\ 4.2.2, \(lqConnecting to the MySQL Server\(rq.
-.TP 3n
-\(bu
+The connection protocol to use for connecting to the server\&. It is useful when the other connection parameters normally would cause a protocol to be used other than the one you want\&. For details on the allowable values, see
+Section\ \&4.2.2, \(lqConnecting to the MySQL Server\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: query option
+.\" query option: mysqlslap
\fB\-\-query=\fR\fB\fIvalue\fR\fR,
\fB\-q \fR\fB\fIvalue\fR\fR
.sp
The file or string containing the
SELECT
-statement to use for retrieving data.
-.TP 3n
-\(bu
+statement to use for retrieving data\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: silent option
+.\" silent option: mysqlslap
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. No output.
-.TP 3n
-\(bu
+Silent mode\&. No output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: slave option
+.\" slave option: mysqlslap
\fB\-\-slave\fR
.sp
Follow master locks for other
\fBmysqlslap\fR
-clients. Use this option if you are trying to synchronize around one master server with
+clients\&. Use this option if you are trying to synchronize around one master server with
\fB\-\-lock\-directory\fR
-plus NFS. This option was added in MySQL 5.1.5 and removed in 5.1.18.
-.TP 3n
-\(bu
+plus NFS\&. This option was added in MySQL 5\&.1\&.5 and removed in 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: socket option
+.\" socket option: mysqlslap
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
For connections to
-localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
-.TP 3n
-\(bu
+localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: SSL options
+.\" SSL options: mysqlslap
\fB\-\-ssl*\fR
.sp
Options that begin with
\fB\-\-ssl\fR
-specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates. See
-Section\ 5.5.7.3, \(lqSSL Command Options\(rq.
-.TP 3n
-\(bu
+specify whether to connect to the server via SSL and indicate where to find SSL keys and certificates\&. See
+Section\ \&5.5.7.3, \(lqSSL Command Options\(rq\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: use-threads option
+.\" use-threads option: mysqlslap
\fB\-\-use\-threads\fR
.sp
On Unix, the default is to use
fork()
calls and this option causes
\fBpthread\fR
-calls to be used instead. (On Windows, the default is to use
+calls to be used instead\&. (On Windows, the default is to use
pthread
-calls and the option has no effect.) This option was added in MySQL 5.1.6 and removed in 5.1.18.
-.TP 3n
-\(bu
+calls and the option has no effect\&.) This option was added in MySQL 5\&.1\&.6 and removed in 5\&.1\&.18\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: user option
+.\" user option: mysqlslap
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: verbose option
+.\" verbose option: mysqlslap
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does. This option can be used multiple times to increase the amount of information.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&. This option can be used multiple times to increase the amount of information\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqlslap: version option
+.\" version option: mysqlslap
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/mysqltest.1'
--- a/man/mysqltest.1 2009-05-25 09:59:47 +0000
+++ b/man/mysqltest.1 2009-09-16 12:03:18 +0000
@@ -1,101 +1,182 @@
+'\" t
.\" Title: \fBmysqltest\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/27/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/08/2009
.\" Manual: MySQL Database System
.\" Source: MySQL
+.\" Language: English
.\"
-.TH "\fBMYSQLTEST\fR" "1" "03/27/2009" "MySQL" "MySQL Database System"
+.TH "\FBMYSQLTEST\FR" "1" "08/08/2009" "MySQL" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" mysqltest
+.\" mysqltest_embedded
.SH "NAME"
mysqltest \- program to run test cases
.br
mysqltest_embedded \- program to run embedded test cases
.SH "SYNOPSIS"
-.HP 30
+.HP \w'\fBmysqltest\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB]\fR\ 'u
\fBmysqltest [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB]\fR
-.HP 39
+.HP \w'\fBmysqltest_embedded\ [\fR\fB\fIoptions\fR\fR\fB]\ [\fR\fB\fIdb_name\fR\fR\fB]\fR\ 'u
\fBmysqltest_embedded [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
The
\fBmysqltest\fR
-program runs a test case against a MySQL server and optionally compares the output with a result file. This program reads input written in a special test language. Typically, you invoke
+program runs a test case against a MySQL server and optionally compares the output with a result file\&. This program reads input written in a special test language\&. Typically, you invoke
\fBmysqltest\fR
via
-\fBmysql\-test\-run.pl\fR
-rather than invoking it directly.
+\fBmysql\-test\-run\&.pl\fR
+rather than invoking it directly\&.
.PP
\fBmysqltest_embedded\fR
is similar but is built with support for the
libmysqld
-embedded server.
+embedded server\&.
.PP
Features of
\fBmysqltest\fR:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can send SQL statements to MySQL servers for execution
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can execute external shell commands
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can test whether the result from an SQL statement or shell command is as expected
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can connect to one or more standalone
\fBmysqld\fR
servers and switch between connections
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Can connect to an embedded server (libmysqld), if MySQL is compiled with support for
-libmysqld. (In this case, the executable is named
+libmysqld\&. (In this case, the executable is named
\fBmysqltest_embedded\fR
rather than
-\fBmysqltest\fR.)
-.sp
+\fBmysqltest\fR\&.)
.RE
.PP
By default,
\fBmysqltest\fR
-reads the test case on the standard input. To run
+reads the test case on the standard input\&. To run
\fBmysqltest\fR
this way, you normally invoke it like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBmysqltest [\fR\fB\fIoptions\fR\fR\fB] [\fR\fB\fIdb_name\fR\fR\fB] < \fR\fB\fItest_file\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
You can also name the test case file with a
\fB\-\-test\-file=\fR\fB\fIfile_name\fR\fR
-option.
+option\&.
.PP
The exit value from
\fBmysqltest\fR
-is 0 for success, 1 for failure, and 62 if it skips the test case (for example, if after checking some preconditions it decides not to run the test).
+is 0 for success, 1 for failure, and 62 if it skips the test case (for example, if after checking some preconditions it decides not to run the test)\&.
.PP
\fBmysqltest\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: help option
+.\" help option: mysqltest
\fB\-\-help\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: basedir option
+.\" basedir option: mysqltest
\fB\-\-basedir=\fR\fB\fIdir_name\fR\fR,
\fB\-b \fR\fB\fIdir_name\fR\fR
.sp
-The base directory for tests.
-.TP 3n
-\(bu
+The base directory for tests\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: big-test option
+.\" big-test option: mysqltest
\fB\-\-big\-test\fR,
\fB\-B\fR
.sp
@@ -103,197 +184,469 @@ Define the
\fBmysqltest\fR
variable
$BIG_TEST
-as 1. This option was removed in MySQL 4.1.23, 5.0.30, and 5.1.13.
-.TP 3n
-\(bu
+as 1\&. This option was removed in MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.13\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: character-sets-dir option
+.\" character-sets-dir option: mysqltest
\fB\-\-character\-sets\-dir=\fR\fB\fIpath\fR\fR
.sp
-The directory where character sets are installed. This option was added in MySQL 4.1.23, 5.0.32, and 5.1.13.
-.TP 3n
-\(bu
+The directory where character sets are installed\&. This option was added in MySQL 4\&.1\&.23, 5\&.0\&.32, and 5\&.1\&.13\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: compress option
+.\" compress option: mysqltest
\fB\-\-compress\fR,
\fB\-C\fR
.sp
-Compress all information sent between the client and the server if both support compression.
-.TP 3n
-\(bu
+Compress all information sent between the client and the server if both support compression\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: cursor-protocol option
+.\" cursor-protocol option: mysqltest
\fB\-\-cursor\-protocol\fR
.sp
Use cursors for prepared statements (implies
-\fB\-\-ps\-protocol\fR). This option was added in MySQL 5.0.19.
-.TP 3n
-\(bu
+\fB\-\-ps\-protocol\fR)\&. This option was added in MySQL 5\&.0\&.19\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: database option
+.\" database option: mysqltest
\fB\-\-database=\fR\fB\fIdb_name\fR\fR,
\fB\-D \fR\fB\fIdb_name\fR\fR
.sp
-The default database to use.
-.TP 3n
-\(bu
+The default database to use\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: debug option
+.\" debug option: mysqltest
\fB\-\-debug[=\fR\fB\fIdebug_options\fR\fR\fB]\fR,
\fB\-#[\fR\fB\fIdebug_options\fR\fR\fB]\fR
.sp
-Write a debugging log if MySQL is built with debugging support. The default
+Write a debugging log if MySQL is built with debugging support\&. The default
\fIdebug_options\fR
value is
-\'d:t:S:i:O,/tmp/mysqltest.trace'.
-.TP 3n
-\(bu
+\'d:t:S:i:O,/tmp/mysqltest\&.trace\'\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: debug-check option
+.\" debug-check option: mysqltest
\fB\-\-debug\-check\fR
.sp
-Print some debugging information when the program exits. This option was added in MySQL 5.1.21.
-.TP 3n
-\(bu
+Print some debugging information when the program exits\&. This option was added in MySQL 5\&.1\&.21\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: debug-info option
+.\" debug-info option: mysqltest
\fB\-\-debug\-info\fR
.sp
-Print debugging information and memory and CPU usage statistics when the program exits. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+Print debugging information and memory and CPU usage statistics when the program exits\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: host option
+.\" host option: mysqltest
\fB\-\-host=\fR\fB\fIhost_name\fR\fR,
\fB\-h \fR\fB\fIhost_name\fR\fR
.sp
-Connect to the MySQL server on the given host.
-.TP 3n
-\(bu
+Connect to the MySQL server on the given host\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: include option
+.\" include option: mysqltest
\fB\-\-include=\fR\fB\fIfile_name\fR\fR,
\fB\-i \fR\fB\fIfile_name\fR\fR
.sp
-Include the contents of the given file before processing the contents of the test file. The included file should have the same format as other
+Include the contents of the given file before processing the contents of the test file\&. The included file should have the same format as other
\fBmysqltest\fR
-test files. This option has the same effect as putting a
+test files\&. This option has the same effect as putting a
\-\-source \fIfile_name\fR
-command as the first line of the test file. This option was added in MySQL 4.1.23, 5.0.30, and 5.1.7.
-.TP 3n
-\(bu
+command as the first line of the test file\&. This option was added in MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.7\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: logdir option
+.\" logdir option: mysqltest
\fB\-\-logdir=\fR\fB\fIdir_name\fR\fR
.sp
-The directory to use for log files. This option was added in MySQL 5.1.14.
-.TP 3n
-\(bu
+The directory to use for log files\&. This option was added in MySQL 5\&.1\&.14\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: mark-progress option
+.\" mark-progress option: mysqltest
\fB\-\-mark\-progress\fR
.sp
Write the line number and elapsed time to
-\fI\fItest_file\fR\fR\fI.progress\fR. This option was added in MySQL 4.1.23, 5.0.30, and 5.1.12.
-.TP 3n
-\(bu
+\fItest_file\fR\&.progress\&. This option was added in MySQL 4\&.1\&.23, 5\&.0\&.30, and 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: max-connect-retries option
+.\" max-connect-retries option: mysqltest
\fB\-\-max\-connect\-retries=\fR\fB\fInum\fR\fR
.sp
-The maximum number of connection attempts when connecting to server. This option was added in MySQL 4.1.23, 5.0.23, and 5.1.11.
-.TP 3n
-\(bu
+The maximum number of connection attempts when connecting to server\&. This option was added in MySQL 4\&.1\&.23, 5\&.0\&.23, and 5\&.1\&.11\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: no-defaults option
+.\" no-defaults option: mysqltest
\fB\-\-no\-defaults\fR
.sp
-Do not read default options from any option files.
-.TP 3n
-\(bu
+Do not read default options from any option files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: password option
+.\" password option: mysqltest
\fB\-\-password[=\fR\fB\fIpassword\fR\fR\fB]\fR,
\fB\-p[\fR\fB\fIpassword\fR\fR\fB]\fR
.sp
-The password to use when connecting to the server. If you use the short option form (\fB\-p\fR), you
+The password to use when connecting to the server\&. If you use the short option form (\fB\-p\fR), you
\fIcannot\fR
-have a space between the option and the password. If you omit the
+have a space between the option and the password\&. If you omit the
\fIpassword\fR
value following the
\fB\-\-password\fR
or
\fB\-p\fR
-option on the command line, you are prompted for one.
-.TP 3n
-\(bu
+option on the command line, you are prompted for one\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: port option
+.\" port option: mysqltest
\fB\-\-port=\fR\fB\fIport_num\fR\fR,
\fB\-P \fR\fB\fIport_num\fR\fR
.sp
-The TCP/IP port number to use for the connection.
-.TP 3n
-\(bu
+The TCP/IP port number to use for the connection\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: ps-protocol option
+.\" ps-protocol option: mysqltest
\fB\-\-ps\-protocol\fR
.sp
-Use the prepared\-statement protocol for communication.
-.TP 3n
-\(bu
+Use the prepared\-statement protocol for communication\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: quiet option
+.\" quiet option: mysqltest
\fB\-\-quiet\fR
.sp
-Suppress all normal output. This is a synonym for
-\fB\-\-silent\fR.
-.TP 3n
-\(bu
+Suppress all normal output\&. This is a synonym for
+.\" mysqltest: silent option
+.\" silent option: mysqltest
+\fB\-\-silent\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: record option
+.\" record option: mysqltest
\fB\-\-record\fR,
\fB\-r\fR
.sp
Record the output that results from running the test file into the file named by the
\fB\-\-result\-file\fR
-option, if that option is given.
-.TP 3n
-\(bu
+option, if that option is given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: result-file option
+.\" result-file option: mysqltest
\fB\-\-result\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-R \fR\fB\fIfile_name\fR\fR
.sp
-This option specifies the file for test case expected results.
+This option specifies the file for test case expected results\&.
\fB\-\-result\-file\fR, together with
\fB\-\-record\fR, determines how
\fBmysqltest\fR
treats the test actual and expected results for a test case:
-.RS 3n
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
If the test produces no results,
\fBmysqltest\fR
-exits with an error message to that effect.
-.TP 3n
-\(bu
+exits with an error message to that effect\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
Otherwise, if
\fB\-\-result\-file\fR
is not given,
\fBmysqltest\fR
-sends test results to the standard output.
-.TP 3n
-\(bu
+sends test results to the standard output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
With
\fB\-\-result\-file\fR
but not
\fB\-\-record\fR,
\fBmysqltest\fR
-reads the expected results from the given file and compares them with the actual results. If the results do not match,
+reads the expected results from the given file and compares them with the actual results\&. If the results do not match,
\fBmysqltest\fR
writes a
-\fI.reject\fR
-file in the same directory as the result file and exits with an error.
-.TP 3n
-\(bu
+\&.reject
+file in the same directory as the result file and exits with an error\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
With both
\fB\-\-result\-file\fR
and
\fB\-\-record\fR,
\fBmysqltest\fR
-updates the given file by writing the actual test results to it.
+updates the given file by writing the actual test results to it\&.
+.RE
.RE
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: server-arg option
+.\" server-arg option: mysqltest
\fB\-\-server\-arg=\fR\fB\fIvalue\fR\fR,
\fB\-A \fR\fB\fIvalue\fR\fR
.sp
-Pass the argument as an argument to the embedded server. For example,
+Pass the argument as an argument to the embedded server\&. For example,
\fB\-\-server\-arg=\-\-tmpdir=/tmp\fR
or
-\fB\-\-server\-arg=\-\-core\fR. Up to 64 arguments can be given.
-.TP 3n
-\(bu
+\fB\-\-server\-arg=\-\-core\fR\&. Up to 64 arguments can be given\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: server-file option
+.\" server-file option: mysqltest
\fB\-\-server\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-F \fR\fB\fIfile_name\fR\fR
.sp
-Read arguments for the embedded server from the given file. The file should contain one argument per line.
-.TP 3n
-\(bu
+Read arguments for the embedded server from the given file\&. The file should contain one argument per line\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: silent option
+.\" silent option: mysqltest
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Suppress all normal output.
-.TP 3n
-\(bu
+Suppress all normal output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: skip-safemalloc option
+.\" skip-safemalloc option: mysqltest
\fB\-\-skip\-safemalloc\fR
.sp
-Do not use memory allocation checking.
-.TP 3n
-\(bu
+Do not use memory allocation checking\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: sleep option
+.\" sleep option: mysqltest
\fB\-\-sleep=\fR\fB\fInum\fR\fR,
\fB\-T \fR\fB\fInum\fR\fR
.sp
@@ -301,83 +654,176 @@ Cause all
sleep
commands in the test case file to sleep
\fInum\fR
-seconds. This option does not affect
+seconds\&. This option does not affect
real_sleep
-commands.
+commands\&.
.sp
-As of MySQL 5.0.23, an option value of 0 can be used, which effectively disables
+As of MySQL 5\&.0\&.23, an option value of 0 can be used, which effectively disables
sleep
-commands in the test case.
-.TP 3n
-\(bu
+commands in the test case\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: socket option
+.\" socket option: mysqltest
\fB\-\-socket=\fR\fB\fIpath\fR\fR,
\fB\-S \fR\fB\fIpath\fR\fR
.sp
The socket file to use when connecting to
localhost
-(which is the default host).
-.TP 3n
-\(bu
+(which is the default host)\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: sp-protocol option
+.\" sp-protocol option: mysqltest
\fB\-\-sp\-protocol\fR
.sp
-Execute DML statements within a stored procedure. For every DML statement,
+Execute DML statements within a stored procedure\&. For every DML statement,
\fBmysqltest\fR
-creates and invokes a stored procedure that executes the statement rather than executing the statement directly. This option was added in MySQL 5.0.19.
-.TP 3n
-\(bu
+creates and invokes a stored procedure that executes the statement rather than executing the statement directly\&. This option was added in MySQL 5\&.0\&.19\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: test-file option
+.\" test-file option: mysqltest
\fB\-\-test\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-x \fR\fB\fIfile_name\fR\fR
.sp
-Read test input from this file. The default is to read from the standard input.
-.TP 3n
-\(bu
+Read test input from this file\&. The default is to read from the standard input\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: timer-file option
+.\" timer-file option: mysqltest
\fB\-\-timer\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-m \fR\fB\fIfile_name\fR\fR
.sp
-The file where the timing in microseconds is written.
-.TP 3n
-\(bu
+The file where the timing in microseconds is written\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: tmpdir option
+.\" tmpdir option: mysqltest
\fB\-\-tmpdir=\fR\fB\fIdir_name\fR\fR,
\fB\-t \fR\fB\fIdir_name\fR\fR
.sp
-The temporary directory where socket files are put.
-.TP 3n
-\(bu
+The temporary directory where socket files are put\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: user option
+.\" user option: mysqltest
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
\fB\-u \fR\fB\fIuser_name\fR\fR
.sp
-The MySQL user name to use when connecting to the server.
-.TP 3n
-\(bu
+The MySQL user name to use when connecting to the server\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: verbose option
+.\" verbose option: mysqltest
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print out more information what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print out more information what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: version option
+.\" version option: mysqltest
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
-.TP 3n
-\(bu
+Display version information and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" mysqltest: view-protocol option
+.\" view-protocol option: mysqltest
\fB\-\-view\-protocol\fR
.sp
Every
SELECT
-statement is wrapped inside a view. This option was added in MySQL 5.0.19.
+statement is wrapped inside a view\&. This option was added in MySQL 5\&.0\&.19\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/ndbd.8'
--- a/man/ndbd.8 2009-05-25 09:59:47 +0000
+++ b/man/ndbd.8 2009-09-16 12:03:18 +0000
@@ -1,174 +1,841 @@
+'\" t
.\" Title: \fBndbd\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBNDBD\fR" "8" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBNDBD\FR" "8" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" ndbd
+.\" MySQL Cluster: ndbd
+.\" MySQL Cluster: data nodes
+.\" data nodes (MySQL Cluster)
+.\" storage nodes - see data nodes, ndbd
.SH "NAME"
-ndbd \- the storage engine node process
+ndbd \- the MySQL Cluster data node daemon
.SH "SYNOPSIS"
-.HP 13
+.HP \w'\fBndbd\ \fR\fB\fIoptions\fR\fR\ 'u
\fBndbd \fR\fB\fIoptions\fR\fR
.SH "DESCRIPTION"
.PP
\fBndbd\fR
-is the process that is used to handle all the data in tables using the NDB Cluster storage engine. This is the process that empowers a data node to accomplish distributed transaction handling, node recovery, checkpointing to disk, online backup, and related tasks.
+is the process that is used to handle all the data in tables using the NDB Cluster storage engine\&. This is the process that empowers a data node to accomplish distributed transaction handling, node recovery, checkpointing to disk, online backup, and related tasks\&.
.PP
In a MySQL Cluster, a set of
\fBndbd\fR
-processes cooperate in handling data. These processes can execute on the same computer (host) or on different computers. The correspondences between data nodes and Cluster hosts is completely configurable.
+processes cooperate in handling data\&. These processes can execute on the same computer (host) or on different computers\&. The correspondences between data nodes and Cluster hosts is completely configurable\&.
+.\" MySQL Cluster: administration
+.\" MySQL Cluster: commands
+.\" command options (MySQL Cluster): ndbd
+.\" MySQL Cluster: ndbd process
+.PP
+The following list describes command options specific to the MySQL Cluster data node program
+\fBndbd\fR\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBNote\fR
+.ps -1
+.br
+.PP
+All of these options also apply to the multi\-threaded version of this program \(em
+\fBndbmtd\fR, which is available in MySQL Cluster NDB 7\&.0 \(em and you may substitute
+\(lq\fBndbmtd\fR\(rq
+for
+\(lq\fBndbd\fR\(rq
+wherever the latter occurs in this section\&.
+.sp .5v
+.RE
+.PP
+For options common to all
+NDBCLUSTER
+programs, see
+Section\ \&17.6.2, \(lqOptions Common to MySQL Cluster Programs\(rq\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-\-bind\-address\fR
+.TS
+allbox tab(:);
+l l
+l l
+l l.
+T{
+\fBVersion Introduced\fR
+T}:T{
+5\&.1\&.12
+T}
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-bind\-address=name
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+string
+T}
+T{
+\fBDefault\fR
+T}:T{
+T}
+.TE
+.sp 1
+Causes
+\fBndbd\fR
+to bind to a specific network interface (host name or IP address)\&. This option has no default value\&.
+.sp
+This option was added in MySQL 5\&.1\&.12\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-\-daemon\fR,
+\fB\-d\fR
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-daemon
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+TRUE
+T}
+.TE
+.sp 1
+Instructs
+\fBndbd\fR
+to execute as a daemon process\&. This is the default behavior\&.
+\fB\-\-nodaemon\fR
+can be used to prevent the process from running as a daemon\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --initial option (ndbd)
+.\" --initial option (ndbmtd)
+\fB\-\-initial\fR
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-initial
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+Instructs
+\fBndbd\fR
+to perform an initial start\&. An initial start erases any files created for recovery purposes by earlier instances of
+\fBndbd\fR\&. It also re\-creates recovery log files\&. Note that on some operating systems this process can take a substantial amount of time\&.
+.sp
+An
+\fB\-\-initial\fR
+start is to be used
+\fIonly\fR
+when starting the
+\fBndbd\fR
+process under very special circumstances; this is because this option causes all files to be removed from the Cluster file system and all redo log files to be re\-created\&. These circumstances are listed here:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+When performing a software upgrade which has changed the contents of any files\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+When restarting the node with a new version of
+\fBndbd\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+As a measure of last resort when for some reason the node restart or system restart repeatedly fails\&. In this case, be aware that this node can no longer be used to restore data due to the destruction of the data files\&.
+.RE
+.RS 4
+Use of this option prevents the
+StartPartialTimeout
+and
+StartPartitionedTimeout
+configuration parameters from having any effect\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBImportant\fR
+.ps -1
+.br
+This option does
+\fInot\fR
+affect either of the following:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Backup files that have already been created by the affected node
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+MySQL Cluster Disk Data files (see
+Section\ \&17.10, \(lqMySQL Cluster Disk Data Tables\(rq)\&.
+.RE
+.RS 4
+.sp .5v
+.RE
+It is permissible to use this option when starting the cluster for the very first time (that is, before any data node files have been created); however, it is
+\fInot\fR
+necessary to do so\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --initial-start option (ndbd)
+.\" --initial-start option (ndbmtd)
+\fB\-\-initial\-start\fR
+.TS
+allbox tab(:);
+l l
+l l
+l l.
+T{
+\fBVersion Introduced\fR
+T}:T{
+5\&.1\&.11
+T}
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-initial\-start
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+This option is used when performing a partial initial start of the cluster\&. Each node should be started with this option, as well as
+\fB\-\-nowait\-nodes\fR\&.
+.sp
+For example, suppose you have a 4\-node cluster whose data nodes have the IDs 2, 3, 4, and 5, and you wish to perform a partial initial start using only nodes 2, 4, and 5 \(em that is, omitting node 3:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ndbd \-\-ndbd\-nodeid=2 \-\-nowait\-nodes=3 \-\-initial\-start
+ndbd \-\-ndbd\-nodeid=4 \-\-nowait\-nodes=3 \-\-initial\-start
+ndbd \-\-ndbd\-nodeid=5 \-\-nowait\-nodes=3 \-\-initial\-start
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+This option was added in MySQL 5\&.1\&.11\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBImportant\fR
+.ps -1
+.br
+Prior to MySQL 5\&.1\&.19, it was not possible to perform DDL operations involving Disk Data tables on a partially started cluster\&. (See
+\m[blue]\fBBug#24631\fR\m[]\&\s-2\u[1]\d\s+2\&.)
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --nowait-nodes option (ndbd)
+.\" --nowait-nodes option (ndbmtd)
+\fB\-\-nowait\-nodes=\fR\fB\fInode_id_1\fR\fR\fB[, \fR\fB\fInode_id_2\fR\fR\fB[, \&.\&.\&.]]\fR
+.TS
+allbox tab(:);
+l l
+l l
+l l.
+T{
+\fBVersion Introduced\fR
+T}:T{
+5\&.1\&.11
+T}
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-nowait\-nodes=list
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+string
+T}
+T{
+\fBDefault\fR
+T}:T{
+T}
+.TE
+.sp 1
+This option takes a list of data nodes which for which the cluster will not wait for before starting\&.
+.sp
+This can be used to start the cluster in a partitioned state\&. For example, to start the cluster with only half of the data nodes (nodes 2, 3, 4, and 5) running in a 4\-node cluster, you can start each
+\fBndbd\fR
+process with
+\fB\-\-nowait\-nodes=3,5\fR\&. In this case, the cluster starts as soon as nodes 2 and 4 connect, and does
+\fInot\fR
+wait
+StartPartitionedTimeout
+milliseconds for nodes 3 and 5 to connect as it would otherwise\&.
+.sp
+If you wanted to start up the same cluster as in the previous example without one
+\fBndbd\fR
+\(em say, for example, that the host machine for node 3 has suffered a hardware failure \(em then start nodes 2, 4, and 5 with
+\fB\-\-nowait\-nodes=3\fR\&. Then the cluster will start as soon as nodes 2, 4, and 5 connect and will not wait for node 3 to start\&.
+.sp
+This option was added in MySQL 5\&.1\&.9\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --nodaemon option (ndbd)
+.\" --nodaemon option (ndbmtd)
+\fB\-\-nodaemon\fR
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-nodaemon
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+Instructs
+\fBndbd\fR
+not to start as a daemon process\&. This is useful when
+\fBndbd\fR
+is being debugged and you want output to be redirected to the screen\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" --nostart option (ndbd)
+.\" -n option (ndbd)
+.\" --nostart option (ndbmtd)
+.\" -n option (ndbmtd)
+\fB\-\-nostart\fR,
+\fB\-n\fR
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-\-nostart
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+Instructs
+\fBndbd\fR
+not to start automatically\&. When this option is used,
+\fBndbd\fR
+connects to the management server, obtains configuration data from it, and initializes communication objects\&. However, it does not actually start the execution engine until specifically requested to do so by the management server\&. This can be accomplished by issuing the proper
+START
+command in the management client (see
+Section\ \&17.7.2, \(lqCommands in the MySQL Cluster Management Client\(rq)\&.
+.RE
+.\" MySQL Cluster: log files
+.\" log files (MySQL Cluster)
.PP
\fBndbd\fR
generates a set of log files which are placed in the directory specified by
DataDir
in the
-\fIconfig.ini\fR
-configuration file.
+config\&.ini
+configuration file\&.
.PP
-These log files are listed below.
+These log files are listed below\&.
\fInode_id\fR
-is the node's unique identifier. Note that
+is the node\'s unique identifier\&. Note that
\fInode_id\fR
-represents the node's unique identifier. For example,
-\fIndb_2_error.log\fR
+represents the node\'s unique identifier\&. For example,
+ndb_2_error\&.log
is the error log generated by the data node whose node ID is
-2.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_error.log\fR
+2\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" MySQL Cluster: error logs
+.\" error logs (MySQL Cluster)
+ndb_\fInode_id\fR_error\&.log
is a file containing records of all crashes which the referenced
\fBndbd\fR
-process has encountered. Each record in this file contains a brief error string and a reference to a trace file for this crash. A typical entry in this file might appear as shown here:
+process has encountered\&. Each record in this file contains a brief error string and a reference to a trace file for this crash\&. A typical entry in this file might appear as shown here:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
Date/Time: Saturday 30 July 2004 \- 00:20:01
Type of error: error
Message: Internal program error (failed ndbrequire)
Fault ID: 2341
-Problem data: DbtupFixAlloc.cpp
+Problem data: DbtupFixAlloc\&.cpp
Object of reference: DBTUP (Line: 173)
ProgramName: NDB Kernel
ProcessID: 14909
-TraceFile: ndb_2_trace.log.2
+TraceFile: ndb_2_trace\&.log\&.2
***EOM***
.fi
+.if n \{\
.RE
+.\}
+.sp
Listings of possible
\fBndbd\fR
exit codes and messages generated when a data node process shuts down prematurely can be found in
-[1]\&\fIndbd Error Messages\fR.
+\m[blue]\fBndbd Error Messages\fR\m[]\&\s-2\u[2]\d\s+2\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBImportant\fR
+.ps -1
+.br
\fIThe last entry in the error log file is not necessarily the newest one\fR
-(nor is it likely to be). Entries in the error log are
+(nor is it likely to be)\&. Entries in the error log are
\fInot\fR
listed in chronological order; rather, they correspond to the order of the trace files as determined in the
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_trace.log.next\fR
-file (see below). Error log entries are thus overwritten in a cyclical and not sequential fashion.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_trace.log.\fR\fI\fItrace_id\fR\fR
-is a trace file describing exactly what happened just before the error occurred. This information is useful for analysis by the MySQL Cluster development team.
+ndb_\fInode_id\fR_trace\&.log\&.next
+file (see below)\&. Error log entries are thus overwritten in a cyclical and not sequential fashion\&.
+.sp .5v
+.RE
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" MySQL Cluster: trace files
+.\" trace files (MySQL Cluster)
+ndb_\fInode_id\fR_trace\&.log\&.\fItrace_id\fR
+is a trace file describing exactly what happened just before the error occurred\&. This information is useful for analysis by the MySQL Cluster development team\&.
.sp
-It is possible to configure the number of these trace files that will be created before old files are overwritten.
+It is possible to configure the number of these trace files that will be created before old files are overwritten\&.
\fItrace_id\fR
-is a number which is incremented for each successive trace file.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_trace.log.next\fR
-is the file that keeps track of the next trace file number to be assigned.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_out.log\fR
+is a number which is incremented for each successive trace file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+ndb_\fInode_id\fR_trace\&.log\&.next
+is the file that keeps track of the next trace file number to be assigned\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+ndb_\fInode_id\fR_out\&.log
is a file containing any data output by the
\fBndbd\fR
-process. This file is created only if
+process\&. This file is created only if
\fBndbd\fR
-is started as a daemon, which is the default behavior.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI.pid\fR
+is started as a daemon, which is the default behavior\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+ndb_\fInode_id\fR\&.pid
is a file containing the process ID of the
\fBndbd\fR
-process when started as a daemon. It also functions as a lock file to avoid the starting of nodes with the same identifier.
-.TP 3n
-\(bu
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_signal.log\fR
+process when started as a daemon\&. It also functions as a lock file to avoid the starting of nodes with the same identifier\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+ndb_\fInode_id\fR_signal\&.log
is a file used only in debug versions of
\fBndbd\fR, where it is possible to trace all incoming, outgoing, and internal messages with their data in the
\fBndbd\fR
-process.
-.sp
+process\&.
.RE
.PP
It is recommended not to use a directory mounted through NFS because in some environments this can cause problems whereby the lock on the
-\fI.pid\fR
-file remains in effect even after the process has terminated.
+\&.pid
+file remains in effect even after the process has terminated\&.
.PP
To start
-\fBndbd\fR, it may also be necessary to specify the host name of the management server and the port on which it is listening. Optionally, one may also specify the node ID that the process is to use.
+\fBndbd\fR, it may also be necessary to specify the host name of the management server and the port on which it is listening\&. Optionally, one may also specify the node ID that the process is to use\&.
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBndbd \-\-connect\-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"\fR
+shell> \fBndbd \-\-connect\-string="nodeid=2;host=ndb_mgmd\&.mysql\&.com:1186"\fR
.fi
+.if n \{\
.RE
+.\}
.PP
See
-Section\ 17.3.4.3, \(lqThe MySQL Cluster Connectstring\(rq, for additional information about this issue.
-Section\ 17.6.2, \(lqCommand Options for MySQL Cluster Processes\(rq, describes other options for
-\fBndbd\fR.
+Section\ \&17.3.4.3, \(lqThe MySQL Cluster Connectstring\(rq, for additional information about this issue\&.
+\fBndbd\fR(8), describes other options for
+\fBndbd\fR\&.
.PP
When
\fBndbd\fR
-starts, it actually initiates two processes. The first of these is called the
+starts, it actually initiates two processes\&. The first of these is called the
\(lqangel process\(rq; its only job is to discover when the execution process has been completed, and then to restart the
\fBndbd\fR
-process if it is configured to do so. Thus, if you attempt to kill
+process if it is configured to do so\&. Thus, if you attempt to kill
\fBndbd\fR
via the Unix
\fBkill\fR
-command, it is necessary to kill both processes, beginning with the angel process. The preferred method of terminating an
+command, it is necessary to kill both processes, beginning with the angel process\&. The preferred method of terminating an
\fBndbd\fR
-process is to use the management client and stop the process from there.
+process is to use the management client and stop the process from there\&.
.PP
-The execution process uses one thread for reading, writing, and scanning data, as well as all other activities. This thread is implemented asynchronously so that it can easily handle thousands of concurrent actions. In addition, a watch\-dog thread supervises the execution thread to make sure that it does not hang in an endless loop. A pool of threads handles file I/O, with each thread able to handle one open file. Threads can also be used for transporter connections by the transporters in the
+The execution process uses one thread for reading, writing, and scanning data, as well as all other activities\&. This thread is implemented asynchronously so that it can easily handle thousands of concurrent actions\&. In addition, a watch\-dog thread supervises the execution thread to make sure that it does not hang in an endless loop\&. A pool of threads handles file I/O, with each thread able to handle one open file\&. Threads can also be used for transporter connections by the transporters in the
\fBndbd\fR
-process. In a multi\-processor system performing a large number of operations (including updates), the
+process\&. In a multi\-processor system performing a large number of operations (including updates), the
\fBndbd\fR
-process can consume up to 2 CPUs if permitted to do so.
+process can consume up to 2 CPUs if permitted to do so\&.
.PP
For a machine with many CPUs it is possible to use several
\fBndbd\fR
-processes which belong to different node groups; however, such a configuration is still considered experimental and is not supported for MySQL 5.1 in a production setting. See
-Section\ 17.13, \(lqKnown Limitations of MySQL Cluster\(rq.
+processes which belong to different node groups; however, such a configuration is still considered experimental and is not supported for MySQL 5\&.1 in a production setting\&. See
+Section\ \&17.12, \(lqKnown Limitations of MySQL Cluster\(rq\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ ndbd Error Messages
-\%http://dev.mysql.com/doc/ndbapi/en/ndbd\-error\-messages.html
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#24631
+.RS 4
+\%http://bugs.mysql.com/24631
+.RE
+.IP " 2." 4
+ndbd Error Messages
+.RS 4
+\%http://dev.mysql.com/doc/ndbapi/en/ndbd-error-messages.html
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/ndbd_redo_log_reader.1'
--- a/man/ndbd_redo_log_reader.1 2009-05-25 09:59:47 +0000
+++ b/man/ndbd_redo_log_reader.1 2009-09-16 12:03:18 +0000
@@ -1,57 +1,162 @@
+'\" t
.\" Title: \fBndbd_redo_log_reader\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBNDBD_REDO_LOG_REA" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBNDBD_REDO_LOG_REA" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" ndbd_redo_log_reader
.SH "NAME"
ndbd_redo_log_reader \- check and print content of cluster redo log
.SH "SYNOPSIS"
-.HP 41
+.HP \w'\fBndbd_redo_log_reader\ \fR\fB\fIfile_name\fR\fR\fB\ [\fR\fB\fIoptions\fR\fR\fB]\fR\ 'u
\fBndbd_redo_log_reader \fR\fB\fIfile_name\fR\fR\fB [\fR\fB\fIoptions\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
-Reads a redo log file, checking it for errors, printing its contents in a human\-readable format, or both.
+Reads a redo log file, checking it for errors, printing its contents in a human\-readable format, or both\&.
\fBndbd_redo_log_reader\fR
-is intended for use primarily by MySQL developers and support personnel in debugging and diagnosing problems.
+is intended for use primarily by MySQL developers and support personnel in debugging and diagnosing problems\&.
.PP
-This utility was made available as part of default builds beginning with MySQL Cluster NDB 6.1.3. It remains under development, and its syntax and behavior are subject to change in future releases. For this reason, it should be considered experimental at this time.
+This utility was made available as part of default builds beginning with MySQL Cluster NDB 6\&.1\&.3\&. It remains under development, and its syntax and behavior are subject to change in future releases\&. For this reason, it should be considered experimental at this time\&.
.PP
The C++ source files for
\fBndbd_redo_log_reader\fR
can be found in the directory
-\fI/storage/ndb/src/kernel/blocks/dblqh/redoLogReader\fR.
+/storage/ndb/src/kernel/blocks/dblqh/redoLogReader\&.
.PP
\fBUsage\fR:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
ndbd_redo_log_reader \fIfile_name\fR [\fIoptions\fR]
.fi
+.if n \{\
.RE
+.\}
.PP
\fIfile_name\fR
-is the name of a cluster REDO log file. REDO log files are located in the numbered directories under the data node's data directory (DataDir); the path under this directory to the REDO log files matches the pattern
-\fIndb_\fR\fI\fI#\fR\fR\fI_fs/D\fR\fI\fI#\fR\fR\fI/LCP/\fR\fI\fI#\fR\fR\fI/T\fR\fI\fI#\fR\fR\fIF\fR\fI\fI#\fR\fR\fI.Data\fR. In each case, the
+is the name of a cluster REDO log file\&. REDO log files are located in the numbered directories under the data node\'s data directory (DataDir); the path under this directory to the REDO log files matches the pattern
+ndb_\fI#\fR_fs/D\fI#\fR/LCP/\fI#\fR/T\fI#\fRF\fI#\fR\&.Data\&. In each case, the
\fI#\fR
-represents a number (not necessarily the same number). For more information, see
-[1]\&\fICluster Data Node FileSystemDir Files\fR.
+represents a number (not necessarily the same number)\&. For more information, see
+\m[blue]\fBCluster Data Node FileSystemDir Files\fR\m[]\&\s-2\u[1]\d\s+2\&.
.PP
\fBAdditional Options\fR:
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-noprint
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBCommand Line Format\fR
+T}:T{
+\-nocheck
+T}
+T{
+\fBPermitted Values \fR
+T}:T{
+[\fInested\ table\fR]*
+T}
+.TE
+.sp 1
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.B *[nested\ table]
+.TS
+allbox tab(:);
+l l
+l l.
+T{
+\fBType\fR
+T}:T{
+boolean
+T}
+T{
+\fBDefault\fR
+T}:T{
+FALSE
+T}
+.TE
+.sp 1
.PP
The name of the file to be read may be followed by one or more of the options listed here:
-.TP 3n
-\(bu
-\fB\-noprint\fR: Do not print the contents of the log file.
-.TP 3n
-\(bu
-\fB\-nocheck\fR: Do not check the log filre for errors.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-noprint\fR: Do not print the contents of the log file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+\fB\-nocheck\fR: Do not check the log file for errors\&.
+.RE
.sp
.RE
.PP
@@ -63,23 +168,27 @@ and
NDB
utilities that are intended to be run on a management server host or to connect to a management server)
\fBndbd_redo_log_reader\fR
-must be run on a cluster data node, since it accesses the data node file system directly. Because it does not make use of the management server, this utility can be used when the management server is not running, and even when the cluster has been completely shut down.
+must be run on a cluster data node, since it accesses the data node file system directly\&. Because it does not make use of the management server, this utility can be used when the management server is not running, and even when the cluster has been completely shut down\&.
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ Cluster Data Node FileSystemDir Files
-\%http://dev.mysql.com/doc/ndbapi/en/ndb\-internals\-ndbd\-filesystem.html#ndb\-internals\-ndbd\-filesystemdir\-files
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Cluster Data Node FileSystemDir Files
+.RS 4
+\%http://dev.mysql.com/doc/ndbapi/en/ndb-internals-ndbd-filesystem.html#ndb-internals-ndbd-filesystemdir-files
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/ndbmtd.8'
--- a/man/ndbmtd.8 2009-05-25 09:59:47 +0000
+++ b/man/ndbmtd.8 2009-09-16 12:03:18 +0000
@@ -1,19 +1,32 @@
+'\" t
.\" Title: \fBndbmtd\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBNDBMTD\fR" "8" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBNDBMTD\FR" "8" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" ndbmtd
+.\" MySQL Cluster: ndbmtd
+.\" MySQL Cluster: data nodes
+.\" data nodes (MySQL Cluster)
+.\" storage nodes - see data nodes, ndbd, ndbmtd
.SH "NAME"
-ndbmtd \- the MySQL Cluster storage engine node process (multi\-threaded version)
+ndbmtd \- the MySQL Cluster data node daemon (multi\-threaded version)
.SH "SYNOPSIS"
-.HP 15
+.HP \w'\fBndbmtd\ \fR\fB\fIoptions\fR\fR\ 'u
\fBndbmtd \fR\fB\fIoptions\fR\fR
.SH "DESCRIPTION"
.PP
@@ -21,84 +34,121 @@ ndbmtd \- the MySQL Cluster storage engi
is a multi\-threaded version of
\fBndbd\fR, the process that is used to handle all the data in tables using the
NDBCLUSTER
-storage engine.
+storage engine\&.
\fBndbmtd\fR
-is intended for use on host computers having multiple CPU cores. Except where otherwise noted,
+is intended for use on host computers having multiple CPU cores\&. Except where otherwise noted,
\fBndbmtd\fR
functions in the same way as
\fBndbd\fR; therefore, in this section, we concentrate on the ways in which
\fBndbmtd\fR
differs from
\fBndbd\fR, and you should consult
-\fBndbd\fR(8), for additional information about running MySQL Cluster data nodes that apply to both the single\-threaded and multi\-threaded versions of the data node process.
+\fBndbd\fR(8), for additional information about running MySQL Cluster data nodes that apply to both the single\-threaded and multi\-threaded versions of the data node process\&.
.PP
Command\-line options and configuration parameters used with
\fBndbd\fR
also apply to
-\fBndbmtd\fR. For more information about these options and parameters, see
-Section\ 17.6.2.1, \(lqCommand Options for \fBndbd\fR and \fBndbmtd\fR\(rq, and
-Section\ 17.3.4.6, \(lqDefining MySQL Cluster Data Nodes\(rq, respectively.
+\fBndbmtd\fR\&. For more information about these options and parameters, see
+Section\ \&17.6.3.2, \(lqProgram Options for ndbd and ndbmtd\(rq, and
+Section\ \&17.3.4.6, \(lqDefining MySQL Cluster Data Nodes\(rq, respectively\&.
.PP
\fBndbmtd\fR
is also file system\-compatible with
-\fBndbd\fR. In other words, a data node running
+\fBndbd\fR\&. In other words, a data node running
\fBndbd\fR
can be stopped, the binary replaced with
-\fBndbmtd\fR, and then restarted without any loss of data. (However, when doing this, you must make sure that
+\fBndbmtd\fR, and then restarted without any loss of data\&. (However, when doing this, you must make sure that
MaxNoOfExecutionThreads
is set to an apppriate value before restarting the node if you wish for
\fBndbmtd\fR
-to run in multi\-threaded fashion.) Similarly, an
+to run in multi\-threaded fashion\&.) Similarly, an
\fBndbmtd\fR
binary can be replaced with
\fBndbd\fR
simply by stopping the node and then starting
\fBndbd\fR
-in place of the multi\-threaded binary. It is not necessary when switching between the two to start the data node binary using
-\fB\-\-initial\fR.
+in place of the multi\-threaded binary\&. It is not necessary when switching between the two to start the data node binary using
+\fB\-\-initial\fR\&.
+.if n \{\
+.sp
+.\}
+.RS 4
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBImportant\fR
+.ps -1
+.br
+.PP
+We do not currently recommend using
+\fBndbmtd\fR
+with MySQL Cluster Disk Data tables in production, due to known issues which we are working to fix in a future MySQL Cluster release\&. (\m[blue]\fBBug#41915\fR\m[]\&\s-2\u[1]\d\s+2,
+\m[blue]\fBBug#44915\fR\m[]\&\s-2\u[2]\d\s+2)
+.sp .5v
+.RE
.PP
Using
\fBndbmtd\fR
differs from using
\fBndbd\fR
in two key respects:
-.TP 3n
-1.
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 1.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 1." 4.2
+.\}
You must set an appropriate value for the
MaxNoOfExecutionThreads
configuration parameter in the
-\fIconfig.ini\fR
-file. If you do not do so,
+config\&.ini
+file\&. If you do not do so,
\fBndbmtd\fR
runs in single\-threaded mode \(em that is, it behaves like
-\fBndbd\fR.
-.TP 3n
-2.
+\fBndbd\fR\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04' 2.\h'+01'\c
+.\}
+.el \{\
+.sp -1
+.IP " 2." 4.2
+.\}
Trace files are generated by critical errors in
\fBndbmtd\fR
processes in a somewhat different fashion from how these are generated by
\fBndbd\fR
-failures.
-.sp
+failures\&.
.RE
.PP
-These differences are discussed in more detail in the next few paragraphs.
+These differences are discussed in more detail in the next few paragraphs\&.
+.\" ndbmtd: MaxNoOfExecutionThreads
+.\" MaxNoOfExecutionThreads: ndbmtd
+.\" ndbmtd: trace files
+.\" trace files: ndbmtd
.PP
\fBNumber of execution threads\fR. The
MaxNoOfExecutionThreads
configuration parameter is used to determine the number of local query handler (LQH) threads spawned by
-\fBndbmtd\fR. Although this parameter is set in
+\fBndbmtd\fR\&. Although this parameter is set in
[ndbd]
or
[ndbd default]
sections of the
-\fIconfig.ini\fR
+config\&.ini
file, it is exclusive to
\fBndbmtd\fR
and does not apply to
-\fBndbd\fR.
+\fBndbd\fR\&.
.PP
-This parameter takes an integer value from 2 to 8 inclusive. Generally, you should set this to the number of CPU cores on the data node host, as shown in the following table:
+This parameter takes an integer value from 2 to 8 inclusive\&. Generally, you should set this to the number of CPU cores on the data node host, as shown in the following table:
.TS
allbox tab(:);
lB lB.
@@ -127,26 +177,56 @@ T}:T{
8
T}
.TE
-.sp
+.sp 1
.PP
(It is possible to set this parameter to other values within the permitted range, but these are automatically rounded as shown in the
\fBValue Used\fR
-column of the next table in this section.)
+column of the next table in this section\&.)
.PP
The multi\-threaded data node process always spawns at least 4 threads:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
1 local query handler (LQH) thread
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
1 transaction coordinator (TC) thread
-.TP 3n
-\(bu
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
1 transporter thread
-.TP 3n
-\(bu
-1 subscription manager (SUMA) thread
+.RE
.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+1 subscription manager (SUMA) thread
.RE
.PP
Setting this parameter to a value between 4 and 8 inclusive causes additional LQH threads to be used by
@@ -156,7 +236,7 @@ Setting this parameter to a value betwee
allbox tab(:);
lB lB lB.
T{
-\fIconfig.ini\fR Value
+config\&.ini Value
T}:T{
Value Used
T}:T{
@@ -188,30 +268,41 @@ T}:T{
4
T}
.TE
-.sp
+.sp 1
.PP
Setting this parameter outside the permitted range of values causes the management server to abort on startup with the error
-Error line \fInumber\fR: Illegal value \fIvalue\fR for parameter MaxNoOfExecutionThreads.
+Error line \fInumber\fR: Illegal value \fIvalue\fR for parameter MaxNoOfExecutionThreads\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
-In MySQL Cluster NDB 6.4.0, it is not possible to set
+In MySQL Cluster NDB 6\&.4\&.0, it is not possible to set
MaxNoOfExecutionThreads
-to 2. You can safely use the value 3 instead (it is treated as 2 internally). This issue is resolved in MySQL Cluster NDB 6.4.1.
+to 2\&. You can safely use the value 3 instead (it is treated as 2 internally)\&. This issue is resolved in MySQL Cluster NDB 6\&.4\&.1\&.
+.sp .5v
+.RE
.PP
-In MySQL Cluster NDB 6.4.0 through 6.4.3, the default value for this parameter was undefined, although the default behavior for
+In MySQL Cluster NDB 6\&.4\&.0 through 6\&.4\&.3, the default value for this parameter was undefined, although the default behavior for
\fBndbmtd\fR
was to use 1 LQH thread, as though
MaxNoOfExecutionThreads
-had been set to 2. Beginning with MySQL Cluster NDB 7.0.4, this parameter has an explcit default value of 2, thus guaranteeing this default behavior.
+had been set to 2\&. Beginning with MySQL Cluster NDB 7\&.0\&.4, this parameter has an explcit default value of 2, thus guaranteeing this default behavior\&.
.PP
-In MySQL Cluster NDB 7.0, it is not possible to cause
+In MySQL Cluster NDB 7\&.0, it is not possible to cause
\fBndbmtd\fR
-to use more than 1 TC thread, although we plan to introduce this capability in a future MySQL Cluster release series.
+to use more than 1 TC thread, although we plan to introduce this capability in a future MySQL Cluster release series\&.
+.\" MySQL Cluster: log files
+.\" log files (MySQL Cluster): ndbmtd
+.\" ndbmtd: trace files
.PP
Like
\fBndbd\fR,
@@ -219,67 +310,89 @@ Like
generates a set of log files which are placed in the directory specified by
DataDir
in the
-\fIconfig.ini\fR
-configuration file. Except for trace files, these are generated in the same way and have the same names as those generated by
-\fBndbd\fR.
+config\&.ini
+configuration file\&. Except for trace files, these are generated in the same way and have the same names as those generated by
+\fBndbd\fR\&.
.PP
In the event of a critical error,
\fBndbmtd\fR
-generates trace files describing what happened just prior to the error' occurrence. These files, which can be found in the data node's
-DataDir, are useful for analysis of problems by the MySQL Cluster Development and Support teams. One trace file is generated for each
+generates trace files describing what happened just prior to the error\' occurrence\&. These files, which can be found in the data node\'s
+DataDir, are useful for analysis of problems by the MySQL Cluster Development and Support teams\&. One trace file is generated for each
\fBndbmtd\fR
-thread. The names of these files follow the pattern
-\fIndb_\fR\fI\fInode_id\fR\fR\fI_trace.log.\fR\fI\fItrace_id\fR\fR\fI_t\fR\fI\fIthread_id\fR\fR, where
+thread\&. The names of these files follow the pattern
+ndb_\fInode_id\fR_trace\&.log\&.\fItrace_id\fR_t\fIthread_id\fR, where
\fInode_id\fR
-is the data node's unique node ID in the cluster,
+is the data node\'s unique node ID in the cluster,
\fItrace_id\fR
is a trace sequence number, and
\fIthread_id\fR
-is the thread ID. For example, in the event of the failure of an
+is the thread ID\&. For example, in the event of the failure of an
\fBndbmtd\fR
process running as a MySQL Cluster data node having the node ID 3 and with
MaxNoOfExecutionThreads
-equal to 4, four trace files are generated in the data node's data directory; if the is the first time this node has failed, then these files are named
-\fIndb_3_trace.log.1_t1\fR,
-\fIndb_3_trace.log.1_t2\fR,
-\fIndb_3_trace.log.1_t3\fR, and
-\fIndb_3_trace.log.1_t4\fR. Internally, these trace files follow the same format as
+equal to 4, four trace files are generated in the data node\'s data directory; if the is the first time this node has failed, then these files are named
+ndb_3_trace\&.log\&.1_t1,
+ndb_3_trace\&.log\&.1_t2,
+ndb_3_trace\&.log\&.1_t3, and
+ndb_3_trace\&.log\&.1_t4\&. Internally, these trace files follow the same format as
\fBndbd\fR
-trace files.
+trace files\&.
.PP
The
\fBndbd\fR
exit codes and messages that are generated when a data node process shuts down prematurely are also used by
-\fBndbmtd\fR. See
-[1]\&\fIndbd Error Messages\fR, for a listing of these.
+\fBndbmtd\fR\&. See
+\m[blue]\fBndbd Error Messages\fR\m[]\&\s-2\u[3]\d\s+2, for a listing of these\&.
+.if n \{\
.sp
+.\}
+.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
+.ps +1
\fBNote\fR
+.ps -1
+.br
.PP
It is possible to use
\fBndbd\fR
and
\fBndbmtd\fR
-concurrently on different data nodes in the same MySQL Cluster. However, such configurations have not been tested extensively; thus, we cannot not recommend doing so in a production setting at this time.
+concurrently on different data nodes in the same MySQL Cluster\&. However, such configurations have not been tested extensively; thus, we cannot not recommend doing so in a production setting at this time\&.
+.sp .5v
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
-.SH "REFERENCES"
-.TP 3
-1.\ ndbd Error Messages
-\%http://dev.mysql.com/doc/ndbapi/en/ndbd\-error\-messages.html
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
+.SH "NOTES"
+.IP " 1." 4
+Bug#41915
+.RS 4
+\%http://bugs.mysql.com/41915
+.RE
+.IP " 2." 4
+Bug#44915
+.RS 4
+\%http://bugs.mysql.com/44915
+.RE
+.IP " 3." 4
+ndbd Error Messages
+.RS 4
+\%http://dev.mysql.com/doc/ndbapi/en/ndbd-error-messages.html
+.RE
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/perror.1'
--- a/man/perror.1 2009-05-25 09:59:47 +0000
+++ b/man/perror.1 2009-09-16 12:03:18 +0000
@@ -1,57 +1,81 @@
+'\" t
.\" Title: \fBperror\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBPERROR\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBPERROR\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" perror
+.\" error messages: displaying
+.\" errno
+.\" Errcode
.SH "NAME"
perror \- explain error codes
.SH "SYNOPSIS"
-.HP 31
-\fBperror [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIerrorcode\fR\fR\fB ...\fR
+.HP \w'\fBperror\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIerrorcode\fR\fR\fB\ \&.\&.\&.\fR\ 'u
+\fBperror [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIerrorcode\fR\fR\fB \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
For most system errors, MySQL displays, in addition to an internal text message, the system error code in one of the following styles:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-message ... (errno: #)
-message ... (Errcode: #)
+message \&.\&.\&. (errno: #)
+message \&.\&.\&. (Errcode: #)
.fi
+.if n \{\
.RE
+.\}
.PP
You can find out what the error code means by examining the documentation for your system or by using the
\fBperror\fR
-utility.
+utility\&.
.PP
\fBperror\fR
-prints a description for a system error code or for a storage engine (table handler) error code.
+prints a description for a system error code or for a storage engine (table handler) error code\&.
.PP
Invoke
\fBperror\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBperror [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIerrorcode\fR\fR\fB ...\fR
+shell> \fBperror [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIerrorcode\fR\fR\fB \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
Example:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBperror 13 64\fR
OS error code 13: Permission denied
OS error code 64: Machine is not on the network
.fi
+.if n \{\
.RE
+.\}
.PP
To obtain the error message for a MySQL Cluster error code, invoke
\fBperror\fR
@@ -59,59 +83,115 @@ with the
\fB\-\-ndb\fR
option:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBperror \-\-ndb \fR\fB\fIerrorcode\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
-Note that the meaning of system error messages may be dependent on your operating system. A given error code may mean different things on different operating systems.
+Note that the meaning of system error messages may be dependent on your operating system\&. A given error code may mean different things on different operating systems\&.
.PP
\fBperror\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: help option
+.\" help option: perror
\fB\-\-help\fR,
\fB\-\-info\fR,
\fB\-I\fR,
\fB\-?\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: ndb option
+.\" ndb option: perror
\fB\-\-ndb\fR
.sp
-Print the error message for a MySQL Cluster error code.
-.TP 3n
-\(bu
+Print the error message for a MySQL Cluster error code\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: silent option
+.\" silent option: perror
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Print only the error message.
-.TP 3n
-\(bu
+Silent mode\&. Print only the error message\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: verbose option
+.\" verbose option: perror
\fB\-\-verbose\fR,
\fB\-v\fR
.sp
-Verbose mode. Print error code and message. This is the default behavior.
-.TP 3n
-\(bu
+Verbose mode\&. Print error code and message\&. This is the default behavior\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" perror: version option
+.\" version option: perror
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/replace.1'
--- a/man/replace.1 2009-05-25 09:59:47 +0000
+++ b/man/replace.1 2009-09-16 12:03:18 +0000
@@ -1,116 +1,176 @@
+'\" t
.\" Title: \fBreplace\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBREPLACE\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBREPLACE\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" replace utility
+.\" string replacement: replace utility
.SH "NAME"
replace \- a string\-replacement utility
.SH "SYNOPSIS"
-.HP 18
+.HP \w'\fBreplace\ \fR\fB\fIarguments\fR\fR\ 'u
\fBreplace \fR\fB\fIarguments\fR\fR
.SH "DESCRIPTION"
.PP
The
\fBreplace\fR
-utility program changes strings in place in files or on the standard input.
+utility program changes strings in place in files or on the standard input\&.
.PP
Invoke
\fBreplace\fR
in one of the following ways:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBreplace \fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB [\fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB] ... \-\- \fR\fB\fIfile_name\fR\fR\fB [\fR\fB\fIfile_name\fR\fR\fB] ...\fR
-shell> \fBreplace \fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB [\fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB] ... < \fR\fB\fIfile_name\fR\fR
+shell> \fBreplace \fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB [\fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB] \&.\&.\&. \-\- \fR\fB\fIfile_name\fR\fR\fB [\fR\fB\fIfile_name\fR\fR\fB] \&.\&.\&.\fR
+shell> \fBreplace \fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB [\fR\fB\fIfrom\fR\fR\fB \fR\fB\fIto\fR\fR\fB] \&.\&.\&. < \fR\fB\fIfile_name\fR\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fIfrom\fR
represents a string to look for and
\fIto\fR
-represents its replacement. There can be one or more pairs of strings.
+represents its replacement\&. There can be one or more pairs of strings\&.
.PP
Use the
\fB\-\-\fR
-option to indicate where the string\-replacement list ends and the file names begin. In this case, any file named on the command line is modified in place, so you may want to make a copy of the original before converting it.
+option to indicate where the string\-replacement list ends and the file names begin\&. In this case, any file named on the command line is modified in place, so you may want to make a copy of the original before converting it\&.
\fIreplace\fR
-prints a message indicating which of the input files it actually modifies.
+prints a message indicating which of the input files it actually modifies\&.
.PP
If the
\fB\-\-\fR
option is not given,
\fBreplace\fR
-reads the standard input and writes to the standard output.
+reads the standard input and writes to the standard output\&.
.PP
\fBreplace\fR
-uses a finite state machine to match longer strings first. It can be used to swap strings. For example, the following command swaps
+uses a finite state machine to match longer strings first\&. It can be used to swap strings\&. For example, the following command swaps
a
and
b
in the given files,
-\fIfile1\fR
+file1
and
-\fIfile2\fR:
+file2:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBreplace a b b a \-\- file1 file2 ...\fR
+shell> \fBreplace a b b a \-\- file1 file2 \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The
\fBreplace\fR
program is used by
-\fBmsql2mysql\fR. See
-\fBmsql2mysql\fR(1).
+\fBmsql2mysql\fR\&. See
+\fBmsql2mysql\fR(1)\&.
.PP
\fBreplace\fR
supports the following options:
-.TP 3n
-\(bu
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-#\fR\fB\fIdebug_options\fR\fR
.sp
-Enable debugging.
-.TP 3n
-\(bu
+Enable debugging\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-s\fR
.sp
-Silent mode. Print less information what the program does.
-.TP 3n
-\(bu
+Silent mode\&. Print less information what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-v\fR
.sp
-Verbose mode. Print more information about what the program does.
-.TP 3n
-\(bu
+Verbose mode\&. Print more information about what the program does\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/resolve_stack_dump.1'
--- a/man/resolve_stack_dump.1 2009-05-25 09:59:47 +0000
+++ b/man/resolve_stack_dump.1 2009-09-16 12:03:18 +0000
@@ -1,78 +1,133 @@
+'\" t
.\" Title: \fBresolve_stack_dump\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBRESOLVE_STACK_DUM" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBRESOLVE_STACK_DUM" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" resolve_stack_dump
.SH "NAME"
resolve_stack_dump \- resolve numeric stack trace dump to symbols
.SH "SYNOPSIS"
-.HP 62
+.HP \w'\fBresolve_stack_dump\ [\fR\fB\fIoptions\fR\fR\fB]\ \fR\fB\fIsymbols_file\fR\fR\fB\ [\fR\fB\fInumeric_dump_file\fR\fR\fB]\fR\ 'u
\fBresolve_stack_dump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIsymbols_file\fR\fR\fB [\fR\fB\fInumeric_dump_file\fR\fR\fB]\fR
.SH "DESCRIPTION"
.PP
\fBresolve_stack_dump\fR
-resolves a numeric stack dump to symbols.
+resolves a numeric stack dump to symbols\&.
.PP
Invoke
\fBresolve_stack_dump\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
shell> \fBresolve_stack_dump [\fR\fB\fIoptions\fR\fR\fB] \fR\fB\fIsymbols_file\fR\fR\fB [\fR\fB\fInumeric_dump_file\fR\fR\fB]\fR
.fi
+.if n \{\
.RE
+.\}
.PP
The symbols file should include the output from the
\fBnm \-\-numeric\-sort mysqld\fR
-command. The numeric dump file should contain a numeric stack track from
-\fBmysqld\fR. If no numeric dump file is named on the command line, the stack trace is read from the standard input.
+command\&. The numeric dump file should contain a numeric stack track from
+\fBmysqld\fR\&. If no numeric dump file is named on the command line, the stack trace is read from the standard input\&.
.PP
\fBresolve_stack_dump\fR
-understands the options described in the following list.
-.TP 3n
-\(bu
+supports the options described in the following list\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolve_stack_dump: help option
+.\" help option: resolve_stack_dump
\fB\-\-help\fR,
\fB\-h\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolve_stack_dump: numeric-dump-file option
+.\" numeric-dump-file option: resolve_stack_dump
\fB\-\-numeric\-dump\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-n \fR\fB\fIfile_name\fR\fR
.sp
-Read the stack trace from the given file.
-.TP 3n
-\(bu
+Read the stack trace from the given file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolve_stack_dump: symbols-file option
+.\" symbols-file option: resolve_stack_dump
\fB\-\-symbols\-file=\fR\fB\fIfile_name\fR\fR,
\fB\-s \fR\fB\fIfile_name\fR\fR
.sp
-Use the given symbols file.
-.TP 3n
-\(bu
+Use the given symbols file\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolve_stack_dump: version option
+.\" version option: resolve_stack_dump
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'man/resolveip.1'
--- a/man/resolveip.1 2009-05-25 09:59:47 +0000
+++ b/man/resolveip.1 2009-09-16 12:03:18 +0000
@@ -1,70 +1,115 @@
+'\" t
.\" Title: \fBresolveip\fR
-.\" Author:
-.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/>
-.\" Date: 03/31/2009
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+.\" Date: 08/12/2009
.\" Manual: MySQL Database System
.\" Source: MySQL 5.1
+.\" Language: English
.\"
-.TH "\fBRESOLVEIP\fR" "1" "03/31/2009" "MySQL 5.1" "MySQL Database System"
+.TH "\FBRESOLVEIP\FR" "1" "08/12/2009" "MySQL 5\&.1" "MySQL Database System"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.\" resolveip
.SH "NAME"
resolveip \- resolve host name to IP address or vice versa
.SH "SYNOPSIS"
-.HP 44
-\fBresolveip [\fR\fB\fIoptions\fR\fR\fB] {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB} ...\fR
+.HP \w'\fBresolveip\ [\fR\fB\fIoptions\fR\fR\fB]\ {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB}\ \&.\&.\&.\fR\ 'u
+\fBresolveip [\fR\fB\fIoptions\fR\fR\fB] {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB} \&.\&.\&.\fR
.SH "DESCRIPTION"
.PP
The
\fBresolveip\fR
-utility resolves host names to IP addresses and vice versa.
+utility resolves host names to IP addresses and vice versa\&.
.PP
Invoke
\fBresolveip\fR
like this:
.sp
-.RS 3n
+.if n \{\
+.RS 4
+.\}
.nf
-shell> \fBresolveip [\fR\fB\fIoptions\fR\fR\fB] {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB} ...\fR
+shell> \fBresolveip [\fR\fB\fIoptions\fR\fR\fB] {\fR\fB\fIhost_name\fR\fR\fB|\fR\fB\fIip\-addr\fR\fR\fB} \&.\&.\&.\fR
.fi
+.if n \{\
.RE
+.\}
.PP
\fBresolveip\fR
-understands the options described in the following list.
-.TP 3n
-\(bu
+supports the options described in the following list\&.
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolveip: help option
+.\" help option: resolveip
\fB\-\-help\fR,
\fB\-\-info\fR,
\fB\-?\fR,
\fB\-I\fR
.sp
-Display a help message and exit.
-.TP 3n
-\(bu
+Display a help message and exit\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolveip: silent option
+.\" silent option: resolveip
\fB\-\-silent\fR,
\fB\-s\fR
.sp
-Silent mode. Produce less output.
-.TP 3n
-\(bu
+Silent mode\&. Produce less output\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+.\" resolveip: version option
+.\" version option: resolveip
\fB\-\-version\fR,
\fB\-V\fR
.sp
-Display version information and exit.
+Display version information and exit\&.
+.RE
.SH "COPYRIGHT"
+.br
.PP
-Copyright 2007\-2008 MySQL AB, 2009 Sun Microsystems, Inc.
+Copyright 2007-2008 MySQL AB, 2009 Sun Microsystems, Inc.
.PP
This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.
.PP
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
-You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA or see http://www.gnu.org/licenses/.
+You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/.
+.sp
.SH "SEE ALSO"
For more information, please refer to the MySQL Reference Manual,
which may already be installed locally and which is also available
online at http://dev.mysql.com/doc/.
.SH AUTHOR
-MySQL AB (http://www.mysql.com/)
+Sun Microsystems, Inc. (http://www.mysql.com/)
=== modified file 'scripts/fill_help_tables.sql'
--- a/scripts/fill_help_tables.sql 2009-05-25 09:59:47 +0000
+++ b/scripts/fill_help_tables.sql 2009-09-16 12:03:18 +0000
@@ -73,99 +73,99 @@ insert into help_topic (help_topic_id,he
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (4,29,'CONTAINS','Contains(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 completely contains g2. This\ntests the opposite relationship as Within().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (5,34,'SRID','SRID(g)\n\nReturns an integer indicating the Spatial Reference System ID for the\ngeometry value g.\n\nIn MySQL, the SRID value is just an integer associated with the\ngeometry value. All calculations are done assuming Euclidean (planar)\ngeometry.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT SRID(GeomFromText(\'LineString(1 1,2 2)\',101));\n+-----------------------------------------------+\n| SRID(GeomFromText(\'LineString(1 1,2 2)\',101)) |\n+-----------------------------------------------+\n| 101 |\n+-----------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (6,30,'CURRENT_TIMESTAMP','Syntax:\nCURRENT_TIMESTAMP, CURRENT_TIMESTAMP()\n\nCURRENT_TIMESTAMP and CURRENT_TIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (7,26,'SHOW CONTRIBUTORS','Syntax:\nSHOW CONTRIBUTORS\n\nThe SHOW CONTRIBUTORS statement displays information about the people\nwho contribute to MySQL source or to causes that MySQL AB supports. For\neach contributor, it displays Name, Location, and Comment values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-contributors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-contributors.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (7,25,'SHOW CONTRIBUTORS','Syntax:\nSHOW CONTRIBUTORS\n\nThe SHOW CONTRIBUTORS statement displays information about the people\nwho contribute to MySQL source or to causes that we support. For each\ncontributor, it displays Name, Location, and Comment values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-contributors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-contributors.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (8,16,'VARIANCE','Syntax:\nVARIANCE(expr)\n\nReturns the population standard variance of expr. This is an extension\nto standard SQL. The standard SQL function VAR_POP() can be used\ninstead.\n\nVARIANCE() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (9,37,'DROP SERVER','Syntax:\nDROP SERVER [ IF EXISTS ] server_name\n\nDrops the server definition for the server named server_name. The\ncorresponding row within the mysql.servers table will be deleted. This\nstatement requires the SUPER privilege.\n\nDropping a server for a table does not affect any FEDERATED tables that\nused this connection information when they were created. See [HELP\nCREATE SERVER].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-server.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-server.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (10,26,'SHOW AUTHORS','Syntax:\nSHOW AUTHORS\n\nThe SHOW AUTHORS statement displays information about the people who\nwork on MySQL. For each author, it displays Name, Location, and Comment\nvalues.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-authors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-authors.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (10,25,'SHOW AUTHORS','Syntax:\nSHOW AUTHORS\n\nThe SHOW AUTHORS statement displays information about the people who\nwork on MySQL. For each author, it displays Name, Location, and Comment\nvalues.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-authors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-authors.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (11,16,'VAR_SAMP','Syntax:\nVAR_SAMP(expr)\n\nReturns the sample variance of expr. That is, the denominator is the\nnumber of rows minus one.\n\nVAR_SAMP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (12,35,'CONCAT','Syntax:\nCONCAT(str1,str2,...)\n\nReturns the string that results from concatenating the arguments. May\nhave one or more arguments. If all arguments are non-binary strings,\nthe result is a non-binary string. If the arguments include any binary\nstrings, the result is a binary string. A numeric argument is converted\nto its equivalent binary string form; if you want to avoid that, you\ncan use an explicit type cast, as in this example:\n\nSELECT CONCAT(CAST(int_col AS CHAR), char_col);\n\nCONCAT() returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT CONCAT(\'My\', \'S\', \'QL\');\n -> \'MySQL\'\nmysql> SELECT CONCAT(\'My\', NULL, \'QL\');\n -> NULL\nmysql> SELECT CONCAT(14.3);\n -> \'14.3\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (13,32,'GEOMETRY HIERARCHY','Geometry is the base class. It is an abstract class. The instantiable\nsubclasses of Geometry are restricted to zero-, one-, and\ntwo-dimensional geometric objects that exist in two-dimensional\ncoordinate space. All instantiable geometry classes are defined so that\nvalid instances of a geometry class are topologically closed (that is,\nall defined geometries include their boundary).\n\nThe base Geometry class has subclasses for Point, Curve, Surface, and\nGeometryCollection:\n\no Point represents zero-dimensional objects.\n\no Curve represents one-dimensional objects, and has subclass\n LineString, with sub-subclasses Line and LinearRing.\n\no Surface is designed for two-dimensional objects and has subclass\n Polygon.\n\no GeometryCollection has specialized zero-, one-, and two-dimensional\n collection classes named MultiPoint, MultiLineString, and\n MultiPolygon for modeling geometries corresponding to collections of\n Points, LineStrings, and Polygons, respectively. MultiCurve and\n MultiSurface are introduced as abstract superclasses that generalize\n the collection interfaces to handle Curves and Surfaces.\n\nGeometry, Curve, Surface, MultiCurve, and MultiSurface are defined as\nnon-instantiable classes. They define a common set of methods for their\nsubclasses and are included for extensibility.\n\nPoint, LineString, Polygon, GeometryCollection, MultiPoint,\nMultiLineString, and MultiPolygon are instantiable classes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-geometry-class-hierarchy.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/gis-geometry-class-hierarchy.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (12,35,'CONCAT','Syntax:\nCONCAT(str1,str2,...)\n\nReturns the string that results from concatenating the arguments. May\nhave one or more arguments. If all arguments are nonbinary strings, the\nresult is a nonbinary string. If the arguments include any binary\nstrings, the result is a binary string. A numeric argument is converted\nto its equivalent binary string form; if you want to avoid that, you\ncan use an explicit type cast, as in this example:\n\nSELECT CONCAT(CAST(int_col AS CHAR), char_col);\n\nCONCAT() returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT CONCAT(\'My\', \'S\', \'QL\');\n -> \'MySQL\'\nmysql> SELECT CONCAT(\'My\', NULL, \'QL\');\n -> NULL\nmysql> SELECT CONCAT(14.3);\n -> \'14.3\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (13,32,'GEOMETRY HIERARCHY','Geometry is the base class. It is an abstract class. The instantiable\nsubclasses of Geometry are restricted to zero-, one-, and\ntwo-dimensional geometric objects that exist in two-dimensional\ncoordinate space. All instantiable geometry classes are defined so that\nvalid instances of a geometry class are topologically closed (that is,\nall defined geometries include their boundary).\n\nThe base Geometry class has subclasses for Point, Curve, Surface, and\nGeometryCollection:\n\no Point represents zero-dimensional objects.\n\no Curve represents one-dimensional objects, and has subclass\n LineString, with sub-subclasses Line and LinearRing.\n\no Surface is designed for two-dimensional objects and has subclass\n Polygon.\n\no GeometryCollection has specialized zero-, one-, and two-dimensional\n collection classes named MultiPoint, MultiLineString, and\n MultiPolygon for modeling geometries corresponding to collections of\n Points, LineStrings, and Polygons, respectively. MultiCurve and\n MultiSurface are introduced as abstract superclasses that generalize\n the collection interfaces to handle Curves and Surfaces.\n\nGeometry, Curve, Surface, MultiCurve, and MultiSurface are defined as\nnoninstantiable classes. They define a common set of methods for their\nsubclasses and are included for extensibility.\n\nPoint, LineString, Polygon, GeometryCollection, MultiPoint,\nMultiLineString, and MultiPolygon are instantiable classes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-geometry-class-hierarchy.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/gis-geometry-class-hierarchy.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (14,35,'CHAR FUNCTION','Syntax:\nCHAR(N,... [USING charset_name])\n\nCHAR() interprets each argument N as an integer and returns a string\nconsisting of the characters given by the code values of those\nintegers. NULL values are skipped.\nBy default, CHAR() returns a binary string. To produce a string in a\ngiven character set, use the optional USING clause:\n\nmysql> SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));\n+---------------------+--------------------------------+\n| CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) |\n+---------------------+--------------------------------+\n| binary | utf8 |\n+---------------------+--------------------------------+\n\nIf USING is given and the result string is illegal for the given\ncharacter set, a warning is issued. Also, if strict SQL mode is\nenabled, the result from CHAR() becomes NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT CHAR(77,121,83,81,\'76\');\n -> \'MySQL\'\nmysql> SELECT CHAR(77,77.3,\'77.3\');\n -> \'MMM\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (15,20,'DATETIME','DATETIME\n\nA date and time combination. The supported range is \'1000-01-01\n00:00:00\' to \'9999-12-31 23:59:59\'. MySQL displays DATETIME values in\n\'YYYY-MM-DD HH:MM:SS\' format, but allows assignment of values to\nDATETIME columns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (16,22,'OPEN','Syntax:\nOPEN cursor_name\n\nThis statement opens a previously declared cursor.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/open.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/open.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (17,26,'SHOW CREATE TRIGGER','Syntax:\nSHOW CREATE TRIGGER trigger_name\n\nThis statement shows a CREATE TRIGGER statement that creates the given\ntrigger.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-trigger.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (18,26,'SHOW CREATE PROCEDURE','Syntax:\nSHOW CREATE PROCEDURE proc_name\n\nThis statement is a MySQL extension. It returns the exact string that\ncan be used to re-create the named stored procedure. A similar\nstatement, SHOW CREATE FUNCTION, displays information about stored\nfunctions (see [HELP SHOW CREATE FUNCTION]).\n\nBoth statements require that you be the owner of the routine or have\nSELECT access to the mysql.proc table. If you do not have privileges\nfor the routine itself, the value displayed for the Create Procedure or\nCreate Function field will be NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-procedure.html\n\n','mysql> SHOW CREATE PROCEDURE test.simpleproc\\G\n*************************** 1. row ***************************\n Procedure: simpleproc\n sql_mode: \n Create Procedure: CREATE PROCEDURE `simpleproc`(OUT param1 INT)\n BEGIN\n SELECT COUNT(*) INTO param1 FROM t;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\nmysql> SHOW CREATE FUNCTION test.hello\\G\n*************************** 1. row ***************************\n Function: hello\n sql_mode:\n Create Function: CREATE FUNCTION `hello`(s CHAR(20))\n RETURNS CHAR(50)\n RETURN CONCAT(\'Hello, \',s,\'!\')\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-procedure.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (17,25,'SHOW CREATE TRIGGER','Syntax:\nSHOW CREATE TRIGGER trigger_name\n\nThis statement shows a CREATE TRIGGER statement that creates the given\ntrigger.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-trigger.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (18,25,'SHOW CREATE PROCEDURE','Syntax:\nSHOW CREATE PROCEDURE proc_name\n\nThis statement is a MySQL extension. It returns the exact string that\ncan be used to re-create the named stored procedure. A similar\nstatement, SHOW CREATE FUNCTION, displays information about stored\nfunctions (see [HELP SHOW CREATE FUNCTION]).\n\nBoth statements require that you be the owner of the routine or have\nSELECT access to the mysql.proc table. If you do not have privileges\nfor the routine itself, the value displayed for the Create Procedure or\nCreate Function field will be NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-procedure.html\n\n','mysql> SHOW CREATE PROCEDURE test.simpleproc\\G\n*************************** 1. row ***************************\n Procedure: simpleproc\n sql_mode:\n Create Procedure: CREATE PROCEDURE `simpleproc`(OUT param1 INT)\n BEGIN\n SELECT COUNT(*) INTO param1 FROM t;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\nmysql> SHOW CREATE FUNCTION test.hello\\G\n*************************** 1. row ***************************\n Function: hello\n sql_mode:\n Create Function: CREATE FUNCTION `hello`(s CHAR(20))\n RETURNS CHAR(50)\n RETURN CONCAT(\'Hello, \',s,\'!\')\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-procedure.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (19,20,'INTEGER','INTEGER[(M)] [UNSIGNED] [ZEROFILL]\n\nThis type is a synonym for INT.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (20,35,'LOWER','Syntax:\nLOWER(str)\n\nReturns the string str with all characters changed to lowercase\naccording to the current character set mapping. The default is latin1\n(cp1252 West European).\n\nmysql> SELECT LOWER(\'QUADRATICALLY\');\n -> \'quadratically\'\n\nLOWER() (and UPPER()) are ineffective when applied to binary strings\n(BINARY, VARBINARY, BLOB). To perform lettercase conversion, convert\nthe string to a non-binary string:\n\nmysql> SET @str = BINARY \'New York\';\nmysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1));\n+-------------+-----------------------------------+\n| LOWER(@str) | LOWER(CONVERT(@str USING latin1)) |\n+-------------+-----------------------------------+\n| New York | new york | \n+-------------+-----------------------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (21,26,'SHOW COLUMNS','Syntax:\nSHOW [FULL] COLUMNS FROM tbl_name [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW COLUMNS displays information about the columns in a given table.\nIt also works for views. The LIKE clause, if present, indicates which\ncolumn names to match. The WHERE clause can be given to select rows\nusing more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nmysql> SHOW COLUMNS FROM City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n5 rows in set (0.00 sec)\n\nIf the data types differ from what you expect them to be based on a\nCREATE TABLE statement, note that MySQL sometimes changes data types\nwhen you create or alter a table. The conditions under which this\noccurs are described in\nhttp://dev.mysql.com/doc/refman/5.1/en/silent-column-changes.html.\n\nT… FULL keyword causes the output to include the column collation and\ncomments, as well as the privileges you have for each column.\n\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. In other words, these two statements are equivalent:\n\nmysql> SHOW COLUMNS FROM mytable FROM mydb;\nmysql> SHOW COLUMNS FROM mydb.mytable;\n\nSHOW COLUMNS displays the following values for each table column:\n\nField indicates the column name.\n\nType indicates the column data type.\n\nCollation indicates the collation for non-binary string columns, or\nNULL for other columns. This value is displayed only if you use the\nFULL keyword.\n\nThe Null field contains YES if NULL values can be stored in the column,\nNO if not.\n\nThe Key field indicates whether the column is indexed:\n\no If Key is empty, the column either is not indexed or is indexed only\n as a secondary column in a multiple-column, non-unique index.\n\no If Key is PRI, the column is a PRIMARY KEY or is one of the columns\n in a multiple-column PRIMARY KEY.\n\no If Key is UNI, the column is the first column of a unique-valued\n index that cannot contain NULL values.\n\no If Key is MUL, multiple occurrences of a given value are allowed\n within the column. The column is the first column of a non-unique\n index or a unique-valued index that can contain NULL values.\n\nIf more than one of the Key values applies to a given column of a\ntable, Key displays the one with the highest priority, in the order\nPRI, UNI, MUL.\n\nA UNIQUE index may be displayed as PRI if it cannot contain NULL values\nand there is no PRIMARY KEY in the table. A UNIQUE index may display as\nMUL if several columns form a composite UNIQUE index; although the\ncombination of the columns is unique, each column can still hold\nmultiple occurrences of a given value.\n\nThe Default field indicates the default value that is assigned to the\ncolumn.\n\nThe Extra field contains any additional information that is available\nabout a given column. The value is auto_increment if the column was\ncreated with the AUTO_INCREMENT keyword and empty otherwise.\n\nPrivileges indicates the privileges you have for the column. This value\nis displayed only if you use the FULL keyword.\n\nComment indicates any comment the column has. This value is displayed\nonly if you use the FULL keyword.\n\nSHOW FIELDS is a synonym for SHOW COLUMNS. You can also list a table\'s\ncolumns with the mysqlshow db_name tbl_name command.\n\nThe DESCRIBE statement provides information similar to SHOW COLUMNS.\nSee [HELP DESCRIBE].\n\nThe SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements\nalso provide information about tables. See [HELP SHOW].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-columns.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-columns.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (20,35,'LOWER','Syntax:\nLOWER(str)\n\nReturns the string str with all characters changed to lowercase\naccording to the current character set mapping. The default is latin1\n(cp1252 West European).\n\nmysql> SELECT LOWER(\'QUADRATICALLY\');\n -> \'quadratically\'\n\nLOWER() (and UPPER()) are ineffective when applied to binary strings\n(BINARY, VARBINARY, BLOB). To perform lettercase conversion, convert\nthe string to a nonbinary string:\n\nmysql> SET @str = BINARY \'New York\';\nmysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1));\n+-------------+-----------------------------------+\n| LOWER(@str) | LOWER(CONVERT(@str USING latin1)) |\n+-------------+-----------------------------------+\n| New York | new york |\n+-------------+-----------------------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (21,25,'SHOW COLUMNS','Syntax:\nSHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW COLUMNS displays information about the columns in a given table.\nIt also works for views. The LIKE clause, if present, indicates which\ncolumn names to match. The WHERE clause can be given to select rows\nusing more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nmysql> SHOW COLUMNS FROM City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n5 rows in set (0.00 sec)\n\nIf the data types differ from what you expect them to be based on a\nCREATE TABLE statement, note that MySQL sometimes changes data types\nwhen you create or alter a table. The conditions under which this\noccurs are described in\nhttp://dev.mysql.com/doc/refman/5.1/en/silent-column-changes.html.\n\nT… FULL keyword causes the output to include the column collation and\ncomments, as well as the privileges you have for each column.\n\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. In other words, these two statements are equivalent:\n\nmysql> SHOW COLUMNS FROM mytable FROM mydb;\nmysql> SHOW COLUMNS FROM mydb.mytable;\n\nSHOW COLUMNS displays the following values for each table column:\n\nField indicates the column name.\n\nType indicates the column data type.\n\nCollation indicates the collation for nonbinary string columns, or NULL\nfor other columns. This value is displayed only if you use the FULL\nkeyword.\n\nThe Null field contains YES if NULL values can be stored in the column,\nNO if not.\n\nThe Key field indicates whether the column is indexed:\n\no If Key is empty, the column either is not indexed or is indexed only\n as a secondary column in a multiple-column, nonunique index.\n\no If Key is PRI, the column is a PRIMARY KEY or is one of the columns\n in a multiple-column PRIMARY KEY.\n\no If Key is UNI, the column is the first column of a unique-valued\n index that cannot contain NULL values.\n\no If Key is MUL, multiple occurrences of a given value are allowed\n within the column. The column is the first column of a nonunique\n index or a unique-valued index that can contain NULL values.\n\nIf more than one of the Key values applies to a given column of a\ntable, Key displays the one with the highest priority, in the order\nPRI, UNI, MUL.\n\nA UNIQUE index may be displayed as PRI if it cannot contain NULL values\nand there is no PRIMARY KEY in the table. A UNIQUE index may display as\nMUL if several columns form a composite UNIQUE index; although the\ncombination of the columns is unique, each column can still hold\nmultiple occurrences of a given value.\n\nThe Default field indicates the default value that is assigned to the\ncolumn.\n\nThe Extra field contains any additional information that is available\nabout a given column. The value is auto_increment if the column was\ncreated with the AUTO_INCREMENT keyword and empty otherwise.\n\nPrivileges indicates the privileges you have for the column. This value\nis displayed only if you use the FULL keyword.\n\nComment indicates any comment the column has. This value is displayed\nonly if you use the FULL keyword.\n\nSHOW FIELDS is a synonym for SHOW COLUMNS. You can also list a table\'s\ncolumns with the mysqlshow db_name tbl_name command.\n\nThe DESCRIBE statement provides information similar to SHOW COLUMNS.\nSee [HELP DESCRIBE].\n\nThe SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements\nalso provide information about tables. See [HELP SHOW].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-columns.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-columns.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (22,37,'CREATE TRIGGER','Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n TRIGGER trigger_name trigger_time trigger_event\n ON tbl_name FOR EACH ROW trigger_stmt\n\nThis statement creates a new trigger. A trigger is a named database\nobject that is associated with a table, and that activates when a\nparticular event occurs for the table. The trigger becomes associated\nwith the table named tbl_name, which must refer to a permanent table.\nYou cannot associate a trigger with a TEMPORARY table or a view.\n\nCREATE TRIGGER requires the TRIGGER privilege for the table associated\nwith the trigger. (Before MySQL 5.1.6, this statement requires the\nSUPER privilege.)\n\nThe DEFINER clause determines the security context to be used when\nchecking access privileges at trigger activation time.\n\ntrigger_time is the trigger action time. It can be BEFORE or AFTER to\nindicate that the trigger activates before or after each row to be\nmodified.\n\ntrigger_event indicates the kind of statement that activates the\ntrigger. The trigger_event can be one of the following:\n\no INSERT: The trigger is activated whenever a new row is inserted into\n the table; for example, through INSERT, LOAD DATA, and REPLACE\n statements.\n\no UPDATE: The trigger is activated whenever a row is modified; for\n example, through UPDATE statements.\n\no DELETE: The trigger is activated whenever a row is deleted from the\n table; for example, through DELETE and REPLACE statements. However,\n DROP TABLE and TRUNCATE statements on the table do not activate this\n trigger, because they do not use DELETE. Dropping a partition does\n not activate DELETE triggers, either. See [HELP TRUNCATE TABLE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (23,30,'MONTH','Syntax:\nMONTH(date)\n\nReturns the month for date, in the range 1 to 12 for January to\nDecember, or 0 for dates such as \'0000-00-00\' or \'2008-00-00\' that have\na zero month part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MONTH(\'2008-02-03\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (24,20,'TINYINT','TINYINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA very small integer. The signed range is -128 to 127. The unsigned\nrange is 0 to 255.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (25,26,'SHOW TRIGGERS','Syntax:\nSHOW TRIGGERS [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TRIGGERS lists the triggers currently defined for tables in a\ndatabase (the default database unless a FROM clause is given). This\nstatement requires the TRIGGER privilege (prior to MySQL 5.1.22, it\nrequires the SUPER privilege). The LIKE clause, if present, indicates\nwhich table names to match and causes the statement to display triggers\nfor those tables. The WHERE clause can be given to select rows using\nmore general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nFor the trigger ins_sum as defined in\nhttp://dev.mysql.com/doc/refman/5.1/en/triggers.html, the output of\nthis statement is as shown here:\n\nmysql> SHOW TRIGGERS LIKE \'acc%\'\\G\n*************************** 1. row ***************************\n Trigger: ins_sum\n Event: INSERT\n Table: account\n Statement: SET @sum = @sum + NEW.amount\n Timing: BEFORE\n Created: NULL\n sql_mode:\n Definer: myname@localhost\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\ncharacter_set_client is the session value of the character_set_client\nsystem variable when the trigger was created. collation_connection is\nthe session value of the collation_connection system variable when the\ntrigger was created. Database Collation is the collation of the\ndatabase with which the trigger is associated. These columns were added\nin MySQL 5.1.21.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-triggers.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-triggers.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (25,25,'SHOW TRIGGERS','Syntax:\nSHOW TRIGGERS [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TRIGGERS lists the triggers currently defined for tables in a\ndatabase (the default database unless a FROM clause is given). This\nstatement requires the TRIGGER privilege (prior to MySQL 5.1.22, it\nrequires the SUPER privilege). The LIKE clause, if present, indicates\nwhich table names to match and causes the statement to display triggers\nfor those tables. The WHERE clause can be given to select rows using\nmore general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nFor the trigger ins_sum as defined in\nhttp://dev.mysql.com/doc/refman/5.1/en/triggers.html, the output of\nthis statement is as shown here:\n\nmysql> SHOW TRIGGERS LIKE \'acc%\'\\G\n*************************** 1. row ***************************\n Trigger: ins_sum\n Event: INSERT\n Table: account\n Statement: SET @sum = @sum + NEW.amount\n Timing: BEFORE\n Created: NULL\n sql_mode:\n Definer: myname@localhost\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\ncharacter_set_client is the session value of the character_set_client\nsystem variable when the trigger was created. collation_connection is\nthe session value of the collation_connection system variable when the\ntrigger was created. Database Collation is the collation of the\ndatabase with which the trigger is associated. These columns were added\nin MySQL 5.1.21.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-triggers.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-triggers.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (26,14,'MASTER_POS_WAIT','Syntax:\nMASTER_POS_WAIT(log_name,log_pos[,timeout])\n\nThis function is useful for control of master/slave synchronization. It\nblocks until the slave has read and applied all updates up to the\nspecified position in the master log. The return value is the number of\nlog events the slave had to wait for to advance to the specified\nposition. The function returns NULL if the slave SQL thread is not\nstarted, the slave\'s master information is not initialized, the\narguments are incorrect, or an error occurs. It returns -1 if the\ntimeout has been exceeded. If the slave SQL thread stops while\nMASTER_POS_WAIT() is waiting, the function returns NULL. If the slave\nis past the specified position, the function returns immediately.\n\nIf a timeout value is specified, MASTER_POS_WAIT() stops waiting when\ntimeout seconds have elapsed. timeout must be greater than 0; a zero or\nnegative timeout means no timeout.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (27,35,'REGEXP','Syntax:\nexpr REGEXP pat, expr RLIKE pat\n\nPerforms a pattern match of a string expression expr against a pattern\npat. The pattern can be an extended regular expression. The syntax for\nregular expressions is discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/regexp.html. Returns 1 if expr\nmatches pat; otherwise it returns 0. If either expr or pat is NULL, the\nresult is NULL. RLIKE is a synonym for REGEXP, provided for mSQL\ncompatibility.\n\nThe pattern need not be a literal string. For example, it can be\nspecified as a string expression or table column.\n\n*Note*: Because MySQL uses the C escape syntax in strings (for example,\n"\\n" to represent the newline character), you must double any "\\" that\nyou use in your REGEXP strings.\n\nREGEXP is not case sensitive, except when used with binary strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/regexp.html\n\n','mysql> SELECT \'Monty!\' REGEXP \'m%y%%\';\n -> 0\nmysql> SELECT \'Monty!\' REGEXP \'.*\';\n -> 1\nmysql> SELECT \'new*\\n*line\' REGEXP \'new\\\\*.\\\\*line\';\n -> 1\nmysql> SELECT \'a\' REGEXP \'A\', \'a\' REGEXP BINARY \'A\';\n -> 1 0\nmysql> SELECT \'a\' REGEXP \'^[a-d]\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/regexp.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (28,22,'IF STATEMENT','Syntax:\nIF search_condition THEN statement_list\n [ELSEIF search_condition THEN statement_list] ...\n [ELSE statement_list]\nEND IF\n\nIF implements a basic conditional construct. If the search_condition\nevaluates to true, the corresponding SQL statement list is executed. If\nno search_condition matches, the statement list in the ELSE clause is\nexecuted. Each statement_list consists of one or more statements.\n\n*Note*: There is also an IF() function, which differs from the IF\nstatement described here. See\nhttp://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/if-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/if-statement.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (29,18,'^','Syntax:\n^\n\nBitwise XOR:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 1 ^ 1;\n -> 0\nmysql> SELECT 1 ^ 0;\n -> 1\nmysql> SELECT 11 ^ 3;\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (30,37,'DROP VIEW','Syntax:\nDROP VIEW [IF EXISTS]\n view_name [, view_name] ...\n [RESTRICT | CASCADE]\n\nDROP VIEW removes one or more views. You must have the DROP privilege\nfor each view. If any of the views named in the argument list do not\nexist, MySQL returns an error indicating by name which non-existing\nviews it was unable to drop, but it also drops all of the views in the\nlist that do exist.\n\nThe IF EXISTS clause prevents an error from occurring for views that\ndon\'t exist. When this clause is given, a NOTE is generated for each\nnon-existent view. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE, if given, are parsed and ignored.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-view.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (30,37,'DROP VIEW','Syntax:\nDROP VIEW [IF EXISTS]\n view_name [, view_name] ...\n [RESTRICT | CASCADE]\n\nDROP VIEW removes one or more views. You must have the DROP privilege\nfor each view. If any of the views named in the argument list do not\nexist, MySQL returns an error indicating by name which nonexisting\nviews it was unable to drop, but it also drops all of the views in the\nlist that do exist.\n\nThe IF EXISTS clause prevents an error from occurring for views that\ndon\'t exist. When this clause is given, a NOTE is generated for each\nnonexistent view. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE, if given, are parsed and ignored.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-view.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (31,29,'WITHIN','Within(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially within g2. This\ntests the opposite relationship as Contains().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (32,30,'WEEK','Syntax:\nWEEK(date[,mode])\n\nThis function returns the week number for date. The two-argument form\nof WEEK() allows you to specify whether the week starts on Sunday or\nMonday and whether the return value should be in the range from 0 to 53\nor from 1 to 53. If the mode argument is omitted, the value of the\ndefault_week_format system variable is used. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEK(\'2008-02-20\');\n -> 7\nmysql> SELECT WEEK(\'2008-02-20\',0);\n -> 7\nmysql> SELECT WEEK(\'2008-02-20\',1);\n -> 8\nmysql> SELECT WEEK(\'2008-12-31\',1);\n -> 53\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (33,26,'SHOW PLUGINS','Syntax:\nSHOW PLUGINS\n\nSHOW PLUGINS displays information about known plugins.\n\nmysql> SHOW PLUGINS;\n+------------+--------+----------------+---------+\n| Name | Status | Type | Library |\n+------------+--------+----------------+---------+\n| MEMORY | ACTIVE | STORAGE ENGINE | NULL |\n| MyISAM | ACTIVE | STORAGE ENGINE | NULL |\n| InnoDB | ACTIVE | STORAGE ENGINE | NULL |\n| ARCHIVE | ACTIVE | STORAGE ENGINE | NULL |\n| CSV | ACTIVE | STORAGE ENGINE | NULL |\n| BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL |\n| FEDERATED | ACTIVE | STORAGE ENGINE | NULL |\n| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL |\n+------------+--------+----------------+---------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-plugins.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-plugins.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (33,25,'SHOW PLUGINS','Syntax:\nSHOW PLUGINS\n\nSHOW PLUGINS displays information about known plugins.\n\nmysql> SHOW PLUGINS;\n+------------+--------+----------------+---------+\n| Name | Status | Type | Library |\n+------------+--------+----------------+---------+\n| MEMORY | ACTIVE | STORAGE ENGINE | NULL |\n| MyISAM | ACTIVE | STORAGE ENGINE | NULL |\n| InnoDB | ACTIVE | STORAGE ENGINE | NULL |\n| ARCHIVE | ACTIVE | STORAGE ENGINE | NULL |\n| CSV | ACTIVE | STORAGE ENGINE | NULL |\n| BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL |\n| FEDERATED | ACTIVE | STORAGE ENGINE | NULL |\n| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL |\n+------------+--------+----------------+---------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-plugins.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-plugins.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (34,21,'DROP FUNCTION UDF','Syntax:\nDROP FUNCTION function_name\n\nThis statement drops the user-defined function (UDF) named\nfunction_name.\n\nTo drop a function, you must have the DELETE privilege for the mysql\ndatabase. This is because DROP FUNCTION removes a row from the\nmysql.func system table that records the function\'s name, type, and\nshared library name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-function-udf.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-function-udf.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (35,26,'PREPARE','Syntax:\nPREPARE stmt_name FROM preparable_stmt\n\nThe PREPARE statement prepares a statement and assigns it a name,\nstmt_name, by which to refer to the statement later. Statement names\nare not case sensitive. preparable_stmt is either a string literal or a\nuser variable that contains the text of the statement. The text must\nrepresent a single SQL statement, not multiple statements. Within the\nstatement, "?" characters can be used as parameter markers to indicate\nwhere data values are to be bound to the query later when you execute\nit. The "?" characters should not be enclosed within quotes, even if\nyou intend to bind them to string values. Parameter markers can be used\nonly where data values should appear, not for SQL keywords,\nidentifiers, and so forth.\n\nIf a prepared statement with the given name already exists, it is\ndeallocated implicitly before the new statement is prepared. This means\nthat if the new statement contains an error and cannot be prepared, an\nerror is returned and no statement with the given name exists.\n\nA prepared statement is executed with EXECUTE and released with\nDEALLOCATE PREPARE.\n\nThe scope of a prepared statement is the session within which it is\ncreated. Other sessions cannot see it.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/prepare.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (36,8,'LOCK','Syntax:\nLOCK TABLES\n tbl_name [[AS] alias] lock_type\n [, tbl_name [[AS] alias] lock_type] ...\n\nlock_type:\n READ [LOCAL]\n | [LOW_PRIORITY] WRITE\n\nUNLOCK TABLES\n\nMySQL enables client sessions to acquire table locks explicitly for the\npurpose of cooperating with other sessions for access to tables, or to\nprevent other sessions from modifying tables during periods when a\nsession requires exclusive access to them. A session can acquire or\nrelease locks only for itself. One session cannot acquire locks for\nanother session or release locks held by another session.\n\nLOCK TABLES acquires table locks for the current thread. It locks base\ntables or views. (For view locking, LOCK TABLES adds all base tables\nused in the view to the set of tables to be locked and locks them\nautomatically.) To use LOCK TABLES, you must have the LOCK TABLES\nprivilege, and the SELECT privilege for each object to be locked.\n\nMySQL enables client sessions to acquire table locks explicitly Locks\nmay be used to emulate transactions or to get more speed when updating\ntables. This is explained in more detail later in this section.\n\nUNLOCK TABLES explicitly releases any table locks held by the current\nthread. Another use for UNLOCK TABLES is to release the global read\nlock acquired with FLUSH TABLES WITH READ LOCK. (You can lock all\ntables in all databases with a read lock with the FLUSH TABLES WITH\nREAD LOCK statement. See [HELP FLUSH]. This is a very convenient way to\nget backups if you have a file system such as Veritas that can take\nsnapshots in time.)\n\nThe following discussion applies only to non-TEMPORARY tables. LOCK\nTABLES is allowed (but ignored) for a TEMPORARY table. The table can be\naccessed freely by the session within which it was created, regardless\nof what other locking may be in effect. No lock is necessary because no\nother session can see the table.\n\nThe following general rules apply to acquisition and release of locks\nby a given thread:\n\no Table locks are acquired with LOCK TABLES.\n\no If the LOCK TABLES statement must wait due to locks held by other\n threads on any of the tables, it blocks until all locks can be\n acquired.\n\no Table locks are released explicitly with UNLOCK TABLES.\n\no Table locks are released implicitly under these conditions:\n\n o LOCK TABLES releases any table locks currently held by the thread\n before acquiring new locks.\n\n o Beginning a transaction (for example, with START TRANSACTION)\n implicitly performs an UNLOCK TABLES. (Additional information about\n the interaction between table locking and transactions is given\n later in this section.)\n\n o If a client connection drops, the server releases table locks held\n by the client. If the client reconnects, the locks will no longer\n be in effect. In addition, if the client had an active transaction,\n the server rolls back the transaction upon disconnect, and if\n reconnect occurs, the new session begins with autocommit enabled.\n For this reason, clients may wish to disable auto-reconnect. With\n auto-reconnect in effect, the client is not notified if reconnect\n occurs but any table locks or current transaction will have been\n lost. With auto-reconnect disabled, if the connection drops, an\n error occurs for the next statement issued. The client can detect\n the error and take appropriate action such as reacquiring the locks\n or redoing the transaction. See\n http://dev.mysql.com/doc/refman/5.1/en/auto-reconnect.html.\n\n*Note*: If you use ALTER TABLE on a locked table, it may become\nunlocked. See\nhttp://dev.mysql.com/doc/refman/5.1/en/alter-table-problems.html.\n\nA table lock protects only against inappropriate reads or writes by\nother clients. The client holding the lock, even a read lock, can\nperform table-level operations such as DROP TABLE. Truncate operations\nare not transaction-safe, so an error occurs if the client attempts one\nduring an active transaction or while holding a table lock.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (35,25,'PREPARE','Syntax:\nPREPARE stmt_name FROM preparable_stmt\n\nThe PREPARE statement prepares a statement and assigns it a name,\nstmt_name, by which to refer to the statement later. Statement names\nare not case sensitive. preparable_stmt is either a string literal or a\nuser variable that contains the text of the statement. The text must\nrepresent a single SQL statement, not multiple statements. Within the\nstatement, "?" characters can be used as parameter markers to indicate\nwhere data values are to be bound to the query later when you execute\nit. The "?" characters should not be enclosed within quotes, even if\nyou intend to bind them to string values. Parameter markers can be used\nonly where data values should appear, not for SQL keywords,\nidentifiers, and so forth.\n\nIf a prepared statement with the given name already exists, it is\ndeallocated implicitly before the new statement is prepared. This means\nthat if the new statement contains an error and cannot be prepared, an\nerror is returned and no statement with the given name exists.\n\nA prepared statement is executed with EXECUTE and released with\nDEALLOCATE PREPARE.\n\nThe scope of a prepared statement is the session within which it is\ncreated. Other sessions cannot see it.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/prepare.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (36,8,'LOCK','Syntax:\nLOCK TABLES\n tbl_name [[AS] alias] lock_type\n [, tbl_name [[AS] alias] lock_type] ...\n\nlock_type:\n READ [LOCAL]\n | [LOW_PRIORITY] WRITE\n\nUNLOCK TABLES\n\nMySQL enables client sessions to acquire table locks explicitly for the\npurpose of cooperating with other sessions for access to tables, or to\nprevent other sessions from modifying tables during periods when a\nsession requires exclusive access to them. A session can acquire or\nrelease locks only for itself. One session cannot acquire locks for\nanother session or release locks held by another session.\n\nLocks may be used to emulate transactions or to get more speed when\nupdating tables. This is explained in more detail later in this\nsection.\n\nLOCK TABLES explicitly acquires table locks for the current client\nsession. Table locks can be acquired for base tables or views. You must\nhave the LOCK TABLES privilege, and the SELECT privilege for each\nobject to be locked.\n\nFor view locking, LOCK TABLES adds all base tables used in the view to\nthe set of tables to be locked and locks them automatically. If you\nlock a table explicitly with LOCK TABLES, any tables used in triggers\nare also locked implicitly, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/lock-tables-and-triggers.html.\n… TABLES explicitly releases any table locks held by the current\nsession.\n\nAnother use for UNLOCK TABLES is to release the global read lock\nacquired with the FLUSH TABLES WITH READ LOCK statement, which enables\nyou to lock all tables in all databases. See [HELP FLUSH]. (This is a\nvery convenient way to get backups if you have a file system such as\nVeritas that can take snapshots in time.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (37,35,'UPDATEXML','Syntax:\nUpdateXML(xml_target, xpath_expr, new_xml)\n\nThis function replaces a single portion of a given fragment of XML\nmarkup xml_target with a new XML fragment new_xml, and then returns the\nchanged XML. The portion of xml_target that is replaced matches an\nXPath expression xpath_expr supplied by the user. If no expression\nmatching xpath_expr is found, or if multiple matches are found, the\nfunction returns the original xml_target XML fragment. All three\narguments should be strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html\n\n','mysql> SELECT\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/a\', \'<e>fff</e>\') AS val1,\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/b\', \'<e>fff</e>\') AS val2,\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'//b\', \'<e>fff</e>\') AS val3,\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/a/d\', \'<e>fff</e>\') AS val4,\n -> UpdateXML(\'<a><d></d><b>ccc</b><d></d></a>\', \'/a/d\', \'<e>fff</e>\') AS val5\n -> \\G\n\n*************************** 1. row ***************************\nval1: <e>fff</e>\nval2: <a><b>ccc</b><d></d></a>\nval3: <a><e>fff</e><d></d></a>\nval4: <a><b>ccc</b><e>fff</e></a>\nval5: <a><d></d><b>ccc</b><d></d></a>\n','http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (38,26,'RESET SLAVE','Syntax:\nRESET SLAVE\n\nRESET SLAVE makes the slave forget its replication position in the\nmaster\'s binary logs. This statement is meant to be used for a clean\nstart: It deletes the master.info and relay-log.info files, all the\nrelay logs, and starts a new relay log.\n\n*Note*: All relay logs are deleted, even if they have not been\ncompletely executed by the slave SQL thread. (This is a condition\nlikely to exist on a replication slave if you have issued a STOP SLAVE\nstatement or if the slave is highly loaded.)\n\nConnection information stored in the master.info file is immediately\nreset using any values specified in the corresponding startup options.\nThis information includes values such as master host, master port,\nmaster user, and master password. If the slave SQL thread was in the\nmiddle of replicating temporary tables when it was stopped, and RESET\nSLAVE is issued, these replicated temporary tables are deleted on the\nslave.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset-slave.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (39,26,'SHOW BINARY LOGS','Syntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [HELP PURGE BINARY LOGS], that shows\nhow to determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-binary-logs.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-binary-logs.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (40,23,'POLYGON','Polygon(ls1,ls2,...)\n\nConstructs a WKB Polygon value from a number of WKB LineString\narguments. If any argument does not represent the WKB of a LinearRing\n(that is, not a closed and simple LineString) the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (38,25,'RESET SLAVE','Syntax:\nRESET SLAVE\n\nRESET SLAVE makes the slave forget its replication position in the\nmaster\'s binary logs. This statement is meant to be used for a clean\nstart: It deletes the master.info and relay-log.info files, all the\nrelay logs, and starts a new relay log.\n\n*Note*: All relay logs are deleted, even if they have not been\ncompletely executed by the slave SQL thread. (This is a condition\nlikely to exist on a replication slave if you have issued a STOP SLAVE\nstatement or if the slave is highly loaded.)\n\nConnection information stored in the master.info file is immediately\nreset using any values specified in the corresponding startup options.\nThis information includes values such as master host, master port,\nmaster user, and master password. If the slave SQL thread was in the\nmiddle of replicating temporary tables when it was stopped, and RESET\nSLAVE is issued, these replicated temporary tables are deleted on the\nslave.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset-slave.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (39,25,'SHOW BINARY LOGS','Syntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [HELP PURGE BINARY LOGS], that shows\nhow to determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-binary-logs.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-binary-logs.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (40,23,'POLYGON','Polygon(ls1,ls2,...)\n\nConstructs a Polygon value from a number of LineString or WKB\nLineString arguments. If any argument does not represent a LinearRing\n(that is, not a closed and simple LineString), the return value is\nNULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (41,30,'MINUTE','Syntax:\nMINUTE(time)\n\nReturns the minute for time, in the range 0 to 59.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MINUTE(\'2008-02-03 10:05:03\');\n -> 5\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (42,30,'DAY','Syntax:\nDAY(date)\n\nDAY() is a synonym for DAYOFMONTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (43,35,'MID','Syntax:\nMID(str,pos,len)\n\nMID(str,pos,len) is a synonym for SUBSTRING(str,pos,len).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (44,14,'UUID','Syntax:\nUUID()\n\nReturns a Universal Unique Identifier (UUID) generated according to\n"DCE 1.1: Remote Procedure Call" (Appendix A) CAE (Common Applications\nEnvironment) Specifications published by The Open Group in October 1997\n(Document Number C706,\nhttp://www.opengroup.org/public/pubs/catalog/c706.htm).\n\nA UUID is designed as a number that is globally unique in space and\ntime. Two calls to UUID() are expected to generate two different\nvalues, even if these calls are performed on two separate computers\nthat are not connected to each other.\n\nA UUID is a 128-bit number represented by a utf8 string of five\nhexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format:\n\no The first three numbers are generated from a timestamp.\n\no The fourth number preserves temporal uniqueness in case the timestamp\n value loses monotonicity (for example, due to daylight saving time).\n\no The fifth number is an IEEE 802 node number that provides spatial\n uniqueness. A random number is substituted if the latter is not\n available (for example, because the host computer has no Ethernet\n card, or we do not know how to find the hardware address of an\n interface on your operating system). In this case, spatial uniqueness\n cannot be guaranteed. Nevertheless, a collision should have very low\n probability.\n\n Currently, the MAC address of an interface is taken into account only\n on FreeBSD and Linux. On other operating systems, MySQL uses a\n randomly generated 48-bit number.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID();\n -> \'6ccd780c-baba-1026-9564-0040f4311e29\'\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (45,23,'LINESTRING','LineString(pt1,pt2,...)\n\nConstructs a WKB LineString value from a number of WKB Point arguments.\nIf any argument is not a WKB Point, the return value is NULL. If the\nnumber of Point arguments is less than two, the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (45,23,'LINESTRING','LineString(pt1,pt2,...)\n\nConstructs a LineString value from a number of Point or WKB Point\narguments. If the number of arguments is less than two, the return\nvalue is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (46,14,'SLEEP','Syntax:\nSLEEP(duration)\n\nSleeps (pauses) for the number of seconds given by the duration\nargument, then returns 0. If SLEEP() is interrupted, it returns 1. The\nduration may have a fractional part given in microseconds.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (47,15,'CONNECTION_ID','Syntax:\nCONNECTION_ID()\n\nReturns the connection ID (thread ID) for the connection. Every\nconnection has an ID that is unique among the set of currently\nconnected clients.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT CONNECTION_ID();\n -> 23786\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (48,26,'DELETE','Syntax:\nSingle-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n tbl_name[.*] [, tbl_name[.*]] ...\n FROM table_references\n [WHERE where_condition]\n\nOr:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n FROM tbl_name[.*] [, tbl_name[.*]] ...\n USING table_references\n [WHERE where_condition]\n\nFor the single-table syntax, the DELETE statement deletes rows from\ntbl_name and returns a count of the number of deleted rows. This count\ncan be obtained by calling the ROW_COUNT() function (see\nhttp://dev.mysql.com/doc/refman/5.1/en/information-functions.html) The\nWHERE clause, if given, specifies the conditions that identify which\nrows to delete. With no WHERE clause, all rows are deleted. If the\nORDER BY clause is specified, the rows are deleted in the order that is\nspecified. The LIMIT clause places a limit on the number of rows that\ncan be deleted.\n\nFor the multiple-table syntax, DELETE deletes from each tbl_name the\nrows that satisfy the conditions. In this case, ORDER BY and LIMIT\ncannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe deleted. It is specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nCurrently, you cannot delete from a table and select from the same\ntable in a subquery.\n\nAs stated, a DELETE statement with no WHERE clause deletes all rows. A\nfaster way to do this, when you do not need to know the number of\ndeleted rows, is to use TRUNCATE TABLE. However, within a transaction\nor if you have a lock on the table, TRUNCATE TABLE cannot be used\nwhereas DELETE can. See [HELP TRUNCATE TABLE], and [HELP LOCK].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/delete.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/delete.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (48,26,'DELETE','Syntax:\nSingle-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n tbl_name[.*] [, tbl_name[.*]] ...\n FROM table_references\n [WHERE where_condition]\n\nOr:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n FROM tbl_name[.*] [, tbl_name[.*]] ...\n USING table_references\n [WHERE where_condition]\n\nFor the single-table syntax, the DELETE statement deletes rows from\ntbl_name and returns a count of the number of deleted rows. This count\ncan be obtained by calling the ROW_COUNT() function (see\nhttp://dev.mysql.com/doc/refman/5.1/en/information-functions.html) The\nWHERE clause, if given, specifies the conditions that identify which\nrows to delete. With no WHERE clause, all rows are deleted. If the\nORDER BY clause is specified, the rows are deleted in the order that is\nspecified. The LIMIT clause places a limit on the number of rows that\ncan be deleted.\n\nFor the multiple-table syntax, DELETE deletes from each tbl_name the\nrows that satisfy the conditions. In this case, ORDER BY and LIMIT\ncannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe deleted. It is specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nCurrently, you cannot delete from a table and select from the same\ntable in a subquery.\n\nYou need the DELETE privilege on a table to delete rows from it. You\nneed only the SELECT privilege for any columns that are only read, such\nas those named in the WHERE clause.\n\nAs stated, a DELETE statement with no WHERE clause deletes all rows. A\nfaster way to do this, when you do not need to know the number of\ndeleted rows, is to use TRUNCATE TABLE. However, within a transaction\nor if you have a lock on the table, TRUNCATE TABLE cannot be used\nwhereas DELETE can. See [HELP TRUNCATE TABLE], and [HELP LOCK].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/delete.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/delete.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (49,4,'ROUND','Syntax:\nROUND(X), ROUND(X,D)\n\nRounds the argument X to D decimal places. The rounding algorithm\ndepends on the data type of X. D defaults to 0 if not specified. D can\nbe negative to cause D digits left of the decimal point of the value X\nto become zero.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ROUND(-1.23);\n -> -1\nmysql> SELECT ROUND(-1.58);\n -> -2\nmysql> SELECT ROUND(1.58);\n -> 2\nmysql> SELECT ROUND(1.298, 1);\n -> 1.3\nmysql> SELECT ROUND(1.298, 0);\n -> 1\nmysql> SELECT ROUND(23.298, -1);\n -> 20\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (50,7,'NULLIF','Syntax:\nNULLIF(expr1,expr2)\n\nReturns NULL if expr1 = expr2 is true, otherwise returns expr1. This is\nthe same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT NULLIF(1,1);\n -> NULL\nmysql> SELECT NULLIF(1,2);\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (51,22,'CLOSE','Syntax:\nCLOSE cursor_name\n\nThis statement closes a previously opened cursor.\n\nIf not closed explicitly, a cursor is closed at the end of the compound\nstatement in which it was declared.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/close.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/close.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (52,26,'STOP SLAVE','Syntax:\nSTOP SLAVE [thread_type [, thread_type] ... ]\n\nthread_type: IO_THREAD | SQL_THREAD\n\nStops the slave threads. STOP SLAVE requires the SUPER privilege.\n\nLike START SLAVE, this statement may be used with the IO_THREAD and\nSQL_THREAD options to name the thread or threads to be stopped.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/stop-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/stop-slave.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (52,25,'STOP SLAVE','Syntax:\nSTOP SLAVE [thread_type [, thread_type] ... ]\n\nthread_type: IO_THREAD | SQL_THREAD\n\nStops the slave threads. STOP SLAVE requires the SUPER privilege.\n\nLike START SLAVE, this statement may be used with the IO_THREAD and\nSQL_THREAD options to name the thread or threads to be stopped.\n\n*Note*: The transactional behavior of STOP SLAVE changed in MySQL\n5.1.35. Previously, it took effect immediately; beginning with MySQL\n5.1.35, it waits until the current replication event group (if any) has\nfinished executing, or until the user issues a KILL QUERY or KILL\nCONNECTION statement. (Bug#319 (http://bugs.mysql.com/319) Bug#38205\n(http://bugs.mysql.com/38205))\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/stop-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/stop-slave.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (53,30,'TIMEDIFF','Syntax:\nTIMEDIFF(expr1,expr2)\n\nTIMEDIFF() returns expr1 - expr2 expressed as a time value. expr1 and\nexpr2 are time or date-and-time expressions, but both must be of the\nsame type.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMEDIFF(\'2000:01:01 00:00:00\',\n -> \'2000:01:01 00:00:00.000001\');\n -> \'-00:00:00.000001\'\nmysql> SELECT TIMEDIFF(\'2008-12-31 23:59:59.000001\',\n -> \'2008-12-30 01:01:01.000002\');\n -> \'46:58:57.999999\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (54,35,'REPLACE FUNCTION','Syntax:\nREPLACE(str,from_str,to_str)\n\nReturns the string str with all occurrences of the string from_str\nreplaced by the string to_str. REPLACE() performs a case-sensitive\nmatch when searching for from_str.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT REPLACE(\'www.mysql.com\', \'w\', \'Ww\');\n -> \'WwWwWw.mysql.com\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (55,27,'USE','Syntax:\nUSE db_name\n\nThe USE db_name statement tells MySQL to use the db_name database as\nthe default (current) database for subsequent statements. The database\nremains the default until the end of the session or another USE\nstatement is issued:\n\nUSE db1;\nSELECT COUNT(*) FROM mytable; # selects from db1.mytable\nUSE db2;\nSELECT COUNT(*) FROM mytable; # selects from db2.mytable\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/use.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/use.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (56,3,'LINEFROMTEXT','LineFromText(wkt[,srid]), LineStringFromText(wkt[,srid])\n\nConstructs a LINESTRING value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (57,7,'CASE OPERATOR','Syntax:\nCASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN\nresult ...] [ELSE result] END\n\nCASE WHEN [condition] THEN result [WHEN [condition] THEN result ...]\n[ELSE result] END\n\nThe first version returns the result where value=compare_value. The\nsecond version returns the result for the first condition that is true.\nIf there was no matching result value, the result after ELSE is\nreturned, or NULL if there is no ELSE part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT CASE 1 WHEN 1 THEN \'one\'\n -> WHEN 2 THEN \'two\' ELSE \'more\' END;\n -> \'one\'\nmysql> SELECT CASE WHEN 1>0 THEN \'true\' ELSE \'false\' END;\n -> \'true\'\nmysql> SELECT CASE BINARY \'B\'\n -> WHEN \'a\' THEN 1 WHEN \'b\' THEN 2 END;\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (58,26,'SHOW MASTER STATUS','Syntax:\nSHOW MASTER STATUS\n\nProvides status information about the binary log files of the master.\nExample:\n\nmysql> SHOW MASTER STATUS;\n+---------------+----------+--------------+------------------+\n| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |\n+---------------+----------+--------------+------------------+\n| mysql-bin.003 | 73 | test | manual,mysql |\n+---------------+----------+--------------+------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-master-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-master-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (58,25,'SHOW MASTER STATUS','Syntax:\nSHOW MASTER STATUS\n\nThis statement provides status information about the binary log files\nof the master. It requires either the SUPER or REPLICATION CLIENT\nprivilege.\n\nExample:\n\nmysql> SHOW MASTER STATUS;\n+---------------+----------+--------------+------------------+\n| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |\n+---------------+----------+--------------+------------------+\n| mysql-bin.003 | 73 | test | manual,mysql |\n+---------------+----------+--------------+------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-master-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-master-status.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (59,30,'ADDTIME','Syntax:\nADDTIME(expr1,expr2)\n\nADDTIME() adds expr2 to expr1 and returns the result. expr1 is a time\nor datetime expression, and expr2 is a time expression.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT ADDTIME(\'2007-12-31 23:59:59.999999\', \'1 1:1:1.000002\');\n -> \'2008-01-02 01:01:01.000001\'\nmysql> SELECT ADDTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'03:00:01.999997\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (60,32,'SPATIAL','MySQL can create spatial indexes using syntax similar to that for\ncreating regular indexes, but extended with the SPATIAL keyword.\nCurrently, columns in spatial indexes must be declared NOT NULL. The\nfollowing examples demonstrate how to create spatial indexes:\n\no With CREATE TABLE:\n\nCREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g));\n\no With ALTER TABLE:\n\nALTER TABLE geom ADD SPATIAL INDEX(g);\n\no With CREATE INDEX:\n\nCREATE SPATIAL INDEX sp_index ON geom (g);\n\nFor MyISAM tables, SPATIAL INDEX creates an R-tree index. For storage\nengines that support non-spatial indexing of spatial columns, the\nengine creates a B-tree index. A B-tree index on spatial values will be\nuseful for exact-value lookups, but not for range scans.\n\nFor more information on indexing spatial columns, see [HELP CREATE\nINDEX].\n\nTo drop spatial indexes, use ALTER TABLE or DROP INDEX:\n\no With ALTER TABLE:\n\nALTER TABLE geom DROP INDEX g;\n\no With DROP INDEX:\n\nDROP INDEX sp_index ON geom;\n\nExample: Suppose that a table geom contains more than 32,000\ngeometries, which are stored in the column g of type GEOMETRY. The\ntable also has an AUTO_INCREMENT column fid for storing object ID\nvalues.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (60,32,'SPATIAL','MySQL can create spatial indexes using syntax similar to that for\ncreating regular indexes, but extended with the SPATIAL keyword.\nCurrently, columns in spatial indexes must be declared NOT NULL. The\nfollowing examples demonstrate how to create spatial indexes:\n\no With CREATE TABLE:\n\nCREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g));\n\no With ALTER TABLE:\n\nALTER TABLE geom ADD SPATIAL INDEX(g);\n\no With CREATE INDEX:\n\nCREATE SPATIAL INDEX sp_index ON geom (g);\n\nFor MyISAM tables, SPATIAL INDEX creates an R-tree index. For storage\nengines that support nonspatial indexing of spatial columns, the engine\ncreates a B-tree index. A B-tree index on spatial values will be useful\nfor exact-value lookups, but not for range scans.\n\nFor more information on indexing spatial columns, see [HELP CREATE\nINDEX].\n\nTo drop spatial indexes, use ALTER TABLE or DROP INDEX:\n\no With ALTER TABLE:\n\nALTER TABLE geom DROP INDEX g;\n\no With DROP INDEX:\n\nDROP INDEX sp_index ON geom;\n\nExample: Suppose that a table geom contains more than 32,000\ngeometries, which are stored in the column g of type GEOMETRY. The\ntable also has an AUTO_INCREMENT column fid for storing object ID\nvalues.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (61,30,'TIMESTAMPDIFF','Syntax:\nTIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)\n\nReturns datetime_expr2 - datetime_expr1, where datetime_expr1 and\ndatetime_expr2 are date or datetime expressions. One expression may be\na date and the other a datetime; a date value is treated as a datetime\nhaving the time part \'00:00:00\' where necessary. The unit for the\nresult (an integer) is given by the unit argument. The legal values for\nunit are the same as those listed in the description of the\nTIMESTAMPADD() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPDIFF(MONTH,\'2003-02-01\',\'2003-05-01\');\n -> 3\nmysql> SELECT TIMESTAMPDIFF(YEAR,\'2002-05-01\',\'2001-01-01\');\n -> -1\nmysql> SELECT TIMESTAMPDIFF(MINUTE,\'2003-02-01\',\'2003-05-01 12:05:55\');\n -> 128885\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (62,35,'UPPER','Syntax:\nUPPER(str)\n\nReturns the string str with all characters changed to uppercase\naccording to the current character set mapping. The default is latin1\n(cp1252 West European).\n\nmysql> SELECT UPPER(\'Hej\');\n -> \'HEJ\'\n\nUPPER() is ineffective when applied to binary strings (BINARY,\nVARBINARY, BLOB). The description of LOWER() shows how to perform\nlettercase conversion of binary strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (63,30,'FROM_UNIXTIME','Syntax:\nFROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)\n\nReturns a representation of the unix_timestamp argument as a value in\n\'YYYY-MM-DD HH:MM:SS\' or YYYYMMDDHHMMSS.uuuuuu format, depending on\nwhether the function is used in a string or numeric context. The value\nis expressed in the current time zone. unix_timestamp is an internal\ntimestamp value such as is produced by the UNIX_TIMESTAMP() function.\n\nIf format is given, the result is formatted according to the format\nstring, which is used the same way as listed in the entry for the\nDATE_FORMAT() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_UNIXTIME(1196440219);\n -> \'2007-11-30 10:30:19\'\nmysql> SELECT FROM_UNIXTIME(1196440219) + 0;\n -> 20071130103019.000000\nmysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),\n -> \'%Y %D %M %h:%i:%s %x\');\n -> \'2007 30th November 10:30:59 2007\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (64,20,'MEDIUMBLOB','MEDIUMBLOB\n\nA BLOB column with a maximum length of 16,777,215 (224 - 1) bytes. Each\nMEDIUMBLOB value is stored using a three-byte length prefix that\nindicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (65,7,'IFNULL','Syntax:\nIFNULL(expr1,expr2)\n\nIf expr1 is not NULL, IFNULL() returns expr1; otherwise it returns\nexpr2. IFNULL() returns a numeric or string value, depending on the\ncontext in which it is used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT IFNULL(1,0);\n -> 1\nmysql> SELECT IFNULL(NULL,10);\n -> 10\nmysql> SELECT IFNULL(1/0,10);\n -> 10\nmysql> SELECT IFNULL(1/0,\'yes\');\n -> \'yes\'\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (66,26,'SHOW FUNCTION CODE','Syntax:\nSHOW FUNCTION CODE func_name\n\nThis statement is similar to SHOW PROCEDURE CODE but for stored\nfunctions. See [HELP SHOW PROCEDURE CODE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-function-code.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-function-code.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (67,26,'SHOW ERRORS','Syntax:\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW COUNT(*) ERRORS\n\nThis statement is similar to SHOW WARNINGS, except that instead of\ndisplaying errors, warnings, and notes, it displays only errors.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nThe SHOW COUNT(*) ERRORS statement displays the number of errors. You\ncan also retrieve this number from the error_count variable:\n\nSHOW COUNT(*) ERRORS;\nSELECT @@error_count;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-errors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-errors.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (66,25,'SHOW FUNCTION CODE','Syntax:\nSHOW FUNCTION CODE func_name\n\nThis statement is similar to SHOW PROCEDURE CODE but for stored\nfunctions. See [HELP SHOW PROCEDURE CODE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-function-code.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-function-code.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (67,25,'SHOW ERRORS','Syntax:\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW COUNT(*) ERRORS\n\nThis statement is similar to SHOW WARNINGS, except that instead of\ndisplaying errors, warnings, and notes, it displays only errors.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nThe SHOW COUNT(*) ERRORS statement displays the number of errors. You\ncan also retrieve this number from the error_count variable:\n\nSHOW COUNT(*) ERRORS;\nSELECT @@error_count;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-errors.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-errors.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (68,17,'LEAST','Syntax:\nLEAST(value1,value2,...)\n\nWith two or more arguments, returns the smallest (minimum-valued)\nargument. The arguments are compared using the following rules:\n\no If the return value is used in an INTEGER context or all arguments\n are integer-valued, they are compared as integers.\n\no If the return value is used in a REAL context or all arguments are\n real-valued, they are compared as reals.\n\no If any argument is a case-sensitive string, the arguments are\n compared as case-sensitive strings.\n\no In all other cases, the arguments are compared as case-insensitive\n strings.\n\nLEAST() returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT LEAST(2,0);\n -> 0\nmysql> SELECT LEAST(34.0,3.0,5.0,767.0);\n -> 3.0\nmysql> SELECT LEAST(\'B\',\'A\',\'C\');\n -> \'A\'\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (69,17,'=','=\n\nEqual:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 = 0;\n -> 0\nmysql> SELECT \'0\' = 0;\n -> 1\nmysql> SELECT \'0.0\' = 0;\n -> 1\nmysql> SELECT \'0.01\' = 0;\n -> 0\nmysql> SELECT \'.01\' = 0.01;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (70,35,'REVERSE','Syntax:\nREVERSE(str)\n\nReturns the string str with the order of the characters reversed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT REVERSE(\'abc\');\n -> \'cba\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (71,17,'ISNULL','Syntax:\nISNULL(expr)\n\nIf expr is NULL, ISNULL() returns 1, otherwise it returns 0.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT ISNULL(1+1);\n -> 0\nmysql> SELECT ISNULL(1/0);\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (72,20,'BINARY','BINARY(M)\n\nThe BINARY type is similar to the CHAR type, but stores binary byte\nstrings rather than non-binary character strings. M represents the\ncolumn length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (72,20,'BINARY','BINARY(M)\n\nThe BINARY type is similar to the CHAR type, but stores binary byte\nstrings rather than nonbinary character strings. M represents the\ncolumn length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (73,20,'BLOB DATA TYPE','A BLOB is a binary large object that can hold a variable amount of\ndata. The four BLOB types are TINYBLOB, BLOB, MEDIUMBLOB, and LONGBLOB.\nThese differ only in the maximum length of the values they can hold.\nThe four TEXT types are TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT. These\ncorrespond to the four BLOB types and have the same maximum lengths and\nstorage requirements. See\nhttp://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html.\n\nU…: http://dev.mysql.com/doc/refman/5.1/en/blob.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/blob.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (74,34,'BOUNDARY','Boundary(g)\n\nReturns a geometry that is the closure of the combinatorial boundary of\nthe geometry value g.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (75,9,'CREATE USER','Syntax:\nCREATE USER user [IDENTIFIED BY [PASSWORD] \'password\']\n [, user [IDENTIFIED BY [PASSWORD] \'password\']] ...\n\nThe CREATE USER statement creates new MySQL accounts. To use it, you\nmust have the global CREATE USER privilege or the INSERT privilege for\nthe mysql database. For each account, CREATE USER creates a new row in\nthe mysql.user table that has no privileges. An error occurs if the\naccount already exists. Each account is named using the same format as\nfor the GRANT statement; for example, \'jeffrey\'@\'localhost\'. If you\nspecify only the user name part of the account name, a host name part\nof \'%\' is used. For additional information about specifying account\nnames, see [HELP GRANT].\n\nThe account can be given a password with the optional IDENTIFIED BY\nclause. The user value and the password are given the same way as for\nthe GRANT statement. In particular, to specify the password in plain\ntext, omit the PASSWORD keyword. To specify the password as the hashed\nvalue as returned by the PASSWORD() function, include the PASSWORD\nkeyword. See [HELP GRANT].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-user.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (76,23,'POINT','Point(x,y)\n\nConstructs a WKB Point using its coordinates.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (76,23,'POINT','Point(x,y)\n\nConstructs a Point using its coordinates.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (77,15,'CURRENT_USER','Syntax:\nCURRENT_USER, CURRENT_USER()\n\nReturns the user name and host name combination for the MySQL account\nthat the server used to authenticate the current client. This account\ndetermines your access privileges. The return value is a string in the\nutf8 character set.\n\nThe value of CURRENT_USER() can differ from the value of USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\nmysql> SELECT * FROM mysql.user;\nERROR 1044: Access denied for user \'\'@\'localhost\' to\ndatabase \'mysql\'\nmysql> SELECT CURRENT_USER();\n -> \'@localhost\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (78,35,'LCASE','Syntax:\nLCASE(str)\n\nLCASE() is a synonym for LOWER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (79,17,'<=','Syntax:\n<=\n\nLess than or equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 0.1 <= 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (80,26,'SHOW PROFILES','Syntax:\nSHOW PROFILE [type [, type] ... ]\n [FOR QUERY n]\n [LIMIT row_count [OFFSET offset]]\n\ntype:\n ALL\n | BLOCK IO\n | CONTEXT SWITCHES\n | CPU\n | IPC\n | MEMORY\n | PAGE FAULTS\n | SOURCE\n | SWAPS\n\nThe SHOW PROFILES and SHOW PROFILE statements display profiling\ninformation that indicates resource usage for statements executed\nduring the course of the current session.\n\nProfiling is controlled by the profiling session variable, which has a\ndefault value of 0 (OFF). Profiling is enabled by setting profiling to\n1 or ON:\n\nmysql> SET profiling = 1;\n\nSHOW PROFILES displays a list of the most recent statements sent to the\nmaster. The size of the list is controlled by the\nprofiling_history_size session variable, which has a default value of\n15. The maximum value is 100. Setting the value to 0 has the practical\neffect of disabling profiling.\n\nAll statements are profiled except SHOW PROFILES and SHOW PROFILE, so\nyou will find neither of those statements in the profile list.\nMalformed statements are profiled. For example, SHOW PROFILING is an\nillegal statement, and a syntax error occurs if you try to execute it,\nbut it will show up in the profiling list.\n\nSHOW PROFILE displays detailed information about a single statement.\nWithout the FOR QUERY n clause, the output pertains to the most\nrecently executed statement. If FOR QUERY n is included, SHOW PROFILE\ndisplays information for statement n. The values of n correspond to the\nQuery_ID values displayed by SHOW PROFILES.\n\nThe LIMIT row_count clause may be given to limit the output to\nrow_count rows. If LIMIT is given, OFFSET offset may be added to begin\nthe output offset rows into the full set of rows.\n\nBy default, SHOW PROFILE displays Status and Duration columns. The\nStatus values are like the State values displayed by SHOW PROCESSLIST,\nalthought there might be some minor differences in interpretion for the\ntwo statements for some status values (see\nhttp://dev.mysql.com/doc/refman/5.1/en/thread-information.html).\n\nOp… type values may be specified to display specific additional\ntypes of information:\n\no ALL displays all information\n\no BLOCK IO displays counts for block input and output operations\n\no CONTEXT SWITCHES displays counts for voluntary and involuntary\n context switches\n\no CPU displays user and system CPU usage times\n\no IPC displays counts for messages sent and received\n\no MEMORY is not currently implemented\n\no PAGE FAULTS displays counts for major and minor page faults\n\no SOURCE displays the names of functions from the source code, together\n with the name and line number of the file in which the function\n occurs\n\no SWAPS displays swap counts\n\nProfiling is enabled per session. When a session ends, its profiling\ninformation is lost.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html\n\n','mysql> SELECT @@profiling;\n+-------------+\n| @@profiling |\n+-------------+\n| 0 |\n+-------------+\n1 row in set (0.00 sec)\n\nmysql> SET profiling = 1;\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> DROP TABLE IF EXISTS t1;\nQuery OK, 0 rows affected, 1 warning (0.00 sec)\n\nmysql> CREATE TABLE T1 (id INT);\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SHOW PROFILES;\n+----------+----------+--------------------------+\n| Query_ID | Duration | Query |\n+----------+----------+--------------------------+\n| 0 | 0.000088 | SET PROFILING = 1 |\n| 1 | 0.000136 | DROP TABLE IF EXISTS t1 |\n| 2 | 0.011947 | CREATE TABLE t1 (id INT) |\n+----------+----------+--------------------------+\n3 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE;\n+----------------------+----------+\n| Status | Duration |\n+----------------------+----------+\n| checking permissions | 0.000040 |\n| creating table | 0.000056 |\n| After create | 0.011363 |\n| query end | 0.000375 |\n| freeing items | 0.000089 |\n| logging slow query | 0.000019 |\n| cleaning up | 0.000005 |\n+----------------------+----------+\n7 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE FOR QUERY 1;\n+--------------------+----------+\n| Status | Duration |\n+--------------------+----------+\n| query end | 0.000107 |\n| freeing items | 0.000008 |\n| logging slow query | 0.000015 |\n| cleaning up | 0.000006 |\n+--------------------+----------+\n4 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE CPU FOR QUERY 2;\n+----------------------+----------+----------+------------+\n| Status | Duration | CPU_user | CPU_system |\n+----------------------+----------+----------+------------+\n| checking permissions | 0.000040 | 0.000038 | 0.000002 |\n| creating table | 0.000056 | 0.000028 | 0.000028 |\n| After create | 0.011363 | 0.000217 | 0.001571 |\n| query end | 0.000375 | 0.000013 | 0.000028 |\n| freeing items | 0.000089 | 0.000010 | 0.000014 |\n| logging slow query | 0.000019 | 0.000009 | 0.000010 |\n| cleaning up | 0.000005 | 0.000003 | 0.000002 |\n+----------------------+----------+----------+------------+\n7 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (81,26,'UPDATE','Syntax:\nSingle-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_reference\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_references\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n\nFor the single-table syntax, the UPDATE statement updates columns of\nexisting rows in the named table with new values. The SET clause\nindicates which columns to modify and the values they should be given.\nEach value can be given as an expression, or the keyword DEFAULT to set\na column explicitly to its default value. The WHERE clause, if given,\nspecifies the conditions that identify which rows to update. With no\nWHERE clause, all rows are updated. If the ORDER BY clause is\nspecified, the rows are updated in the order that is specified. The\nLIMIT clause places a limit on the number of rows that can be updated.\n\nFor the multiple-table syntax, UPDATE updates rows in each table named\nin table_references that satisfy the conditions. In this case, ORDER BY\nand LIMIT cannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe updated.\n\ntable_references and where_condition are is specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nThe UPDATE statement supports the following modifiers:\n\no If you use the LOW_PRIORITY keyword, execution of the UPDATE is\n delayed until no other clients are reading from the table. This\n affects only storage engines that use only table-level locking\n (MyISAM, MEMORY, MERGE).\n\no If you use the IGNORE keyword, the update statement does not abort\n even if errors occur during the update. Rows for which duplicate-key\n conflicts occur are not updated. Rows for which columns are updated\n to values that would cause data conversion errors are updated to the\n closest valid values instead.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/update.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/update.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (80,25,'SHOW PROFILES','Syntax:\nSHOW PROFILE [type [, type] ... ]\n [FOR QUERY n]\n [LIMIT row_count [OFFSET offset]]\n\ntype:\n ALL\n | BLOCK IO\n | CONTEXT SWITCHES\n | CPU\n | IPC\n | MEMORY\n | PAGE FAULTS\n | SOURCE\n | SWAPS\n\nThe SHOW PROFILES and SHOW PROFILE statements display profiling\ninformation that indicates resource usage for statements executed\nduring the course of the current session.\n\nProfiling is controlled by the profiling session variable, which has a\ndefault value of 0 (OFF). Profiling is enabled by setting profiling to\n1 or ON:\n\nmysql> SET profiling = 1;\n\nSHOW PROFILES displays a list of the most recent statements sent to the\nmaster. The size of the list is controlled by the\nprofiling_history_size session variable, which has a default value of\n15. The maximum value is 100. Setting the value to 0 has the practical\neffect of disabling profiling.\n\nAll statements are profiled except SHOW PROFILES and SHOW PROFILE, so\nyou will find neither of those statements in the profile list.\nMalformed statements are profiled. For example, SHOW PROFILING is an\nillegal statement, and a syntax error occurs if you try to execute it,\nbut it will show up in the profiling list.\n\nSHOW PROFILE displays detailed information about a single statement.\nWithout the FOR QUERY n clause, the output pertains to the most\nrecently executed statement. If FOR QUERY n is included, SHOW PROFILE\ndisplays information for statement n. The values of n correspond to the\nQuery_ID values displayed by SHOW PROFILES.\n\nThe LIMIT row_count clause may be given to limit the output to\nrow_count rows. If LIMIT is given, OFFSET offset may be added to begin\nthe output offset rows into the full set of rows.\n\nBy default, SHOW PROFILE displays Status and Duration columns. The\nStatus values are like the State values displayed by SHOW PROCESSLIST,\nalthought there might be some minor differences in interpretion for the\ntwo statements for some status values (see\nhttp://dev.mysql.com/doc/refman/5.1/en/thread-information.html).\n\nOp… type values may be specified to display specific additional\ntypes of information:\n\no ALL displays all information\n\no BLOCK IO displays counts for block input and output operations\n\no CONTEXT SWITCHES displays counts for voluntary and involuntary\n context switches\n\no CPU displays user and system CPU usage times\n\no IPC displays counts for messages sent and received\n\no MEMORY is not currently implemented\n\no PAGE FAULTS displays counts for major and minor page faults\n\no SOURCE displays the names of functions from the source code, together\n with the name and line number of the file in which the function\n occurs\n\no SWAPS displays swap counts\n\nProfiling is enabled per session. When a session ends, its profiling\ninformation is lost.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html\n\n','mysql> SELECT @@profiling;\n+-------------+\n| @@profiling |\n+-------------+\n| 0 |\n+-------------+\n1 row in set (0.00 sec)\n\nmysql> SET profiling = 1;\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> DROP TABLE IF EXISTS t1;\nQuery OK, 0 rows affected, 1 warning (0.00 sec)\n\nmysql> CREATE TABLE T1 (id INT);\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SHOW PROFILES;\n+----------+----------+--------------------------+\n| Query_ID | Duration | Query |\n+----------+----------+--------------------------+\n| 0 | 0.000088 | SET PROFILING = 1 |\n| 1 | 0.000136 | DROP TABLE IF EXISTS t1 |\n| 2 | 0.011947 | CREATE TABLE t1 (id INT) |\n+----------+----------+--------------------------+\n3 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE;\n+----------------------+----------+\n| Status | Duration |\n+----------------------+----------+\n| checking permissions | 0.000040 |\n| creating table | 0.000056 |\n| After create | 0.011363 |\n| query end | 0.000375 |\n| freeing items | 0.000089 |\n| logging slow query | 0.000019 |\n| cleaning up | 0.000005 |\n+----------------------+----------+\n7 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE FOR QUERY 1;\n+--------------------+----------+\n| Status | Duration |\n+--------------------+----------+\n| query end | 0.000107 |\n| freeing items | 0.000008 |\n| logging slow query | 0.000015 |\n| cleaning up | 0.000006 |\n+--------------------+----------+\n4 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE CPU FOR QUERY 2;\n+----------------------+----------+----------+------------+\n| Status | Duration | CPU_user | CPU_system |\n+----------------------+----------+----------+------------+\n| checking permissions | 0.000040 | 0.000038 | 0.000002 |\n| creating table | 0.000056 | 0.000028 | 0.000028 |\n| After create | 0.011363 | 0.000217 | 0.001571 |\n| query end | 0.000375 | 0.000013 | 0.000028 |\n| freeing items | 0.000089 | 0.000010 | 0.000014 |\n| logging slow query | 0.000019 | 0.000009 | 0.000010 |\n| cleaning up | 0.000005 | 0.000003 | 0.000002 |\n+----------------------+----------+----------+------------+\n7 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (81,26,'UPDATE','Syntax:\nSingle-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_reference\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_references\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n\nFor the single-table syntax, the UPDATE statement updates columns of\nexisting rows in the named table with new values. The SET clause\nindicates which columns to modify and the values they should be given.\nEach value can be given as an expression, or the keyword DEFAULT to set\na column explicitly to its default value. The WHERE clause, if given,\nspecifies the conditions that identify which rows to update. With no\nWHERE clause, all rows are updated. If the ORDER BY clause is\nspecified, the rows are updated in the order that is specified. The\nLIMIT clause places a limit on the number of rows that can be updated.\n\nFor the multiple-table syntax, UPDATE updates rows in each table named\nin table_references that satisfy the conditions. In this case, ORDER BY\nand LIMIT cannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe updated.\n\ntable_references and where_condition are is specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nYou need the UPDATE privilege only for columns referenced in an UPDATE\nthat are actually updated. You need only the SELECT privilege for any\ncolumns that are read but not modified.\n\nThe UPDATE statement supports the following modifiers:\n\no If you use the LOW_PRIORITY keyword, execution of the UPDATE is\n delayed until no other clients are reading from the table. This\n affects only storage engines that use only table-level locking\n (MyISAM, MEMORY, MERGE).\n\no If you use the IGNORE keyword, the update statement does not abort\n even if errors occur during the update. Rows for which duplicate-key\n conflicts occur are not updated. Rows for which columns are updated\n to values that would cause data conversion errors are updated to the\n closest valid values instead.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/update.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/update.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (82,17,'IS NOT NULL','Syntax:\nIS NOT NULL\n\nTests whether a value is not NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;\n -> 1, 1, 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (83,22,'CASE STATEMENT','Syntax:\nCASE case_value\n WHEN when_value THEN statement_list\n [WHEN when_value THEN statement_list] ...\n [ELSE statement_list]\nEND CASE\n\nOr:\n\nCASE\n WHEN search_condition THEN statement_list\n [WHEN search_condition THEN statement_list] ...\n [ELSE statement_list]\nEND CASE\n\nThe CASE statement for stored programs implements a complex conditional\nconstruct. If a search_condition evaluates to true, the corresponding\nSQL statement list is executed. If no search condition matches, the\nstatement list in the ELSE clause is executed. Each statement_list\nconsists of one or more statements.\n\nIf no when_value or search_condition matches the value tested and the\nCASE statement contains no ELSE clause, a Case not found for CASE\nstatement error results.\n\nEach statement_list consists of one or more statements; an empty\nstatement_list is not allowed. To handle situations where no value is\nmatched by any WHEN clause, use an ELSE containing an empty BEGIN ...\nEND block, as shown in this example: DELIMITER | CREATE PROCEDURE p()\nBEGIN DECLARE v INT DEFAULT 1; CASE v WHEN 2 THEN SELECT v; WHEN 3 THEN\nSELECT 0; ELSE BEGIN END; END CASE; END; | (The indentation used here\nin the ELSE clause is for purposes of clarity only, and is not\notherwise significant.)\n\n*Note*: The syntax of the CASE statement used inside stored programs\ndiffers slightly from that of the SQL CASE expression described in\nhttp://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html. The\nCASE statement cannot have an ELSE NULL clause, and it is terminated\nwith END CASE instead of END.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/case-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/case-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (84,26,'EXECUTE STATEMENT','Syntax:\nEXECUTE stmt_name\n [USING @var_name [, @var_name] ...]\n\nAfter preparing a statement with PREPARE, you execute it with an\nEXECUTE statement that refers to the prepared statement name. If the\nprepared statement contains any parameter markers, you must supply a\nUSING clause that lists user variables containing the values to be\nbound to the parameters. Parameter values can be supplied only by user\nvariables, and the USING clause must name exactly as many variables as\nthe number of parameter markers in the statement.\n\nYou can execute a given prepared statement multiple times, passing\ndifferent variables to it or setting the variables to different values\nbefore each execution.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/execute.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/execute.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (84,25,'EXECUTE STATEMENT','Syntax:\nEXECUTE stmt_name\n [USING @var_name [, @var_name] ...]\n\nAfter preparing a statement with PREPARE, you execute it with an\nEXECUTE statement that refers to the prepared statement name. If the\nprepared statement contains any parameter markers, you must supply a\nUSING clause that lists user variables containing the values to be\nbound to the parameters. Parameter values can be supplied only by user\nvariables, and the USING clause must name exactly as many variables as\nthe number of parameter markers in the statement.\n\nYou can execute a given prepared statement multiple times, passing\ndifferent variables to it or setting the variables to different values\nbefore each execution.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/execute.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/execute.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (85,37,'DROP INDEX','Syntax:\nDROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name\n\nDROP INDEX drops the index named index_name from the table tbl_name.\nThis statement is mapped to an ALTER TABLE statement to drop the index.\nSee [HELP ALTER TABLE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-index.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (86,35,'MATCH AGAINST','Syntax:\nMATCH (col1,col2,...) AGAINST (expr [search_modifier])\n\nMySQL has support for full-text indexing and searching:\n\no A full-text index in MySQL is an index of type FULLTEXT.\n\no Full-text indexes can be used only with MyISAM tables, and can be\n created only for CHAR, VARCHAR, or TEXT columns.\n\no A FULLTEXT index definition can be given in the CREATE TABLE\n statement when a table is created, or added later using ALTER TABLE\n or CREATE INDEX.\n\no For large data sets, it is much faster to load your data into a table\n that has no FULLTEXT index and then create the index after that, than\n to load data into a table that has an existing FULLTEXT index.\n\nFull-text searching is performed using MATCH() ... AGAINST syntax.\nMATCH() takes a comma-separated list that names the columns to be\nsearched. AGAINST takes a string to search for, and an optional\nmodifier that indicates what type of search to perform. The search\nstring must be a literal string, not a variable or a column name. There\nare three types of full-text searches:\n\no A boolean search interprets the search string using the rules of a\n special query language. The string contains the words to search for.\n It can also contain operators that specify requirements such that a\n word must be present or absent in matching rows, or that it should be\n weighted higher or lower than usual. Common words such as "some" or\n "then" are stopwords and do not match if present in the search\n string. The IN BOOLEAN MODE modifier specifies a boolean search. For\n more information, see\n http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html.\n\no A natural language search interprets the search string as a phrase in\n natural human language (a phrase in free text). There are no special\n operators. The stopword list applies. In addition, words that are\n present in 50% or more of the rows are considered common and do not\n match. Full-text searches are natural language searches if the IN\n NATURAL LANGUAGE MODE modifier is given or if no modifier is given.\n\no A query expansion search is a modification of a natural language\n search. The search string is used to perform a natural language\n search. Then words from the most relevant rows returned by the search\n are added to the search string and the search is done again. The\n query returns the rows from the second search. The IN NATURAL\n LANGUAGE MODE WITH QUERY EXPANSION or WITH QUERY EXPANSION modifier\n specifies a query expansion search. For more information, see\n http://dev.mysql.com/doc/refman/5.1/en/fulltext-query-expansion.html.\n\nThe IN NATURAL LANGUAGE MODE and IN NATURAL LANGUAGE MODE WITH QUERY\nEXPANSION modifiers were added in MySQL 5.1.7.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html\n\n','mysql> SELECT id, body, MATCH (title,body) AGAINST\n -> (\'Security implications of running MySQL as root\'\n -> IN NATURAL LANGUAGE MODE) AS score\n -> FROM articles WHERE MATCH (title,body) AGAINST\n -> (\'Security implications of running MySQL as root\'\n -> IN NATURAL LANGUAGE MODE);\n+----+-------------------------------------+-----------------+\n| id | body | score |\n+----+-------------------------------------+-----------------+\n| 4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |\n| 6 | When configured properly, MySQL ... | 1.3114095926285 |\n+----+-------------------------------------+-----------------+\n2 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (87,37,'CREATE EVENT','Syntax:\nCREATE \n [DEFINER = { user | CURRENT_USER }]\n EVENT \n [IF NOT EXISTS]\n event_name \n ON SCHEDULE schedule\n [ON COMPLETION [NOT] PRESERVE]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n DO sql_statement;\n\nschedule:\n AT timestamp [+ INTERVAL interval] ...\n | EVERY interval \n [STARTS timestamp [+ INTERVAL interval] ...] \n [ENDS timestamp [+ INTERVAL interval] ...]\n\ninterval:\n quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |\n WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |\n DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}\n\nThis statement creates and schedules a new event. It requires the EVENT\nprivilege for the schema in which the event is to be created.\n\nThe minimum requirements for a valid CREATE EVENT statement are as\nfollows:\n\no The keywords CREATE EVENT plus an event name, which uniquely\n identifies the event in the current schema. (Prior to MySQL 5.1.12,\n the event name needed to be unique only among events created by the\n same user on a given database.)\n\no An ON SCHEDULE clause, which determines when and how often the event\n executes.\n\no A DO clause, which contains the SQL statement to be executed by an\n event.\n\nThis is an example of a minimal CREATE EVENT statement:\n\nCREATE EVENT myevent\n ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR\n DO\n UPDATE myschema.mytable SET mycol = mycol + 1;\n\nThe previous statement creates an event named myevent. This event\nexecutes once --- one hour following its creation --- by running an SQL\nstatement that increments the value of the myschema.mytable table\'s\nmycol column by 1.\n\nThe event_name must be a valid MySQL identifier with a maximum length\nof 64 characters. It may be delimited using back ticks, and may be\nqualified with the name of a database schema. An event is associated\nwith both a MySQL user (the definer) and a schema, and its name must be\nunique among names of events within that schema. In general, the rules\ngoverning event names are the same as those for names of stored\nroutines. See http://dev.mysql.com/doc/refman/5.1/en/identifiers.html.\n\nIf no schema is indicated as part of event_name, the default (current)\nschema is assumed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-event.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (87,37,'CREATE EVENT','Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n EVENT\n [IF NOT EXISTS]\n event_name\n ON SCHEDULE schedule\n [ON COMPLETION [NOT] PRESERVE]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n DO sql_statement;\n\nschedule:\n AT timestamp [+ INTERVAL interval] ...\n | EVERY interval\n [STARTS timestamp [+ INTERVAL interval] ...]\n [ENDS timestamp [+ INTERVAL interval] ...]\n\ninterval:\n quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |\n WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |\n DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}\n\nThis statement creates and schedules a new event. It requires the EVENT\nprivilege for the schema in which the event is to be created.\n\nThe minimum requirements for a valid CREATE EVENT statement are as\nfollows:\n\no The keywords CREATE EVENT plus an event name, which uniquely\n identifies the event in the current schema. (Prior to MySQL 5.1.12,\n the event name needed to be unique only among events created by the\n same user on a given database.)\n\no An ON SCHEDULE clause, which determines when and how often the event\n executes.\n\no A DO clause, which contains the SQL statement to be executed by an\n event.\n\nThis is an example of a minimal CREATE EVENT statement:\n\nCREATE EVENT myevent\n ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR\n DO\n UPDATE myschema.mytable SET mycol = mycol + 1;\n\nThe previous statement creates an event named myevent. This event\nexecutes once --- one hour following its creation --- by running an SQL\nstatement that increments the value of the myschema.mytable table\'s\nmycol column by 1.\n\nThe event_name must be a valid MySQL identifier with a maximum length\nof 64 characters. It may be delimited using back ticks, and may be\nqualified with the name of a database schema. An event is associated\nwith both a MySQL user (the definer) and a schema, and its name must be\nunique among names of events within that schema. In general, the rules\ngoverning event names are the same as those for names of stored\nroutines. See http://dev.mysql.com/doc/refman/5.1/en/identifiers.html.\n\nIf no schema is indicated as part of event_name, the default (current)\nschema is assumed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-event.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (88,4,'ABS','Syntax:\nABS(X)\n\nReturns the absolute value of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ABS(2);\n -> 2\nmysql> SELECT ABS(-32);\n -> 32\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (89,31,'POLYFROMWKB','PolyFromWKB(wkb[,srid]), PolygonFromWKB(wkb[,srid])\n\nConstructs a POLYGON value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (90,35,'NOT LIKE','Syntax:\nexpr NOT LIKE pat [ESCAPE \'escape_char\']\n\nThis is the same as NOT (expr LIKE pat [ESCAPE \'escape_char\']).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (91,35,'SPACE','Syntax:\nSPACE(N)\n\nReturns a string consisting of N space characters.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SPACE(6);\n -> \' \'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (92,6,'MBR DEFINITION','Its MBR (Minimum Bounding Rectangle), or Envelope. This is the bounding\ngeometry, formed by the minimum and maximum (X,Y) coordinates:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-class-geometry.html\n\n','((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n','http://dev.mysql.com/doc/refman/5.1/en/gis-class-geometry.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (93,23,'GEOMETRYCOLLECTION','GeometryCollection(g1,g2,...)\n\nConstructs a WKB GeometryCollection. If any argument is not a\nwell-formed WKB representation of a geometry, the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (93,23,'GEOMETRYCOLLECTION','GeometryCollection(g1,g2,...)\n\nConstructs a GeometryCollection.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (94,16,'MAX','Syntax:\nMAX([DISTINCT] expr)\n\nReturns the maximum value of expr. MAX() may take a string argument; in\nsuch cases, it returns the maximum string value. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html. The DISTINCT\nkeyword can be used to find the maximum of the distinct values of expr,\nhowever, this produces the same result as omitting DISTINCT.\n\nMAX() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name, MIN(test_score), MAX(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (95,21,'CREATE FUNCTION UDF','Syntax:\nCREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL}\n SONAME shared_library_name\n\nA user-defined function (UDF) is a way to extend MySQL with a new\nfunction that works like a native (built-in) MySQL function such as\nABS() or CONCAT().\n\nfunction_name is the name that should be used in SQL statements to\ninvoke the function. The RETURNS clause indicates the type of the\nfunction\'s return value. DECIMAL is a legal value after RETURNS, but\ncurrently DECIMAL functions return string values and should be written\nlike STRING functions.\n\nshared_library_name is the basename of the shared object file that\ncontains the code that implements the function. The file must be\nlocated in the plugin directory. This directory is given by the value\nof the plugin_dir system variable.\n\n*Note*: This is a change in MySQL 5.1. For earlier versions of MySQL,\nthe shared object can be located in any directory that is searched by\nyour system\'s dynamic linker.\n\nTo create a function, you must have the INSERT privilege for the mysql\ndatabase. This is necessary because CREATE FUNCTION adds a row to the\nmysql.func system table that records the function\'s name, type, and\nshared library name. If you do not have this table, you should run the\nmysql_upgrade command to create it. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-upgrade.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-function-udf.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-function-udf.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (96,4,'*','Syntax:\n*\n\nMultiplication:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3*5;\n -> 15\nmysql> SELECT 18014398509481984*18014398509481984.0;\n -> 324518553658426726783156020576256.0\nmysql> SELECT 18014398509481984*18014398509481984;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (97,20,'TIMESTAMP','TIMESTAMP\n\nA timestamp. The range is \'1970-01-01 00:00:01\' UTC to \'2038-01-09\n03:14:07\' UTC. TIMESTAMP values are stored as the number of seconds\nsince the epoch (\'1970-01-01 00:00:00\' UTC). A TIMESTAMP cannot\nrepresent the value \'1970-01-01 00:00:00\' because that is equivalent to\n0 seconds from the epoch and the value 0 is reserved for representing\n\'0000-00-00 00:00:00\', the "zero" TIMESTAMP value.\n\nA TIMESTAMP column is useful for recording the date and time of an\nINSERT or UPDATE operation. By default, the first TIMESTAMP column in a\ntable is automatically set to the date and time of the most recent\noperation if you do not assign it a value yourself. You can also set\nany TIMESTAMP column to the current date and time by assigning it a\nNULL value. Variations on automatic initialization and update\nproperties are described in\nhttp://dev.mysql.com/doc/refman/5.1/en/timestamp.html.\n\nA TIMESTAMP value is returned as a string in the format \'YYYY-MM-DD\nHH:MM:SS\' with a display width fixed at 19 characters. To obtain the\nvalue as a number, you should add +0 to the timestamp column.\n\n*Note*: The TIMESTAMP format that was used prior to MySQL 4.1 is not\nsupported in MySQL 5.1; see MySQL 3.23, 4.0, 4.1 Reference Manual for\ninformation regarding the old format.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (98,11,'DES_DECRYPT','Syntax:\nDES_DECRYPT(crypt_str[,key_str])\n\nDecrypts a string encrypted with DES_ENCRYPT(). If an error occurs,\nthis function returns NULL.\n\nThis function works only if MySQL has been configured with SSL support.\nSee http://dev.mysql.com/doc/refman/5.1/en/secure-connections.html.\n\nIf no key_str argument is given, DES_DECRYPT() examines the first byte\nof the encrypted string to determine the DES key number that was used\nto encrypt the original string, and then reads the key from the DES key\nfile to decrypt the message. For this to work, the user must have the\nSUPER privilege. The key file can be specified with the --des-key-file\nserver option.\n\nIf you pass this function a key_str argument, that string is used as\nthe key for decrypting the message.\n\nIf the crypt_str argument does not appear to be an encrypted string,\nMySQL returns the given crypt_str.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (99,26,'CACHE INDEX','Syntax:\nCACHE INDEX\n tbl_index_list [, tbl_index_list] ...\n IN key_cache_name\n\ntbl_index_list:\n tbl_name [[INDEX|KEY] (index_name[, index_name] ...)]\n\nThe CACHE INDEX statement assigns table indexes to a specific key\ncache. It is used only for MyISAM tables.\n\nThe following statement assigns indexes from the tables t1, t2, and t3\nto the key cache named hot_cache:\n\nmysql> CACHE INDEX t1, t2, t3 IN hot_cache;\n+---------+--------------------+----------+----------+\n| Table | Op | Msg_type | Msg_text |\n+---------+--------------------+----------+----------+\n| test.t1 | assign_to_keycache | status | OK |\n| test.t2 | assign_to_keycache | status | OK |\n| test.t3 | assign_to_keycache | status | OK |\n+---------+--------------------+----------+----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cache-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/cache-index.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (99,25,'CACHE INDEX','Syntax:\nCACHE INDEX\n tbl_index_list [, tbl_index_list] ...\n IN key_cache_name\n\ntbl_index_list:\n tbl_name [[INDEX|KEY] (index_name[, index_name] ...)]\n\nThe CACHE INDEX statement assigns table indexes to a specific key\ncache. It is used only for MyISAM tables.\n\nThe following statement assigns indexes from the tables t1, t2, and t3\nto the key cache named hot_cache:\n\nmysql> CACHE INDEX t1, t2, t3 IN hot_cache;\n+---------+--------------------+----------+----------+\n| Table | Op | Msg_type | Msg_text |\n+---------+--------------------+----------+----------+\n| test.t1 | assign_to_keycache | status | OK |\n| test.t2 | assign_to_keycache | status | OK |\n| test.t3 | assign_to_keycache | status | OK |\n+---------+--------------------+----------+----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cache-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/cache-index.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (100,12,'ENDPOINT','EndPoint(ls)\n\nReturns the Point that is the endpoint of the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(EndPoint(GeomFromText(@ls)));\n+-------------------------------------+\n| AsText(EndPoint(GeomFromText(@ls))) |\n+-------------------------------------+\n| POINT(3 3) |\n+-------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (101,11,'COMPRESS','Syntax:\nCOMPRESS(string_to_compress)\n\nCompresses a string and returns the result as a binary string. This\nfunction requires MySQL to have been compiled with a compression\nlibrary such as zlib. Otherwise, the return value is always NULL. The\ncompressed string can be uncompressed with UNCOMPRESS().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT LENGTH(COMPRESS(REPEAT(\'a\',1000)));\n -> 21\nmysql> SELECT LENGTH(COMPRESS(\'\'));\n -> 0\nmysql> SELECT LENGTH(COMPRESS(\'a\'));\n -> 13\nmysql> SELECT LENGTH(COMPRESS(REPEAT(\'a\',16)));\n -> 15\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (102,26,'INSERT','Syntax:\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n {VALUES | VALUE} ({expr | DEFAULT},...),(...),...\n [ ON DUPLICATE KEY UPDATE\n col_name=expr\n [, col_name=expr] ... ]\n\nOr:\n\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name\n SET col_name={expr | DEFAULT}, ...\n [ ON DUPLICATE KEY UPDATE\n col_name=expr\n [, col_name=expr] ... ]\n\nOr:\n\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n SELECT ...\n [ ON DUPLICATE KEY UPDATE\n col_name=expr\n [, col_name=expr] ... ]\n\nINSERT inserts new rows into an existing table. The INSERT ... VALUES\nand INSERT ... SET forms of the statement insert rows based on\nexplicitly specified values. The INSERT ... SELECT form inserts rows\nselected from another table or tables. INSERT ... SELECT is discussed\nfurther in [HELP INSERT SELECT].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert.html');
@@ -174,56 +174,56 @@ insert into help_topic (help_topic_id,he
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (105,3,'MLINEFROMTEXT','MLineFromText(wkt[,srid]), MultiLineStringFromText(wkt[,srid])\n\nConstructs a MULTILINESTRING value using its WKT representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (106,31,'GEOMCOLLFROMWKB','GeomCollFromWKB(wkb[,srid]), GeometryCollectionFromWKB(wkb[,srid])\n\nConstructs a GEOMETRYCOLLECTION value using its WKB representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (107,37,'RENAME TABLE','Syntax:\nRENAME TABLE tbl_name TO new_tbl_name\n [, tbl_name2 TO new_tbl_name2] ...\n\nThis statement renames one or more tables.\n\nThe rename operation is done atomically, which means that no other\nsession can access any of the tables while the rename is running. For\nexample, if you have an existing table old_table, you can create\nanother table new_table that has the same structure but is empty, and\nthen replace the existing table with the empty one as follows (assuming\nthat backup_table does not already exist):\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/rename-table.html\n\n','CREATE TABLE new_table (...);\nRENAME TABLE old_table TO backup_table, new_table TO old_table;\n','http://dev.mysql.com/doc/refman/5.1/en/rename-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (108,20,'BOOLEAN','BOOL, BOOLEAN\n\nThese types are synonyms for TINYINT(1). A value of zero is considered\nfalse. Non-zero values are considered true:\n\nmysql> SELECT IF(0, \'true\', \'false\');\n+------------------------+\n| IF(0, \'true\', \'false\') |\n+------------------------+\n| false |\n+------------------------+\n\nmysql> SELECT IF(1, \'true\', \'false\');\n+------------------------+\n| IF(1, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nmysql> SELECT IF(2, \'true\', \'false\');\n+------------------------+\n| IF(2, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nHowever, the values TRUE and FALSE are merely aliases for 1 and 0,\nrespectively, as shown here:\n\nmysql> SELECT IF(0 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(0 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| true |\n+--------------------------------+\n\nmysql> SELECT IF(1 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(1 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| true |\n+-------------------------------+\n\nmysql> SELECT IF(2 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(2 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| false |\n+-------------------------------+\n\nmysql> SELECT IF(2 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(2 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| false |\n+--------------------------------+\n\nThe last two statements display the results shown because 2 is equal to\nneither 1 nor 0.\n\nWe intend to implement full boolean type handling, in accordance with\nstandard SQL, in a future MySQL release.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (108,20,'BOOLEAN','BOOL, BOOLEAN\n\nThese types are synonyms for TINYINT(1). A value of zero is considered\nfalse. Nonzero values are considered true:\n\nmysql> SELECT IF(0, \'true\', \'false\');\n+------------------------+\n| IF(0, \'true\', \'false\') |\n+------------------------+\n| false |\n+------------------------+\n\nmysql> SELECT IF(1, \'true\', \'false\');\n+------------------------+\n| IF(1, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nmysql> SELECT IF(2, \'true\', \'false\');\n+------------------------+\n| IF(2, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nHowever, the values TRUE and FALSE are merely aliases for 1 and 0,\nrespectively, as shown here:\n\nmysql> SELECT IF(0 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(0 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| true |\n+--------------------------------+\n\nmysql> SELECT IF(1 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(1 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| true |\n+-------------------------------+\n\nmysql> SELECT IF(2 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(2 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| false |\n+-------------------------------+\n\nmysql> SELECT IF(2 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(2 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| false |\n+--------------------------------+\n\nThe last two statements display the results shown because 2 is equal to\nneither 1 nor 0.\n\nWe intend to implement full boolean type handling, in accordance with\nstandard SQL, in a future MySQL release.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (109,14,'DEFAULT','Syntax:\nDEFAULT(col_name)\n\nReturns the default value for a table column. An error results if the\ncolumn has no default value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> UPDATE t SET i = DEFAULT(i)+1 WHERE id < 100;\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (110,4,'MOD','Syntax:\nMOD(N,M), N % M, N MOD M\n\nModulo operation. Returns the remainder of N divided by M.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT MOD(234, 10);\n -> 4\nmysql> SELECT 253 % 7;\n -> 1\nmysql> SELECT MOD(29,9);\n -> 2\nmysql> SELECT 29 MOD 9;\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (111,20,'TINYTEXT','TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 255 (28 - 1) characters. The\neffective maximum length is less if the value contains multi-byte\ncharacters. Each TINYTEXT value is stored using a one-byte length\nprefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (112,19,'OPTIMIZE TABLE','Syntax:\nOPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n\nOPTIMIZE TABLE should be used if you have deleted a large part of a\ntable or if you have made many changes to a table with variable-length\nrows (tables that have VARCHAR, VARBINARY, BLOB, or TEXT columns).\nDeleted rows are maintained in a linked list and subsequent INSERT\noperations reuse old row positions. You can use OPTIMIZE TABLE to\nreclaim the unused space and to defragment the data file.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, OPTIMIZE TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... OPTIMIZE PARTITION to optimize one or more partitions; for\nmore information, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (113,11,'DECODE','Syntax:\nDECODE(crypt_str,pass_str)\n\nDecrypts the encrypted string crypt_str using pass_str as the password.\ncrypt_str should be a string returned from ENCODE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (114,17,'<=>','Syntax:\n<=>\n\nNULL-safe equal. This operator performs an equality comparison like the\n= operator, but returns 1 rather than NULL if both operands are NULL,\nand 0 rather than NULL if one operand is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;\n -> 1, 1, 0\nmysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;\n -> 1, NULL, NULL\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (115,26,'LOAD DATA FROM MASTER','Syntax:\nLOAD DATA FROM MASTER\n\nThis feature is deprecated. We recommend not using it anymore. It is\nsubject to removal in a future version of MySQL.\n\nSince the current implementation of LOAD DATA FROM MASTER and LOAD\nTABLE FROM MASTER is very limited, these statements are deprecated in\nversions 4.1 of MySQL and above. We will introduce a more advanced\ntechnique (called "online backup") in a future version. That technique\nwill have the additional advantage of working with more storage\nengines.\n\nFor MySQL 5.1 and earlier, the recommended alternative solution to\nusing LOAD DATA FROM MASTER or LOAD TABLE FROM MASTER is using\nmysqldump or mysqlhotcopy. The latter requires Perl and two Perl\nmodules (DBI and DBD:mysql) and works for MyISAM and ARCHIVE tables\nonly. With mysqldump, you can create SQL dumps on the master and pipe\n(or copy) these to a mysql client on the slave. This has the advantage\nof working for all storage engines, but can be quite slow, since it\nworks using SELECT.\n\nThis statement takes a snapshot of the master and copies it to the\nslave. It updates the values of MASTER_LOG_FILE and MASTER_LOG_POS so\nthat the slave starts replicating from the correct position. Any table\nand database exclusion rules specified with the --replicate-*-do-* and\n--replicate-*-ignore-* options are honored. --replicate-rewrite-db is\nnot taken into account because a user could use this option to set up a\nnon-unique mapping such as --replicate-rewrite-db="db1->db3" and\n--replicate-rewrite-db="db2->db3", which would confuse the slave when\nloading tables from the master.\n\nUse of this statement is subject to the following conditions:\n\no It works only for MyISAM tables. Attempting to load a non-MyISAM\n table results in the following error:\n\nERROR 1189 (08S01): Net error reading from master\n\no It acquires a global read lock on the master while taking the\n snapshot, which prevents updates on the master during the load\n operation.\n\nIf you are loading large tables, you might have to increase the values\nof net_read_timeout and net_write_timeout on both the master and slave\nservers. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n… that LOAD DATA FROM MASTER does not copy any tables from the mysql\ndatabase. This makes it easy to have different users and privileges on\nthe master and the slave.\n\nTo use LOAD DATA FROM MASTER, the replication account that is used to\nconnect to the master must have the RELOAD and SUPER privileges on the\nmaster and the SELECT privilege for all master tables you want to load.\nAll master tables for which the user does not have the SELECT privilege\nare ignored by LOAD DATA FROM MASTER. This is because the master hides\nthem from the user: LOAD DATA FROM MASTER calls SHOW DATABASES to know\nthe master databases to load, but SHOW DATABASES returns only databases\nfor which the user has some privilege. See [HELP SHOW DATABASES]. On\nthe slave side, the user that issues LOAD DATA FROM MASTER must have\nprivileges for dropping and creating the databases and tables that are\ncopied.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-data-from-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-data-from-master.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (116,26,'RESET','Syntax:\nRESET reset_option [, reset_option] ...\n\nThe RESET statement is used to clear the state of various server\noperations. You must have the RELOAD privilege to execute RESET.\n\nRESET acts as a stronger version of the FLUSH statement. See [HELP\nFLUSH].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (115,25,'LOAD DATA FROM MASTER','Syntax:\nLOAD DATA FROM MASTER\n\nThis feature is deprecated and should be avoided. It is subject to\nremoval in a future version of MySQL.\n\nSince the current implementation of LOAD DATA FROM MASTER and LOAD\nTABLE FROM MASTER is very limited, these statements are deprecated in\nversions 4.1 of MySQL and above. We will introduce a more advanced\ntechnique (called "online backup") in a future version. That technique\nwill have the additional advantage of working with more storage\nengines.\n\nFor MySQL 5.1 and earlier, the recommended alternative solution to\nusing LOAD DATA FROM MASTER or LOAD TABLE FROM MASTER is using\nmysqldump or mysqlhotcopy. The latter requires Perl and two Perl\nmodules (DBI and DBD:mysql) and works for MyISAM and ARCHIVE tables\nonly. With mysqldump, you can create SQL dumps on the master and pipe\n(or copy) these to a mysql client on the slave. This has the advantage\nof working for all storage engines, but can be quite slow, since it\nworks using SELECT.\n\nThis statement takes a snapshot of the master and copies it to the\nslave. It updates the values of MASTER_LOG_FILE and MASTER_LOG_POS so\nthat the slave starts replicating from the correct position. Any table\nand database exclusion rules specified with the --replicate-*-do-* and\n--replicate-*-ignore-* options are honored. --replicate-rewrite-db is\nnot taken into account because a user could use this option to set up a\nnonunique mapping such as --replicate-rewrite-db="db1->db3" and\n--replicate-rewrite-db="db2->db3", which would confuse the slave when\nloading tables from the master.\n\nUse of this statement is subject to the following conditions:\n\no It works only for MyISAM tables. Attempting to load a non-MyISAM\n table results in the following error:\n\nERROR 1189 (08S01): Net error reading from master\n\no It acquires a global read lock on the master while taking the\n snapshot, which prevents updates on the master during the load\n operation.\n\nIf you are loading large tables, you might have to increase the values\nof net_read_timeout and net_write_timeout on both the master and slave\nservers. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n… that LOAD DATA FROM MASTER does not copy any tables from the mysql\ndatabase. This makes it easy to have different users and privileges on\nthe master and the slave.\n\nTo use LOAD DATA FROM MASTER, the replication account that is used to\nconnect to the master must have the RELOAD and SUPER privileges on the\nmaster and the SELECT privilege for all master tables you want to load.\nAll master tables for which the user does not have the SELECT privilege\nare ignored by LOAD DATA FROM MASTER. This is because the master hides\nthem from the user: LOAD DATA FROM MASTER calls SHOW DATABASES to know\nthe master databases to load, but SHOW DATABASES returns only databases\nfor which the user has some privilege. See [HELP SHOW DATABASES]. On\nthe slave side, the user that issues LOAD DATA FROM MASTER must have\nprivileges for dropping and creating the databases and tables that are\ncopied.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-data-from-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-data-from-master.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (116,25,'RESET','Syntax:\nRESET reset_option [, reset_option] ...\n\nThe RESET statement is used to clear the state of various server\noperations. You must have the RELOAD privilege to execute RESET.\n\nRESET acts as a stronger version of the FLUSH statement. See [HELP\nFLUSH].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (117,27,'HELP STATEMENT','Syntax:\nHELP \'search_string\'\n\nThe HELP statement returns online information from the MySQL Reference\nmanual. Its proper operation requires that the help tables in the mysql\ndatabase be initialized with help topic information (see\nhttp://dev.mysql.com/doc/refman/5.1/en/server-side-help-support.html).… HELP statement searches the help tables for the given search string\nand displays the result of the search. The search string is not case\nsensitive.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/help.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/help.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (118,14,'GET_LOCK','Syntax:\nGET_LOCK(str,timeout)\n\nTries to obtain a lock with a name given by the string str, using a\ntimeout of timeout seconds. Returns 1 if the lock was obtained\nsuccessfully, 0 if the attempt timed out (for example, because another\nclient has previously locked the name), or NULL if an error occurred\n(such as running out of memory or the thread was killed with mysqladmin\nkill). If you have a lock obtained with GET_LOCK(), it is released when\nyou execute RELEASE_LOCK(), execute a new GET_LOCK(), or your\nconnection terminates (either normally or abnormally). Locks obtained\nwith GET_LOCK() do not interact with transactions. That is, committing\na transaction does not release any such locks obtained during the\ntransaction.\n\nThis function can be used to implement application locks or to simulate\nrecord locks. Names are locked on a server-wide basis. If a name has\nbeen locked by one client, GET_LOCK() blocks any request by another\nclient for a lock with the same name. This allows clients that agree on\na given lock name to use the name to perform cooperative advisory\nlocking. But be aware that it also allows a client that is not among\nthe set of cooperating clients to lock a name, either inadvertently or\ndeliberately, and thus prevent any of the cooperating clients from\nlocking that name. One way to reduce the likelihood of this is to use\nlock names that are database-specific or application-specific. For\nexample, use lock names of the form db_name.str or app_name.str.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT GET_LOCK(\'lock1\',10);\n -> 1\nmysql> SELECT IS_FREE_LOCK(\'lock2\');\n -> 1\nmysql> SELECT GET_LOCK(\'lock2\',10);\n -> 1\nmysql> SELECT RELEASE_LOCK(\'lock2\');\n -> 1\nmysql> SELECT RELEASE_LOCK(\'lock1\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (119,35,'UCASE','Syntax:\nUCASE(str)\n\nUCASE() is a synonym for UPPER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (120,26,'SHOW BINLOG EVENTS','Syntax:\nSHOW BINLOG EVENTS\n [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\n\nShows the events in the binary log. If you do not specify \'log_name\',\nthe first binary log is displayed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-binlog-events.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-binlog-events.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (120,25,'SHOW BINLOG EVENTS','Syntax:\nSHOW BINLOG EVENTS\n [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\n\nShows the events in the binary log. If you do not specify \'log_name\',\nthe first binary log is displayed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-binlog-events.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-binlog-events.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (121,31,'MPOLYFROMWKB','MPolyFromWKB(wkb[,srid]), MultiPolygonFromWKB(wkb[,srid])\n\nConstructs a MULTIPOLYGON value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (122,22,'ITERATE','Syntax:\nITERATE label\n\nITERATE can appear only within LOOP, REPEAT, and WHILE statements.\nITERATE means "do the loop again."\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/iterate-statement.html\n\n','CREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1: LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN ITERATE label1; END IF;\n LEAVE label1;\n END LOOP label1;\n SET @x = p1;\nEND\n','http://dev.mysql.com/doc/refman/5.1/en/iterate-statement.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (123,26,'DO','Syntax:\nDO expr [, expr] ...\n\nDO executes the expressions but does not return any results. In most\nrespects, DO is shorthand for SELECT expr, ..., but has the advantage\nthat it is slightly faster when you do not care about the result.\n\nDO is useful primarily with functions that have side effects, such as\nRELEASE_LOCK().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/do.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/do.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (124,30,'CURTIME','Syntax:\nCURTIME()\n\nReturns the current time as a value in \'HH:MM:SS\' or HHMMSS.uuuuuu\nformat, depending on whether the function is used in a string or\nnumeric context. The value is expressed in the current time zone.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CURTIME();\n -> \'23:50:26\'\nmysql> SELECT CURTIME() + 0;\n -> 235026.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (125,35,'CHAR_LENGTH','Syntax:\nCHAR_LENGTH(str)\n\nReturns the length of the string str, measured in characters. A\nmulti-byte character counts as a single character. This means that for\na string containing five two-byte characters, LENGTH() returns 10,\nwhereas CHAR_LENGTH() returns 5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (126,20,'BIGINT','BIGINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA large integer. The signed range is -9223372036854775808 to\n9223372036854775807. The unsigned range is 0 to 18446744073709551615.\n\nSERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (127,26,'SET','Syntax:\nSET variable_assignment [, variable_assignment] ...\n\nvariable_assignment:\n user_var_name = expr\n | [GLOBAL | SESSION] system_var_name = expr\n | [@@global. | @@session. | @@]system_var_name = expr\n\nThe SET statement assigns values to different types of variables that\naffect the operation of the server or your client. Older versions of\nMySQL employed SET OPTION, but this syntax is deprecated in favor of\nSET without OPTION.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-option.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-option.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (127,25,'SET','Syntax:\nSET variable_assignment [, variable_assignment] ...\n\nvariable_assignment:\n user_var_name = expr\n | [GLOBAL | SESSION] system_var_name = expr\n | [@@global. | @@session. | @@]system_var_name = expr\n\nThe SET statement assigns values to different types of variables that\naffect the operation of the server or your client. Older versions of\nMySQL employed SET OPTION, but this syntax is deprecated in favor of\nSET without OPTION.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-option.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-option.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (128,4,'CONV','Syntax:\nCONV(N,from_base,to_base)\n\nConverts numbers between different number bases. Returns a string\nrepresentation of the number N, converted from base from_base to base\nto_base. Returns NULL if any argument is NULL. The argument N is\ninterpreted as an integer, but may be specified as an integer or a\nstring. The minimum base is 2 and the maximum base is 36. If to_base is\na negative number, N is regarded as a signed number. Otherwise, N is\ntreated as unsigned. CONV() works with 64-bit precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CONV(\'a\',16,2);\n -> \'1010\'\nmysql> SELECT CONV(\'6E\',18,8);\n -> \'172\'\nmysql> SELECT CONV(-17,10,-18);\n -> \'-H\'\nmysql> SELECT CONV(10+\'10\'+\'10\'+0xa,10,10);\n -> \'40\'\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (129,20,'DATE','DATE\n\nA date. The supported range is \'1000-01-01\' to \'9999-12-31\'. MySQL\ndisplays DATE values in \'YYYY-MM-DD\' format, but allows assignment of\nvalues to DATE columns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (130,26,'SHOW OPEN TABLES','Syntax:\nSHOW OPEN TABLES [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW OPEN TABLES lists the non-TEMPORARY tables that are currently open\nin the table cache. See\nhttp://dev.mysql.com/doc/refman/5.1/en/table-cache.html. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nThe FROM and LIKE clauses may be used beginning with MySQL 5.1.24. The\nLIKE clause, if present, indicates which table names to match. The FROM\nclause, if present, restricts the tables shown to those present in the\ndb_name database.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (130,25,'SHOW OPEN TABLES','Syntax:\nSHOW OPEN TABLES [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW OPEN TABLES lists the non-TEMPORARY tables that are currently open\nin the table cache. See\nhttp://dev.mysql.com/doc/refman/5.1/en/table-cache.html. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nThe FROM and LIKE clauses may be used beginning with MySQL 5.1.24. The\nLIKE clause, if present, indicates which table names to match. The FROM\nclause, if present, restricts the tables shown to those present in the\ndb_name database.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-open-tables.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (131,30,'EXTRACT','Syntax:\nEXTRACT(unit FROM date)\n\nThe EXTRACT() function uses the same kinds of unit specifiers as\nDATE_ADD() or DATE_SUB(), but extracts parts from the date rather than\nperforming date arithmetic.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT EXTRACT(YEAR FROM \'2009-07-02\');\n -> 2009\nmysql> SELECT EXTRACT(YEAR_MONTH FROM \'2009-07-02 01:02:03\');\n -> 200907\nmysql> SELECT EXTRACT(DAY_MINUTE FROM \'2009-07-02 01:02:03\');\n -> 20102\nmysql> SELECT EXTRACT(MICROSECOND\n -> FROM \'2003-01-02 10:30:00.000123\');\n -> 123\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (132,11,'ENCRYPT','Syntax:\nENCRYPT(str[,salt])\n\nEncrypts str using the Unix crypt() system call and returns a binary\nstring. The salt argument should be a string with at least two\ncharacters. If no salt argument is given, a random value is used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT ENCRYPT(\'hello\');\n -> \'VxuFAJXVARROc\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (133,26,'SHOW STATUS','Syntax:\nSHOW [GLOBAL | SESSION] STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW STATUS provides server status information. This information also\ncan be obtained using the mysqladmin extended-status command. The LIKE\nclause, if present, indicates which variable names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern:\n\nmysql> SHOW STATUS LIKE \'Key%\';\n+--------------------+----------+\n| Variable_name | Value |\n+--------------------+----------+\n| Key_blocks_used | 14955 |\n| Key_read_requests | 96854827 |\n| Key_reads | 162040 |\n| Key_write_requests | 7589728 |\n| Key_writes | 3813196 |\n+--------------------+----------+\n\nWith the GLOBAL modifier, SHOW STATUS displays the status values for\nall connections to MySQL. With SESSION, it displays the status values\nfor the current connection. If no modifier is present, the default is\nSESSION. LOCAL is a synonym for SESSION.\n\nSome status variables have only a global value. For these, you get the\nsame value for both GLOBAL and SESSION. The scope for each status\nvariable is listed at\nhttp://dev.mysql.com/doc/refman/5.1/en/server-status-variables.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/show-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (133,25,'SHOW STATUS','Syntax:\nSHOW [GLOBAL | SESSION] STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW STATUS provides server status information. This information also\ncan be obtained using the mysqladmin extended-status command. The LIKE\nclause, if present, indicates which variable names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\nThis statement does not require any privilege. It requires only the\nability to connect to the server.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern:\n\nmysql> SHOW STATUS LIKE \'Key%\';\n+--------------------+----------+\n| Variable_name | Value |\n+--------------------+----------+\n| Key_blocks_used | 14955 |\n| Key_read_requests | 96854827 |\n| Key_reads | 162040 |\n| Key_write_requests | 7589728 |\n| Key_writes | 3813196 |\n+--------------------+----------+\n\nWith the GLOBAL modifier, SHOW STATUS displays the status values for\nall connections to MySQL. With SESSION, it displays the status values\nfor the current connection. If no modifier is present, the default is\nSESSION. LOCAL is a synonym for SESSION.\n\nSome status variables have only a global value. For these, you get the\nsame value for both GLOBAL and SESSION. The scope for each status\nvariable is listed at\nhttp://dev.mysql.com/doc/refman/5.1/en/server-status-variables.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/show-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-status.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (134,35,'EXTRACTVALUE','Syntax:\nExtractValue(xml_frag, xpath_expr)\n\nExtractValue() takes two string arguments, a fragment of XML markup\nxml_frag and an XPath expression xpath_expr (also known as a locator);\nit returns the text (CDATA) of the first text node which is a child of\nthe element(s) matched by the XPath expression. It is the equivalent of\nperforming a match using the xpath_expr after appending /text(). In\nother words, ExtractValue(\'<a><b>Sakila</b></a>\', \'/a/b\') and\nExtractValue(\'<a><b>Sakila</b></a>\', \'/a/b/text()\') produce the same\nresult.\n\nIf multiple matches are found, then the content of the first child text\nnode of each matching element is returned (in the order matched) as a\nsingle, space-delimited string.\n\nIf no matching text node is found for the expression (including the\nimplicit /text()) --- for whatever reason, as long as xpath_expr is\nvalid, and xml_frag consists of elements which are properly nested and\nclosed --- an empty string is returned. No distinction is made between\na match on an empty element and no match at all. This is by design.\n\nIf you need to determine whether no matching element was found in\nxml_frag or such an element was found but contained no child text\nnodes, you should test the result of an expression that uses the XPath\ncount() function. For example, both of these statements return an empty\nstring, as shown here:\n\nmysql> SELECT ExtractValue(\'<a><b/></a>\', \'/a/b\');\n+-------------------------------------+\n| ExtractValue(\'<a><b/></a>\', \'/a/b\') |\n+-------------------------------------+\n| |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT ExtractValue(\'<a><c/></a>\', \'/a/b\');\n+-------------------------------------+\n| ExtractValue(\'<a><c/></a>\', \'/a/b\') |\n+-------------------------------------+\n| |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nHowever, you can determine whether there was actually a matching\nelement using the following:\n\nmysql> SELECT ExtractValue(\'<a><b/></a>\', \'count(/a/b)\');\n+-------------------------------------+\n| ExtractValue(\'<a><b/></a>\', \'count(/a/b)\') |\n+-------------------------------------+\n| 1 |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT ExtractValue(\'<a><c/></a>\', \'count(/a/b)\');\n+-------------------------------------+\n| ExtractValue(\'<a><c/></a>\', \'count(/a/b)\') |\n+-------------------------------------+\n| 0 |\n+-------------------------------------+\n1 row in set (0.01 sec)\n\n*Important*: ExtractValue() returns only CDATA, and does not return any\ntags that might be contained within a matching tag, nor any of their\ncontent (see the result returned as val1 in the following example).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html\n\n','mysql> SELECT\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'/a\') AS val1,\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'/a/b\') AS val2,\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'//b\') AS val3,\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'/b\') AS val4,\n -> ExtractValue(\'<a>ccc<b>ddd</b><b>eee</b></a>\', \'//b\') AS val5;\n\n+------+------+------+------+---------+\n| val1 | val2 | val3 | val4 | val5 |\n+------+------+------+------+---------+\n| ccc | ddd | ddd | | ddd eee |\n+------+------+------+------+---------+\n','http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (135,11,'OLD_PASSWORD','Syntax:\nOLD_PASSWORD(str)\n\nOLD_PASSWORD() was added to MySQL when the implementation of PASSWORD()\nwas changed to improve security. OLD_PASSWORD() returns the value of\nthe old (pre-4.1) implementation of PASSWORD() as a binary string, and\nis intended to permit you to reset passwords for any pre-4.1 clients\nthat need to connect to your version 5.1 MySQL server without locking\nthem out. See\nhttp://dev.mysql.com/doc/refman/5.1/en/password-hashing.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (136,22,'SET VARIABLE','Syntax:\nSET var_name = expr [, var_name = expr] ...\n\nThe SET statement in stored programs is an extended version of the\ngeneral SET statement (see [HELP SET]). Referenced variables may be\nones declared inside a stored program, global system variables, or\nuser-defined variables.\n\nThe SET statement in stored programs is implemented as part of the\npre-existing SET syntax. This allows an extended syntax of SET a=x,\nb=y, ... where different variable types (locally declared variables,\nglobal and session server variables, user-defined variables) can be\nmixed. This also allows combinations of local variables and some\noptions that make sense only for system variables; in that case, the\noptions are recognized but ignored.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-statement.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (137,35,'FORMAT','Syntax:\nFORMAT(X,D)\n\nFormats the number X to a format like \'#,###,###.##\', rounded to D\ndecimal places, and returns the result as a string. If D is 0, the\nresult has no decimal point or fractional part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FORMAT(12332.123456, 4);\n -> \'12,332.1235\'\nmysql> SELECT FORMAT(12332.1,4);\n -> \'12,332.1000\'\nmysql> SELECT FORMAT(12332.2,0);\n -> \'12,332\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (138,13,'||','Syntax:\nOR, ||\n\nLogical OR. When both operands are non-NULL, the result is 1 if any\noperand is non-zero, and 0 otherwise. With a NULL operand, the result\nis 1 if the other operand is non-zero, and NULL otherwise. If both\noperands are NULL, the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 || 1;\n -> 1\nmysql> SELECT 1 || 0;\n -> 1\nmysql> SELECT 0 || 0;\n -> 0\nmysql> SELECT 0 || NULL;\n -> NULL\nmysql> SELECT 1 || NULL;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (138,13,'||','Syntax:\nOR, ||\n\nLogical OR. When both operands are non-NULL, the result is 1 if any\noperand is nonzero, and 0 otherwise. With a NULL operand, the result is\n1 if the other operand is nonzero, and NULL otherwise. If both operands\nare NULL, the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 || 1;\n -> 1\nmysql> SELECT 1 || 0;\n -> 1\nmysql> SELECT 0 || 0;\n -> 0\nmysql> SELECT 0 || NULL;\n -> NULL\nmysql> SELECT 1 || NULL;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (139,35,'BIT_LENGTH','Syntax:\nBIT_LENGTH(str)\n\nReturns the length of the string str in bits.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT BIT_LENGTH(\'text\');\n -> 32\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (140,2,'EXTERIORRING','ExteriorRing(poly)\n\nReturns the exterior ring of the Polygon value poly as a LineString.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT AsText(ExteriorRing(GeomFromText(@poly)));\n+-------------------------------------------+\n| AsText(ExteriorRing(GeomFromText(@poly))) |\n+-------------------------------------------+\n| LINESTRING(0 0,0 3,3 3,3 0,0 0) |\n+-------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (141,31,'GEOMFROMWKB','GeomFromWKB(wkb[,srid]), GeometryFromWKB(wkb[,srid])\n\nConstructs a geometry value of any type using its WKB representation\nand SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (142,26,'SHOW SLAVE HOSTS','Syntax:\nSHOW SLAVE HOSTS\n\nDisplays a list of replication slaves currently registered with the\nmaster. Only slaves started with the --report-host=host_name option are\nvisible in this list.\n\nThe list is displayed on any server (not just the master server). The\noutput looks like this:\n\nmysql> SHOW SLAVE HOSTS;\n+------------+-----------+------+-----------+\n| Server_id | Host | Port | Master_id |\n+------------+-----------+------+-----------+\n| 192168010 | iconnect2 | 3306 | 192168011 |\n| 1921680101 | athena | 3306 | 192168011 |\n+------------+-----------+------+-----------+\n\no Server_id: The unique server ID of the slave server, as configured in\n the server\'s option file, or on the command line with\n --server-id=value.\n\no Host: The host name of the slave server, as configured in the\n server\'s option file, or on the command line with\n --report-host=host_name. Note that this can differ from the machine\n name as configured in the operating system.\n\no Port: The port the slave server is listening on.\n\no Master_id: The unique server ID of the master server that the slave\n server is replicating from.\n\nSome MySQL versions report another variable, Rpl_recovery_rank. This\nvariable was never used, and was eventually removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-slave-hosts.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-slave-hosts.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (143,8,'START TRANSACTION','Syntax:\nSTART TRANSACTION [WITH CONSISTENT SNAPSHOT] | BEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThe START TRANSACTION or BEGIN statement begins a new transaction.\nCOMMIT commits the current transaction, making its changes permanent.\nROLLBACK rolls back the current transaction, canceling its changes. The\nSET autocommit statement disables or enables the default autocommit\nmode for the current session.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n… AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The RELEASE clause causes the\nserver to disconnect the current client session after terminating the\ncurrent transaction. Including the NO keyword suppresses CHAIN or\nRELEASE completion, which can be useful if the completion_type system\nvariable is set to cause chaining or release completion by default.\n\nBy default, MySQL runs with autocommit mode enabled. This means that as\nsoon as you execute a statement that updates (modifies) a table, MySQL\nstores the update on disk to make it permanent. To disable autocommit\nmode, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDBCLUSTER) are not made permanent immediately. You must use COMMIT to\nstore your changes to disk or ROLLBACK to ignore the changes.\n\nTo disable autocommit mode for a single series of statements, use the\nSTART TRANSACTION statement:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/commit.html\n\n','START TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n','http://dev.mysql.com/doc/refman/5.1/en/commit.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (144,17,'BETWEEN AND','Syntax:\nexpr BETWEEN min AND max\n\nIf expr is greater than or equal to min and expr is less than or equal\nto max, BETWEEN returns 1, otherwise it returns 0. This is equivalent\nto the expression (min <= expr AND expr <= max) if all the arguments\nare of the same type. Otherwise type conversion takes place according\nto the rules described in\nhttp://dev.mysql.com/doc/refman/5.1/en/type-conversion.html, but\napplied to all the three arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 BETWEEN 2 AND 3;\n -> 0\nmysql> SELECT \'b\' BETWEEN \'a\' AND \'c\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'3\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'x-3\';\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (145,23,'MULTIPOLYGON','MultiPolygon(poly1,poly2,...)\n\nConstructs a WKB MultiPolygon value from a set of WKB Polygon\narguments. If any argument is not a WKB Polygon, the return value is\nNULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (146,30,'TIME_FORMAT','Syntax:\nTIME_FORMAT(time,format)\n\nThis is used like the DATE_FORMAT() function, but the format string may\ncontain format specifiers only for hours, minutes, and seconds. Other\nspecifiers produce a NULL value or 0.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_FORMAT(\'100:00:00\', \'%H %k %h %I %l\');\n -> \'100 100 04 04 4\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (142,25,'SHOW SLAVE HOSTS','Syntax:\nSHOW SLAVE HOSTS\n\nDisplays a list of replication slaves currently registered with the\nmaster. Only slaves started with the --report-host=host_name option are\nvisible in this list.\n\nThe list is displayed on any server (not just the master server). The\noutput looks like this:\n\nmysql> SHOW SLAVE HOSTS;\n+------------+-----------+------+-----------+\n| Server_id | Host | Port | Master_id |\n+------------+-----------+------+-----------+\n| 192168010 | iconnect2 | 3306 | 192168011 |\n| 1921680101 | athena | 3306 | 192168011 |\n+------------+-----------+------+-----------+\n\no Server_id: The unique server ID of the slave server, as configured in\n the server\'s option file, or on the command line with\n --server-id=value.\n\no Host: The host name of the slave server, as configured in the\n server\'s option file, or on the command line with\n --report-host=host_name. Note that this can differ from the machine\n name as configured in the operating system.\n\no Port: The port the slave server is listening on.\n\no Master_id: The unique server ID of the master server that the slave\n server is replicating from.\n\nSome MySQL versions report another variable, Rpl_recovery_rank. This\nvariable was never used, and was eventually removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-slave-hosts.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-slave-hosts.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (143,8,'START TRANSACTION','Syntax:\nSTART TRANSACTION [WITH CONSISTENT SNAPSHOT] | BEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThe START TRANSACTION or BEGIN statement begins a new transaction.\nCOMMIT commits the current transaction, making its changes permanent.\nROLLBACK rolls back the current transaction, canceling its changes. The\nSET autocommit statement disables or enables the default autocommit\nmode for the current session.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html.\n…: Within all stored programs (stored procedures and functions,\ntriggers, and events), the parser treats BEGIN [WORK] as the beginning\nof a BEGIN ... END block. Begin a transaction in this context with\nSTART TRANSACTION instead.\n\nThe AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The RELEASE clause causes the\nserver to disconnect the current client session after terminating the\ncurrent transaction. Including the NO keyword suppresses CHAIN or\nRELEASE completion, which can be useful if the completion_type system\nvariable is set to cause chaining or release completion by default.\n\nBy default, MySQL runs with autocommit mode enabled. This means that as\nsoon as you execute a statement that updates (modifies) a table, MySQL\nstores the update on disk to make it permanent. To disable autocommit\nmode, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDBCLUSTER) are not made permanent immediately. You must use COMMIT to\nstore your changes to disk or ROLLBACK to ignore the changes.\n\nTo disable autocommit mode for a single series of statements, use the\nSTART TRANSACTION statement:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/commit.html\n\n','START TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n','http://dev.mysql.com/doc/refman/5.1/en/commit.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (144,17,'BETWEEN AND','Syntax:\nexpr BETWEEN min AND max\n\nIf expr is greater than or equal to min and expr is less than or equal\nto max, BETWEEN returns 1, otherwise it returns 0. This is equivalent\nto the expression (min <= expr AND expr <= max) if all the arguments\nare of the same type. Otherwise type conversion takes place according\nto the rules described in\nhttp://dev.mysql.com/doc/refman/5.1/en/type-conversion.html, but\napplied to all the three arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;\n -> 1, 0\nmysql> SELECT 1 BETWEEN 2 AND 3;\n -> 0\nmysql> SELECT \'b\' BETWEEN \'a\' AND \'c\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'3\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'x-3\';\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (145,23,'MULTIPOLYGON','MultiPolygon(poly1,poly2,...)\n\nConstructs a MultiPolygon value from a set of Polygon or WKB Polygon\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (146,30,'TIME_FORMAT','Syntax:\nTIME_FORMAT(time,format)\n\nThis is used like the DATE_FORMAT() function, but the format string may\ncontain format specifiers only for hours, minutes, seconds, and\nmicroseconds. Other specifiers produce a NULL value or 0.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_FORMAT(\'100:00:00\', \'%H %k %h %I %l\');\n -> \'100 100 04 04 4\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (147,35,'LEFT','Syntax:\nLEFT(str,len)\n\nReturns the leftmost len characters from the string str, or NULL if any\nargument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LEFT(\'foobarbar\', 5);\n -> \'fooba\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (148,25,'FLUSH QUERY CACHE','You can defragment the query cache to better utilize its memory with\nthe FLUSH QUERY CACHE statement. The statement does not remove any\nqueries from the cache.\n\nThe RESET QUERY CACHE statement removes all query results from the\nquery cache. The FLUSH TABLES statement also does this.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/query-cache-status-and-maintenance.h…','','http://dev.mysql.com/doc/refman/5.1/en/query-cache-status-and-maintenance.h…');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (149,20,'SET DATA TYPE','SET(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA set. A string object that can have zero or more values, each of which\nmust be chosen from the list of values \'value1\', \'value2\', ... A SET\ncolumn can have a maximum of 64 members. SET values are represented\ninternally as integers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (150,4,'RAND','Syntax:\nRAND(), RAND(N)\n\nReturns a random floating-point value v in the range 0 <= v < 1.0. If a\nconstant integer argument N is specified, it is used as the seed value,\nwhich produces a repeatable sequence of column values. In the following\nexample, note that the sequences of values produced by RAND(3) is the\nsame both places where it occurs.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> CREATE TABLE t (i INT);\nQuery OK, 0 rows affected (0.42 sec)\n\nmysql> INSERT INTO t VALUES(1),(2),(3);\nQuery OK, 3 rows affected (0.00 sec)\nRecords: 3 Duplicates: 0 Warnings: 0\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.61914388706828 | \n| 2 | 0.93845168309142 | \n| 3 | 0.83482678498591 | \n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 | \n| 2 | 0.37307905813035 | \n| 3 | 0.14808605345719 | \n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.35877890638893 | \n| 2 | 0.28941420772058 | \n| 3 | 0.37073435016976 | \n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 | \n| 2 | 0.37307905813035 | \n| 3 | 0.14808605345719 | \n+------+------------------+\n3 rows in set (0.01 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (150,4,'RAND','Syntax:\nRAND(), RAND(N)\n\nReturns a random floating-point value v in the range 0 <= v < 1.0. If a\nconstant integer argument N is specified, it is used as the seed value,\nwhich produces a repeatable sequence of column values. In the following\nexample, note that the sequences of values produced by RAND(3) is the\nsame both places where it occurs.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> CREATE TABLE t (i INT);\nQuery OK, 0 rows affected (0.42 sec)\n\nmysql> INSERT INTO t VALUES(1),(2),(3);\nQuery OK, 3 rows affected (0.00 sec)\nRecords: 3 Duplicates: 0 Warnings: 0\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.61914388706828 |\n| 2 | 0.93845168309142 |\n| 3 | 0.83482678498591 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 |\n| 2 | 0.37307905813035 |\n| 3 | 0.14808605345719 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.35877890638893 |\n| 2 | 0.28941420772058 |\n| 3 | 0.37073435016976 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 |\n| 2 | 0.37307905813035 |\n| 3 | 0.14808605345719 |\n+------+------------------+\n3 rows in set (0.01 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (151,35,'RPAD','Syntax:\nRPAD(str,len,padstr)\n\nReturns the string str, right-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RPAD(\'hi\',5,\'?\');\n -> \'hi???\'\nmysql> SELECT RPAD(\'hi\',1,\'?\');\n -> \'h\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (152,37,'CREATE DATABASE','Syntax:\nCREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n [create_specification] ...\n\ncreate_specification:\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n\nCREATE DATABASE creates a database with the given name. To use this\nstatement, you need the CREATE privilege for the database. CREATE\nSCHEMA is a synonym for CREATE DATABASE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-database.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (153,20,'DEC','DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED]\n[ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nThese types are synonyms for DECIMAL. The FIXED synonym is available\nfor compatibility with other database systems.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (154,16,'VAR_POP','Syntax:\nVAR_POP(expr)\n\nReturns the population standard variance of expr. It considers rows as\nthe whole population, not as a sample, so it has the number of rows as\nthe denominator. You can also use VARIANCE(), which is equivalent but\nis not standard SQL.\n\nVAR_POP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (155,35,'ELT','Syntax:\nELT(N,str1,str2,str3,...)\n\nReturns str1 if N = 1, str2 if N = 2, and so on. Returns NULL if N is\nless than 1 or greater than the number of arguments. ELT() is the\ncomplement of FIELD().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ELT(1, \'ej\', \'Heja\', \'hej\', \'foo\');\n -> \'ej\'\nmysql> SELECT ELT(4, \'ej\', \'Heja\', \'hej\', \'foo\');\n -> \'foo\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (156,37,'ALTER VIEW','Syntax:\nALTER\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = { user | CURRENT_USER }]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThis statement changes the definition of a view, which must exist. The\nsyntax is similar to that for CREATE VIEW and the effect is the same as\nfor CREATE OR REPLACE VIEW. See [HELP CREATE VIEW]. This statement\nrequires the CREATE VIEW and DROP privileges for the view, and some\nprivilege for each column referred to in the SELECT statement. As of\nMySQL 5.1.23, ALTER VIEW is allowed only to the definer or users with\nthe SUPER privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-view.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (157,26,'SHOW DATABASES','Syntax:\nSHOW {DATABASES | SCHEMAS}\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW DATABASES lists the databases on the MySQL server host. SHOW\nSCHEMAS is a synonym for SHOW DATABASES. The LIKE clause, if present,\nindicates which database names to match. The WHERE clause can be given\nto select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nYou see only those databases for which you have some kind of privilege,\nunless you have the global SHOW DATABASES privilege. You can also get\nthis list using the mysqlshow command.\n\nIf the server was started with the --skip-show-database option, you\ncannot use this statement at all unless you have the SHOW DATABASES\nprivilege.\n\nSHOW SCHEMAS can also be used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-databases.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-databases.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (157,25,'SHOW DATABASES','Syntax:\nSHOW {DATABASES | SCHEMAS}\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW DATABASES lists the databases on the MySQL server host. SHOW\nSCHEMAS is a synonym for SHOW DATABASES. The LIKE clause, if present,\nindicates which database names to match. The WHERE clause can be given\nto select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nYou see only those databases for which you have some kind of privilege,\nunless you have the global SHOW DATABASES privilege. You can also get\nthis list using the mysqlshow command.\n\nIf the server was started with the --skip-show-database option, you\ncannot use this statement at all unless you have the SHOW DATABASES\nprivilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-databases.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-databases.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (158,18,'~','Syntax:\n~\n\nInvert all bits.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 5 & ~1;\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (159,20,'TEXT','TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 65,535 (216 - 1) characters. The\neffective maximum length is less if the value contains multi-byte\ncharacters. Each TEXT value is stored using a two-byte length prefix\nthat indicates the number of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest TEXT type large enough to hold\nvalues M characters long.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (160,35,'CONCAT_WS','Syntax:\nCONCAT_WS(separator,str1,str2,...)\n\nCONCAT_WS() stands for Concatenate With Separator and is a special form\nof CONCAT(). The first argument is the separator for the rest of the\narguments. The separator is added between the strings to be\nconcatenated. The separator can be a string, as can the rest of the\narguments. If the separator is NULL, the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT CONCAT_WS(\',\',\'First name\',\'Second name\',\'Last Name\');\n -> \'First name,Second name,Last Name\'\nmysql> SELECT CONCAT_WS(\',\',\'First name\',NULL,\'Last Name\');\n -> \'First name,Last Name\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
@@ -233,342 +233,343 @@ insert into help_topic (help_topic_id,he
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (164,30,'SEC_TO_TIME','Syntax:\nSEC_TO_TIME(seconds)\n\nReturns the seconds argument, converted to hours, minutes, and seconds,\nas a TIME value. The range of the result is constrained to that of the\nTIME data type. A warning occurs if the argument corresponds to a value\noutside that range.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SEC_TO_TIME(2378);\n -> \'00:39:38\'\nmysql> SELECT SEC_TO_TIME(2378) + 0;\n -> 3938\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (165,20,'FLOAT','FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA small (single-precision) floating-point number. Allowable values are\n-3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to\n3.402823466E+38. These are the theoretical limits, based on the IEEE\nstandard. The actual range might be slightly smaller depending on your\nhardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits allowed by the hardware. A single-precision floating-point\nnumber is accurate to approximately 7 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nUsing FLOAT might give you some unexpected problems because all\ncalculations in MySQL are done with double precision. See\nhttp://dev.mysql.com/doc/refman/5.1/en/no-matching-rows.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (166,35,'LOCATE','Syntax:\nLOCATE(substr,str), LOCATE(substr,str,pos)\n\nThe first syntax returns the position of the first occurrence of\nsubstring substr in string str. The second syntax returns the position\nof the first occurrence of substring substr in string str, starting at\nposition pos. Returns 0 if substr is not in str.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LOCATE(\'bar\', \'foobarbar\');\n -> 4\nmysql> SELECT LOCATE(\'xbar\', \'foobar\');\n -> 0\nmysql> SELECT LOCATE(\'bar\', \'foobarbar\', 5);\n -> 7\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (167,15,'CHARSET','Syntax:\nCHARSET(str)\n\nReturns the character set of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT CHARSET(\'abc\');\n -> \'latin1\'\nmysql> SELECT CHARSET(CONVERT(\'abc\' USING utf8));\n -> \'utf8\'\nmysql> SELECT CHARSET(USER());\n -> \'utf8\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (168,30,'SUBDATE','Syntax:\nSUBDATE(date,INTERVAL expr unit), SUBDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, SUBDATE()\nis a synonym for DATE_SUB(). For information on the INTERVAL unit\nargument, see the discussion for DATE_ADD().\n\nmysql> SELECT DATE_SUB(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\nmysql> SELECT SUBDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\n\nThe second form allows the use of an integer value for days. In such\ncases, it is interpreted as the number of days to be subtracted from\nthe date or datetime expression expr.\n\nmysql> SELECT SUBDATE(\'2008-01-02 12:00:00\', 31);\n -> \'2007-12-02 12:00:00\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (169,30,'DAYOFYEAR','Syntax:\nDAYOFYEAR(date)\n\nReturns the day of the year for date, in the range 1 to 366.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFYEAR(\'2007-02-03\');\n -> 34\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (170,20,'LONGTEXT','LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 4,294,967,295 or 4GB (232 - 1)\ncharacters. The effective maximum length is less if the value contains\nmulti-byte characters. The effective maximum length of LONGTEXT columns\nalso depends on the configured maximum packet size in the client/server\nprotocol and available memory. Each LONGTEXT value is stored using a\nfour-byte length prefix that indicates the number of bytes in the\nvalue.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (171,4,'%','Syntax:\nN % M\n\nModulo operation. Returns the remainder of N divided by M. For more\ninformation, see the description for the MOD() function in\nhttp://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html.\n\n…: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (172,26,'KILL','Syntax:\nKILL [CONNECTION | QUERY] thread_id\n\nEach connection to mysqld runs in a separate thread. You can see which\nthreads are running with the SHOW PROCESSLIST statement and kill a\nthread with the KILL thread_id statement.\n\nKILL allows the optional CONNECTION or QUERY modifier:\n\no KILL CONNECTION is the same as KILL with no modifier: It terminates\n the connection associated with the given thread_id.\n\no KILL QUERY terminates the statement that the connection is currently\n executing, but leaves the connection itself intact.\n\nIf you have the PROCESS privilege, you can see all threads. If you have\nthe SUPER privilege, you can kill all threads and statements.\nOtherwise, you can see and kill only your own threads and statements.\n\nYou can also use the mysqladmin processlist and mysqladmin kill\ncommands to examine and kill threads.\n\n*Note*: You cannot use KILL with the Embedded MySQL Server library,\nbecause the embedded server merely runs inside the threads of the host\napplication. It does not create any connection threads of its own.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/kill.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/kill.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (173,29,'DISJOINT','Disjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially disjoint from (does\nnot intersect) g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (174,3,'ASTEXT','AsText(g), AsWKT(g)\n\nConverts a value in internal geometry format to its WKT representation\nand returns the string result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…','mysql> SET @g = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(GeomFromText(@g));\n+--------------------------+\n| AsText(GeomFromText(@g)) |\n+--------------------------+\n| LINESTRING(1 1,2 2,3 3) |\n+--------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (175,35,'LPAD','Syntax:\nLPAD(str,len,padstr)\n\nReturns the string str, left-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters.\n\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LPAD(\'hi\',4,\'??\');\n -> \'??hi\'\nmysql> SELECT LPAD(\'hi\',1,\'??\');\n -> \'h\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (176,19,'RESTORE TABLE','Syntax:\nRESTORE TABLE tbl_name [, tbl_name] ... FROM \'/path/to/backup/directory\'\n\nRESTORE TABLE restores the table or tables from a backup that was made\nwith BACKUP TABLE. The directory should be specified as a full path\nname.\n\nExisting tables are not overwritten; if you try to restore over an\nexisting table, an error occurs. Just as for BACKUP TABLE, RESTORE\nTABLE currently works only for MyISAM tables. Restored tables are not\nreplicated from master to slave.\n\nThe backup for each table consists of its .frm format file and .MYD\ndata file. The restore operation restores those files, and then uses\nthem to rebuild the .MYI index file. Restoring takes longer than\nbacking up due to the need to rebuild the indexes. The more indexes the\ntable has, the longer it takes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/restore-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/restore-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (177,22,'DECLARE CONDITION','Syntax:\nDECLARE condition_name CONDITION FOR condition_value\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | mysql_error_code\n\nThe DECLARE ... CONDITION statement defines a named error condition. It\nspecifies a condition that needs specific handling and associates a\nname with that condition. The name can be referred to in a subsequence\nDECLARE ... HANDLER statement. See [HELP DECLARE HANDLER].\n\nA condition_value for DECLARE ... CONDITION can be an SQLSTATE value (a\n5-character string literal) or a MySQL error code (a number). You\nshould not use SQLSTATE value \'00000\' or MySQL error code 0, because\nthose indicate sucess rather than an error condition. For a list of\nSQLSTATE values and MySQL error codes, see\nhttp://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html.\n\n…: http://dev.mysql.com/doc/refman/5.1/en/declare-condition.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-condition.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (178,29,'OVERLAPS','Overlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially overlaps g2. The term\nspatially overlaps is used if two geometries intersect and their\nintersection results in a geometry of the same dimension but not equal\nto either of the given geometries.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (179,26,'SET GLOBAL SQL_SLAVE_SKIP_COUNTER','Syntax:\nSET GLOBAL SQL_SLAVE_SKIP_COUNTER = N\n\nThis statement skips the next N events from the master. This is useful\nfor recovering from replication stops caused by a statement.\n\nThis statement is valid only when the slave thread is not running.\nOtherwise, it produces an error.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-global-sql-slave-skip-counter.ht…','','http://dev.mysql.com/doc/refman/5.1/en/set-global-sql-slave-skip-counter.ht…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (180,24,'NUMGEOMETRIES','NumGeometries(gc)\n\nReturns the number of geometries in the GeometryCollection value gc.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT NumGeometries(GeomFromText(@gc));\n+----------------------------------+\n| NumGeometries(GeomFromText(@gc)) |\n+----------------------------------+\n| 2 |\n+----------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (181,30,'MONTHNAME','Syntax:\nMONTHNAME(date)\n\nReturns the full name of the month for date. As of MySQL 5.1.12, the\nlanguage used for the name is controlled by the value of the\nlc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.1/en/locale-support.html).\n\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MONTHNAME(\'2008-02-03\');\n -> \'February\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (182,36,'PROCEDURE ANALYSE','Syntax:\nanalyse([max_elements[,max_memory]])\n\nThis procedure is defined in the sql/sql_analyse.cc file. It examines\nthe result from a query and returns an analysis of the results that\nsuggests optimal data types for each column. To obtain this analysis,\nappend PROCEDURE ANALYSE to the end of a SELECT statement:\n\nSELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])\n\nFor example:\n\nSELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);\n\nThe results show some statistics for the values returned by the query,\nand propose an optimal data type for the columns. This can be helpful\nfor checking your existing tables, or after importing new data. You may\nneed to try different settings for the arguments so that PROCEDURE\nANALYSE() does not suggest the ENUM data type when it is not\nappropriate.\n\nThe arguments are optional and are used as follows:\n\no max_elements (default 256) is the maximum number of distinct values\n that analyse notices per column. This is used by analyse to check\n whether the optimal data type should be of type ENUM; if there are\n more than max_elements distinct values, then ENUM is not a suggested\n type.\n\no max_memory (default 8192) is the maximum amount of memory that\n analyse should allocate per column while trying to find all distinct\n values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/procedure-analyse.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/procedure-analyse.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (183,26,'CHANGE MASTER TO','Syntax:\nCHANGE MASTER TO master_def [, master_def] ...\n\nmaster_def:\n MASTER_BIND = \'interface_name\'\n | MASTER_HOST = \'host_name\'\n | MASTER_USER = \'user_name\'\n | MASTER_PASSWORD = \'password\'\n | MASTER_PORT = port_num\n | MASTER_CONNECT_RETRY = interval\n | MASTER_HEARTBEAT_PERIOD = interval\n | MASTER_LOG_FILE = \'master_log_name\'\n | MASTER_LOG_POS = master_log_pos\n | RELAY_LOG_FILE = \'relay_log_name\'\n | RELAY_LOG_POS = relay_log_pos\n | MASTER_SSL = {0|1}\n | MASTER_SSL_CA = \'ca_file_name\'\n | MASTER_SSL_CAPATH = \'ca_directory_name\'\n | MASTER_SSL_CERT = \'cert_file_name\'\n | MASTER_SSL_KEY = \'key_file_name\'\n | MASTER_SSL_CIPHER = \'cipher_list\'\n | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}\n\nCHANGE MASTER TO changes the parameters that the slave server uses for\nconnecting to and communicating with the master server. It also updates\nthe contents of the master.info and relay-log.info files.\n\nMASTER_USER, MASTER_PASSWORD, MASTER_SSL, MASTER_SSL_CA,\nMASTER_SSL_CAPATH, MASTER_SSL_CERT, MASTER_SSL_KEY, MASTER_SSL_CIPHER,\nand MASTER_SSL_VERIFY_SERVER_CERT provide information to the slave\nabout how to connect to its master. MASTER_SSL_VERIFY_SERVER_CERT was\nadded in MySQL 5.1.18. It is used as described for the\n--ssl-verify-server-cert option in\nhttp://dev.mysql.com/doc/refman/5.1/en/ssl-options.html.\n\nMASTER_CONN… specifies how many seconds to wait between connect\nretries. The default is 60. The number of reconnection attempts is\nlimited by the --master-retry-count server option; for more\ninformation, see\nhttp://dev.mysql.com/doc/refman/5.1/en/replication-options.html.\n\nThe SSL options (MASTER_SSL, MASTER_SSL_CA, MASTER_SSL_CAPATH,\nMASTER_SSL_CERT, MASTER_SSL_KEY, MASTER_SSL_CIPHER), and\nMASTER_SSL_VERIFY_SERVER_CERT can be changed even on slaves that are\ncompiled without SSL support. They are saved to the master.info file,\nbut are ignored unless you use a server that has SSL support enabled.\n\nIf you don\'t specify a given parameter, it keeps its old value, except\nas indicated in the following discussion. For example, if the password\nto connect to your MySQL master has changed, you just need to issue\nthese statements to tell the slave about the new password:\n\nSTOP SLAVE; -- if replication was running\nCHANGE MASTER TO MASTER_PASSWORD=\'new3cret\';\nSTART SLAVE; -- if you want to restart replication\n\nThere is no need to specify the parameters that do not change (host,\nport, user, and so forth).\n\nMASTER_HOST and MASTER_PORT are the host name (or IP address) of the\nmaster host and its TCP/IP port.\n\nThe next two options are available only in MySQL Cluster NDB 6.3 and\n6.4; they are not supported in mainline MySQL 5.1:\n\no MASTER_BIND is for use on replication slaves having multiple network\n interfaces, and determines which of the slave\'s network interfaces is\n chosen for connecting to the master. It is also possible to determine\n which network interface is to be used in such cases by starting the\n slave mysqld process with the --master-bind option.\n\n The ability to bind a replication slave to specific network interface\n was added in MySQL Cluster NDB 6.3.4.\n\no MASTER_HEARTBEAT_PERIOD is used to set the interval in seconds\n between replication heartbeats. Whenever the master\'s binlog is\n updated with an event, the waiting period for the next heartbeat is\n reset. interval is a decimal value having the range 0 to 4294967\n seconds and a resolution to hundredths of a second; the smallest\n nonzero value is 0.001. Heartbeats are sent by the master only if\n there are no unsent events in the binlog file for a period longer\n than interval.\n\n Setting interval to 0 disables heartbeats altogether. The default\n value for interval is equal to the value of slave_net_timeout divided\n by 2.\n\n *Note*: Setting @@global.slave_net_timeout to a value less than that\n of the current heartbeat interval results in a warning being issued.\n\n Issuing RESET SLAVE resets the heartbeat interval to the default.\n\n MASTER_HEARTBEAT_PERIOD was added in MySQL Cluster NDB 6.3.4.\n\n*Note*: Replication cannot use Unix socket files. You must be able to\nconnect to the master MySQL server using TCP/IP.\n\nIf you specify MASTER_HOST or MASTER_PORT, the slave assumes that the\nmaster server is different from before (even if you specify a host or\nport value that is the same as the current value.) In this case, the\nold values for the master binary log name and position are considered\nno longer applicable, so if you do not specify MASTER_LOG_FILE and\nMASTER_LOG_POS in the statement, MASTER_LOG_FILE=\'\' and\nMASTER_LOG_POS=4 are silently appended to it.\n\nSetting MASTER_HOST=\'\' --- that is, setting its value explicitly to an\nempty string --- is not the same as not setting it at all. Setting this\noption to an empty string causes START SLAVE subsequently to fail. This\nissue is addressed in MySQL 6.0. (Bug#28796\n(http://bugs.mysql.com/28796))\n\nMASTER_LOG_FILE and MASTER_LOG_POS are the coordinates at which the\nslave I/O thread should begin reading from the master the next time the\nthread starts. If you specify either of them, you cannot specify\nRELAY_LOG_FILE or RELAY_LOG_POS. If neither of MASTER_LOG_FILE or\nMASTER_LOG_POS are specified, the slave uses the last coordinates of\nthe slave SQL thread before CHANGE MASTER TO was issued. This ensures\nthat there is no discontinuity in replication, even if the slave SQL\nthread was late compared to the slave I/O thread, when you merely want\nto change, say, the password to use.\n\nCHANGE MASTER TO deletes all relay log files and starts a new one,\nunless you specify RELAY_LOG_FILE or RELAY_LOG_POS. In that case, relay\nlogs are kept; the relay_log_purge global variable is set silently to\n0.\n\nCHANGE MASTER TO is useful for setting up a slave when you have the\nsnapshot of the master and have recorded the log and the offset\ncorresponding to it. After loading the snapshot into the slave, you can\nrun CHANGE MASTER TO MASTER_LOG_FILE=\'log_name_on_master\',\nMASTER_LOG_POS=log_offset_on_master on the slave.\n\nThe following example changes the master and master\'s binary log\ncoordinates. This is used when you want to set up the slave to\nreplicate the master:\n\nCHANGE MASTER TO\n MASTER_HOST=\'master2.mycompany.com\',\n MASTER_USER=\'replication\',\n MASTER_PASSWORD=\'bigs3cret\',\n MASTER_PORT=3306,\n MASTER_LOG_FILE=\'master2-bin.001\',\n MASTER_LOG_POS=4,\n MASTER_CONNECT_RETRY=10;\n\nThe next example shows an operation that is less frequently employed.\nIt is used when the slave has relay logs that you want it to execute\nagain for some reason. To do this, the master need not be reachable.\nYou need only use CHANGE MASTER TO and start the SQL thread (START\nSLAVE SQL_THREAD):\n\nCHANGE MASTER TO\n RELAY_LOG_FILE=\'slave-relay-bin.006\',\n RELAY_LOG_POS=4025;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/change-master-to.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/change-master-to.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (184,37,'DROP DATABASE','Syntax:\nDROP {DATABASE | SCHEMA} [IF EXISTS] db_name\n\nDROP DATABASE drops all tables in the database and deletes the\ndatabase. Be very careful with this statement! To use DROP DATABASE,\nyou need the DROP privilege on the database. DROP SCHEMA is a synonym\nfor DROP DATABASE.\n\n*Important*: When a database is dropped, user privileges on the\ndatabase are not automatically dropped. See [HELP GRANT].\n\nIF EXISTS is used to prevent an error from occurring if the database\ndoes not exist.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-database.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (185,6,'MBREQUAL','MBREqual(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 are the same.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (186,30,'TIMESTAMP FUNCTION','Syntax:\nTIMESTAMP(expr), TIMESTAMP(expr1,expr2)\n\nWith a single argument, this function returns the date or datetime\nexpression expr as a datetime value. With two arguments, it adds the\ntime expression expr2 to the date or datetime expression expr1 and\nreturns the result as a datetime value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMP(\'2003-12-31\');\n -> \'2003-12-31 00:00:00\'\nmysql> SELECT TIMESTAMP(\'2003-12-31 12:00:00\',\'12:00:00\');\n -> \'2004-01-01 00:00:00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (187,35,'CHARACTER_LENGTH','Syntax:\nCHARACTER_LENGTH(str)\n\nCHARACTER_LENGTH() is a synonym for CHAR_LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (188,26,'SHOW GRANTS','Syntax:\nSHOW GRANTS [FOR user]\n\nThis statement lists the GRANT statement or statements that must be\nissued to duplicate the privileges that are granted to a MySQL user\naccount. The account is named using the same format as for the GRANT\nstatement; for example, \'jeffrey\'@\'localhost\'. If you specify only the\nuser name part of the account name, a host name part of \'%\' is used.\nFor additional information about specifying account names, see [HELP\nGRANT].\n\nmysql> SHOW GRANTS FOR \'root\'@\'localhost\';\n+---------------------------------------------------------------------+\n| Grants for root@localhost |\n+---------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'localhost\' WITH GRANT OPTION |\n+---------------------------------------------------------------------+\n\nTo list the privileges granted to the account that you are using to\nconnect to the server, you can use any of the following statements:\n\nSHOW GRANTS;\nSHOW GRANTS FOR CURRENT_USER;\nSHOW GRANTS FOR CURRENT_USER();\n\nAs of MySQL 5.1.12, if SHOW GRANTS FOR CURRENT_USER (or any of the\nequivalent syntaxes) is used in DEFINER context, such as within a\nstored procedure that is defined with SQL SECURITY DEFINER), the grants\ndisplayed are those of the definer and not the invoker.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-grants.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-grants.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (189,26,'SHOW PRIVILEGES','Syntax:\nSHOW PRIVILEGES\n\nSHOW PRIVILEGES shows the list of system privileges that the MySQL\nserver supports. The exact list of privileges depends on the version of\nyour server.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-privileges.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-privileges.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (190,37,'CREATE TABLESPACE','Syntax:\nCREATE TABLESPACE tablespace_name\n ADD DATAFILE \'file_name\'\n USE LOGFILE GROUP logfile_group\n [EXTENT_SIZE [=] extent_size]\n [INITIAL_SIZE [=] initial_size]\n [AUTOEXTEND_SIZE [=] autoextend_size]\n [MAX_SIZE [=] max_size]\n [NODEGROUP [=] nodegroup_id]\n [WAIT]\n [COMMENT [=] comment_text]\n ENGINE [=] engine_name\n\nThis statement is used to create a tablespace, which can contain one or\nmore data files, providing storage space for tables. One data file is\ncreated and added to the tablespace using this statement. Additional\ndata files may be added to the tablespace by using the ALTER TABLESPACE\nstatement (see [HELP ALTER TABLESPACE]). For rules covering the naming\nof tablespaces, see\nhttp://dev.mysql.com/doc/refman/5.1/en/identifiers.html.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and a log file group with the same name, or a\ntablespace and a data file with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for data files could not be longer than 128 characters.\n(Bug#31770 (http://bugs.mysql.com/31770))\n\nA log file group of one or more UNDO log files must be assigned to the\ntablespace to be created with the USE LOGFILE GROUP clause.\nlogfile_group must be an existing log file group created with CREATE\nLOGFILE GROUP (see\nhttp://dev.mysql.com/doc/refman/5.1/en/create-logfile-group.html).\nMu… tablespaces may use the same log file group for UNDO logging.\n\nThe EXTENT_SIZE sets the size, in bytes, of the extents used by any\nfiles belonging to the tablespace. The default value is 1M. The minimum\nsize is 32K, and theoretical maximum is 2G, although the practical\nmaximum size depends on a number of factors. In most cases, changing\nthe extent size does not have any measurable effect on performance, and\nthe default value is recommended for all but the most unusual\nsituations.\n\nAn extent is a unit of disk space allocation. One extent is filled with\nas much data as that extent can contain before another extent is used.\nIn theory, up to 65,535 (64K) extents may used per data file; however,\nthe recommended maximum is 32,768 (32K). The recommended maximum size\nfor a single data file is 32G --- that is, 32K extents x 1 MB per\nextent. In addition, once an extent is allocated to a given partition,\nit cannot be used to store data from a different partition; an extent\ncannot store data from more than one partition. This means, for example\nthat a tablespace having a single datafile whose INITIAL_SIZE is 256 MB\nand whose EXTENT_SIZE is 128M has just two extents, and so can be used\nto store data from at most two different disk data table partitions.\n\nYou can see how many extents remain free in a given data file by\nquerying the INFORMATION_SCHEMA.FILES table, and so derive an estimate\nfor how much space remains free in the file. For further discussion and\nexamples, see http://dev.mysql.com/doc/refman/5.1/en/files-table.html.\n\nThe INITIAL_SIZE parameter sets the data file\'s total size in bytes.\nOnce the file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using ALTER TABLESPACE\n... ADD DATAFILE. See [HELP ALTER TABLESPACE].\n\nINITIAL_SIZE is optional; its default value is 128M.\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nWhen setting EXTENT_SIZE or INITIAL_SIZE (either or both), you may\noptionally follow the number with a one-letter abbreviation for an\norder of magnitude, similar to those used in my.cnf. Generally, this is\none of the letters M (for megabytes) or G (for gigabytes).\n\nAUTOEXTEND_SIZE, MAX_SIZE, NODEGROUP, WAIT, and COMMENT are parsed but\nignored, and so have no effect in MySQL 5.1. These options are intended\nfor future expansion.\n\nThe ENGINE parameter determines the storage engine which uses this\ntablespace, with engine_name being the name of the storage engine. In\nMySQL 5.1, engine_name must be one of the values NDB or NDBCLUSTER.\n\nWhen CREATE TABLESPACE is used with ENGINE = NDB, a tablespace and\nassociated data file are created on each Cluster data node. You can\nverify that the data files were created and obtain information about\nthem by querying the INFORMATION_SCHEMA.FILES table. For example:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA \n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+-------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+-------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n+--------------------+-------------+----------------+\n2 rows in set (0.01 sec)\n\n(See http://dev.mysql.com/doc/refman/5.1/en/files-table.html.)\n\nCREATE TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (191,35,'INSERT FUNCTION','Syntax:\nINSERT(str,pos,len,newstr)\n\nReturns the string str, with the substring beginning at position pos\nand len characters long replaced by the string newstr. Returns the\noriginal string if pos is not within the length of the string. Replaces\nthe rest of the string from position pos if len is not within the\nlength of the rest of the string. Returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT INSERT(\'Quadratic\', 3, 4, \'What\');\n -> \'QuWhattic\'\nmysql> SELECT INSERT(\'Quadratic\', -1, 4, \'What\');\n -> \'Quadratic\'\nmysql> SELECT INSERT(\'Quadratic\', 3, 100, \'What\');\n -> \'QuWhat\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (192,4,'CRC32','Syntax:\nCRC32(expr)\n\nComputes a cyclic redundancy check value and returns a 32-bit unsigned\nvalue. The result is NULL if the argument is NULL. The argument is\nexpected to be a string and (if possible) is treated as one if it is\nnot.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CRC32(\'MySQL\');\n -> 3259397556\nmysql> SELECT CRC32(\'mysql\');\n -> 2501908538\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (193,13,'XOR','Syntax:\nXOR\n\nLogical XOR. Returns NULL if either operand is NULL. For non-NULL\noperands, evaluates to 1 if an odd number of operands is non-zero,\notherwise 0 is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 XOR 1;\n -> 0\nmysql> SELECT 1 XOR 0;\n -> 1\nmysql> SELECT 1 XOR NULL;\n -> NULL\nmysql> SELECT 1 XOR 1 XOR 1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (194,12,'STARTPOINT','StartPoint(ls)\n\nReturns the Point that is the start point of the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(StartPoint(GeomFromText(@ls)));\n+---------------------------------------+\n| AsText(StartPoint(GeomFromText(@ls))) |\n+---------------------------------------+\n| POINT(1 1) |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (195,22,'DECLARE VARIABLE','Syntax:\nDECLARE var_name [, var_name] ... type [DEFAULT value]\n\nThis statement is used to declare local variables within stored\nprograms. To provide a default value for the variable, include a\nDEFAULT clause. The value can be specified as an expression; it need\nnot be a constant. If the DEFAULT clause is missing, the initial value\nis NULL.\n\nLocal variables are treated like stored routine parameters with respect\nto data type and overflow checking. See [HELP CREATE PROCEDURE].\n\nLocal variable names are not case sensitive.\n\nThe scope of a local variable is within the BEGIN ... END block where\nit is declared. The variable can be referred to in blocks nested within\nthe declaring block, except those blocks that declare a variable with\nthe same name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-local-variable.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-local-variable.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (196,9,'GRANT','Syntax:\nGRANT\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n TO user [IDENTIFIED BY [PASSWORD] \'password\']\n [, user [IDENTIFIED BY [PASSWORD] \'password\']] ...\n [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]\n [WITH with_option [with_option] ...]\n\nobject_type:\n TABLE\n | FUNCTION\n | PROCEDURE\n\npriv_level:\n *\n | *.*\n | db_name.*\n | db_name.tbl_name\n | tbl_name\n | db_name.routine_name\n\nwith_option:\n GRANT OPTION\n | MAX_QUERIES_PER_HOUR count\n | MAX_UPDATES_PER_HOUR count\n | MAX_CONNECTIONS_PER_HOUR count\n | MAX_USER_CONNECTIONS count\n\nssl_option:\n SSL\n | X509\n | CIPHER \'cipher\'\n | ISSUER \'issuer\'\n | SUBJECT \'subject\'\n\nThe GRANT statement enables system administrators to create MySQL user\naccounts and to grant rights to accounts. To use GRANT, you must have\nthe GRANT OPTION privilege, and you must have the privileges that you\nare granting. The REVOKE statement is related and enables\nadministrators to remove account privileges. To determine what\nprivileges an account has, use SHOW GRANTS. See [HELP REVOKE], and\n[HELP SHOW GRANTS].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/grant.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/grant.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (197,3,'MPOLYFROMTEXT','MPolyFromText(wkt[,srid]), MultiPolygonFromText(wkt[,srid])\n\nConstructs a MULTIPOLYGON value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (198,6,'MBRINTERSECTS','MBRIntersects(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 intersect.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (199,16,'BIT_OR','Syntax:\nBIT_OR(expr)\n\nReturns the bitwise OR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (200,30,'YEARWEEK','Syntax:\nYEARWEEK(date), YEARWEEK(date,mode)\n\nReturns year and week for a date. The mode argument works exactly like\nthe mode argument to WEEK(). The year in the result may be different\nfrom the year in the date argument for the first and the last week of\nthe year.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT YEARWEEK(\'1987-01-01\');\n -> 198653\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (201,17,'NOT BETWEEN','Syntax:\nexpr NOT BETWEEN min AND max\n\nThis is the same as NOT (expr BETWEEN min AND max).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (202,17,'IS NOT','Syntax:\nIS NOT boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;\n -> 1, 1, 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (203,4,'LOG10','Syntax:\nLOG10(X)\n\nReturns the base-10 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG10(2);\n -> 0.30102999566398\nmysql> SELECT LOG10(100);\n -> 2\nmysql> SELECT LOG10(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (204,4,'SQRT','Syntax:\nSQRT(X)\n\nReturns the square root of a non-negative number X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT SQRT(4);\n -> 2\nmysql> SELECT SQRT(20);\n -> 4.4721359549996\nmysql> SELECT SQRT(-16);\n -> NULL \n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (205,20,'DECIMAL','DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nA packed "exact" fixed-point number. M is the total number of digits\n(the precision) and D is the number of digits after the decimal point\n(the scale). The decimal point and (for negative numbers) the "-" sign\nare not counted in M. If D is 0, values have no decimal point or\nfractional part. The maximum number of digits (M) for DECIMAL is 65.\nThe maximum number of supported decimals (D) is 30. If D is omitted,\nthe default is 0. If M is omitted, the default is 10.\n\nUNSIGNED, if specified, disallows negative values.\n\nAll basic calculations (+, -, *, /) with DECIMAL columns are done with\na precision of 65 digits.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (206,37,'CREATE INDEX','Syntax:\nCREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name\n [index_type]\n ON tbl_name (index_col_name,...)\n [index_option] ...\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n\nCREATE INDEX is mapped to an ALTER TABLE statement to create indexes.\nSee [HELP ALTER TABLE]. CREATE INDEX cannot be used to create a PRIMARY\nKEY; use ALTER TABLE instead. For more information about indexes, see\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-index.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (207,37,'CREATE FUNCTION','The CREATE FUNCTION statement is used to create stored functions and\nuser-defined functions (UDFs):\n\no For information about creating stored functions, see [HELP CREATE\n PROCEDURE].\n\no For information about creating user-defined functions, see [HELP\n CREATE FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-function.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (208,37,'ALTER DATABASE','Syntax:\nALTER {DATABASE | SCHEMA} [db_name]\n alter_specification ...\nALTER {DATABASE | SCHEMA} db_name\n UPGRADE DATA DIRECTORY NAME\n\nalter_specification:\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n\nALTER DATABASE enables you to change the overall characteristics of a\ndatabase. These characteristics are stored in the db.opt file in the\ndatabase directory. To use ALTER DATABASE, you need the ALTER privilege\non the database. ALTER SCHEMA is a synonym for ALTER DATABASE.\n\nThe CHARACTER SET clause changes the default database character set.\nThe COLLATE clause changes the default database collation.\nhttp://dev.mysql.com/doc/refman/5.1/en/charset.html, discusses\ncharacter set and collation names.\n\nYou can see what character sets and collations are available using,\nrespectively, the SHOW CHARACTER SET and SHOW COLLATION statements. See\n[HELP SHOW CHARACTER SET], and [HELP SHOW COLLATION], for more\ninformation.\n\nThe database name can be omitted from the first syntax, in which case\nthe statement applies to the default database.\n\nThe syntax that includes the UPGRADE DATA DIRECTORY NAME clause was\nadded in MySQL 5.1.23. It updates the name of the directory associated\nwith the database to use the encoding implemented in MySQL 5.1 for\nmapping database names to database directory names (see\nhttp://dev.mysql.com/doc/refman/5.1/en/identifier-mapping.html) This\nclause is for use under these conditions:\n\no It is intended when upgrading MySQL to 5.1 or later from older\n versions.\n\no It is intended to update a database directory name to the current\n encoding format if the name contains special characters that need\n encoding.\n\no The statement is used by mysqlcheck (as invoked by mysql_upgrade).\n\nFor example,if a database in MySQL 5.0 has a name of a-b-c, the name\ncontains instance of the `-\' character. In 5.0, the database directory\nis also named a-b-c, which is not necessarily safe for all file\nsystems. In MySQL 5.1 and up, the same database name is encoded as\na@002db@002dc to produce a file system-neutral directory name.\n\nWhen a MySQL installation is upgraded to MySQL 5.1 or later from an\nolder version,the server displays a name such as a-b-c (which is in the\nold format) as #mysql50#a-b-c, and you must refer to the name using the\n#mysql50# prefix. Use UPGRADE DATA DIRECTORY NAME in this case to\nexplicitly tell the server to re-encode the database directory name to\nthe current encoding format:\n\nALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;\n\nAfter executing this statement, you can refer to the database as a-b-c\nwithout the special #mysql50# prefix.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-database.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (209,24,'GEOMETRYN','GeometryN(gc,N)\n\nReturns the N-th geometry in the GeometryCollection value gc.\nGeometries are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT AsText(GeometryN(GeomFromText(@gc),1));\n+----------------------------------------+\n| AsText(GeometryN(GeomFromText(@gc),1)) |\n+----------------------------------------+\n| POINT(1 1) |\n+----------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (210,18,'<<','Syntax:\n<<\n\nShifts a longlong (BIGINT) number to the left.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 1 << 2;\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (211,26,'SHOW TABLE STATUS','Syntax:\nSHOW TABLE STATUS [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLE STATUS works likes SHOW TABLES, but provides a lot of\ninformation about each non-TEMPORARY table. You can also get this list\nusing the mysqlshow --status db_name command. The LIKE clause, if\npresent, indicates which table names to match. The WHERE clause can be\ngiven to select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (212,11,'MD5','Syntax:\nMD5(str)\n\nCalculates an MD5 128-bit checksum for the string. The value is\nreturned as a binary string of 32 hex digits, or NULL if the argument\nwas NULL. The return value can, for example, be used as a hash key.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT MD5(\'testing\');\n -> \'ae2b1fca515949e5d54fb22b8ed95575\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (213,17,'<','Syntax:\n<\n\nLess than:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 < 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (214,30,'UNIX_TIMESTAMP','Syntax:\nUNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)\n\nIf called with no argument, returns a Unix timestamp (seconds since\n\'1970-01-01 00:00:00\' UTC) as an unsigned integer. If UNIX_TIMESTAMP()\nis called with a date argument, it returns the value of the argument as\nseconds since \'1970-01-01 00:00:00\' UTC. date may be a DATE string, a\nDATETIME string, a TIMESTAMP, or a number in the format YYMMDD or\nYYYYMMDD. The server interprets date as a value in the current time\nzone and converts it to an internal value in UTC. Clients can set their\ntime zone as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UNIX_TIMESTAMP();\n -> 1196440210\nmysql> SELECT UNIX_TIMESTAMP(\'2007-11-30 10:30:19\');\n -> 1196440219\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (215,30,'DAYOFMONTH','Syntax:\nDAYOFMONTH(date)\n\nReturns the day of the month for date, in the range 1 to 31, or 0 for\ndates such as \'0000-00-00\' or \'2008-00-00\' that have a zero day part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFMONTH(\'2007-02-03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (216,35,'ASCII','Syntax:\nASCII(str)\n\nReturns the numeric value of the leftmost character of the string str.\nReturns 0 if str is the empty string. Returns NULL if str is NULL.\nASCII() works for 8-bit characters.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ASCII(\'2\');\n -> 50\nmysql> SELECT ASCII(2);\n -> 50\nmysql> SELECT ASCII(\'dx\');\n -> 100\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (217,4,'DIV','Syntax:\nDIV\n\nInteger division. Similar to FLOOR(), but is safe with BIGINT values.\nIncorrect results may occur for non-integer operands that exceed BIGINT\nrange.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 5 DIV 2;\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (218,9,'RENAME USER','Syntax:\nRENAME USER old_user TO new_user\n [, old_user TO new_user] ...\n\nThe RENAME USER statement renames existing MySQL accounts. To use it,\nyou must have the global CREATE USER privilege or the UPDATE privilege\nfor the mysql database. An error occurs if any old account does not\nexist or any new account exists. Each account is named using the same\nformat as for the GRANT statement; for example, \'jeffrey\'@\'localhost\'.\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used. For additional information about specifying\naccount names, see [HELP GRANT].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/rename-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/rename-user.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (219,26,'SHOW SLAVE STATUS','Syntax:\nSHOW SLAVE STATUS\n\nThis statement provides status information on essential parameters of\nthe slave threads. If you issue this statement using the mysql client,\nyou can use a \\G statement terminator rather than a semicolon to obtain\na more readable vertical layout:\n\nmysql> SHOW SLAVE STATUS\\G\n*************************** 1. row ***************************\n Slave_IO_State: Waiting for master to send event\n Master_Host: localhost\n Master_User: root\n Master_Port: 3306\n Connect_Retry: 3\n Master_Log_File: gbichot-bin.005\n Read_Master_Log_Pos: 79\n Relay_Log_File: gbichot-relay-bin.005\n Relay_Log_Pos: 548\n Relay_Master_Log_File: gbichot-bin.005\n Slave_IO_Running: Yes\n Slave_SQL_Running: Yes\n Replicate_Do_DB:\n Replicate_Ignore_DB:\n Last_Errno: 0\n Last_Error:\n Skip_Counter: 0\n Exec_Master_Log_Pos: 79\n Relay_Log_Space: 552\n Until_Condition: None\n Until_Log_File:\n Until_Log_Pos: 0\n Master_SSL_Allowed: No\n Master_SSL_CA_File:\n Master_SSL_CA_Path:\n Master_SSL_Cert:\n Master_SSL_Cipher:\n Master_SSL_Key:\n Seconds_Behind_Master: 8\nMaster_SSL_Verify_Server_Cert: No\n Last_IO_Errno: 0\n Last_IO_Error:\n Last_SQL_Errno: 0\n Last_SQL_Error:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-slave-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-slave-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (220,32,'GEOMETRY','MySQL provides a standard way of creating spatial columns for geometry\ntypes, for example, with CREATE TABLE or ALTER TABLE. Currently,\nspatial columns are supported for MyISAM, InnoDB, NDB, and ARCHIVE\ntables. See also the annotations about spatial indexes under [HELP\nSPATIAL].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-columns.html\n\n','CREATE TABLE geom (g GEOMETRY);\n','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-columns.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (221,12,'NUMPOINTS','NumPoints(ls)\n\nReturns the number of Point objects in the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT NumPoints(GeomFromText(@ls));\n+------------------------------+\n| NumPoints(GeomFromText(@ls)) |\n+------------------------------+\n| 3 |\n+------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (222,37,'ALTER LOGFILE GROUP','Syntax:\nALTER LOGFILE GROUP logfile_group\n ADD UNDOFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement adds an UNDO file named \'file_name\' to an existing log\nfile group logfile_group. An ALTER LOGFILE GROUP statement has one and\nonly one ADD UNDOFILE clause. No DROP UNDOFILE clause is currently\nsupported.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an undo log file with the same name, or an undo\nlog file and a data file with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for undo log files could not be longer than 128 characters.\n(Bug#31769 (http://bugs.mysql.com/31769))\n\nThe optional INITIAL_SIZE parameter sets the UNDO file\'s initial size\nin bytes; if not specified, the initial size default to 128M (128\nmegabytes). You may optionally follow size with a one-letter\nabbreviation for an order of magnitude, similar to those used in\nmy.cnf. Generally, this is one of the letters M (for megabytes) or G\n(for gigabytes).\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nBeginning with MySQL Cluster NDB 2.1.18, 6.3.24, and 7.0.4, the minimum\nallowed value for INITIAL_SIZE is 1M. (Bug#29574\n(http://bugs.mysql.com/29574))\n\n*Note*: WAIT is parsed but otherwise ignored, and so has no effect in\nMySQL 5.1 and MySQL Cluster NDB 6.x. It is intended for future\nexpansion.\n\nThe ENGINE parameter (required) determines the storage engine which is\nused by this log file group, with engine_name being the name of the\nstorage engine. In MySQL 5.1 and MySQL Cluster NDB 6.x, the only\naccepted values for engine_name are "NDBCLUSTER" and "NDB". The two\nvalues are equivalent.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-logfile-group.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-logfile-group.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (223,18,'&','Syntax:\n&\n\nBitwise AND:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 29 & 15;\n -> 13\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (224,30,'LOCALTIMESTAMP','Syntax:\nLOCALTIMESTAMP, LOCALTIMESTAMP()\n\nLOCALTIMESTAMP and LOCALTIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (225,35,'CONVERT','Syntax:\nCONVERT(expr,type), CONVERT(expr USING transcoding_name)\n\nThe CONVERT() and CAST() functions take a value of one type and produce\na value of another type.\n\nThe type can be one of the following values:\n\no BINARY[(N)]\n\no CHAR[(N)]\n\no DATE\n\no DATETIME\n\no DECIMAL[(M[,D])]\n\no SIGNED [INTEGER]\n\no TIME\n\no UNSIGNED [INTEGER]\n\nBINARY produces a string with the BINARY data type. See\nhttp://dev.mysql.com/doc/refman/5.1/en/binary-varbinary.html for a\ndescription of how this affects comparisons. If the optional length N\nis given, BINARY(N) causes the cast to use no more than N bytes of the\nargument. Values shorter than N bytes are padded with 0x00 bytes to a\nlength of N.\n\nCHAR(N) causes the cast to use no more than N characters of the\nargument.\n\nCAST() and CONVERT(... USING ...) are standard SQL syntax. The\nnon-USING form of CONVERT() is ODBC syntax.\n\nCONVERT() with USING is used to convert data between different\ncharacter sets. In MySQL, transcoding names are the same as the\ncorresponding character set names. For example, this statement converts\nthe string \'abc\' in the default character set to the corresponding\nstring in the utf8 character set:\n\nSELECT CONVERT(\'abc\' USING utf8);\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','SELECT enum_col FROM tbl_name ORDER BY CAST(enum_col AS CHAR);\n','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (226,30,'ADDDATE','Syntax:\nADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, ADDDATE()\nis a synonym for DATE_ADD(). The related function SUBDATE() is a\nsynonym for DATE_SUB(). For information on the INTERVAL unit argument,\nsee the discussion for DATE_ADD().\n\nmysql> SELECT DATE_ADD(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\nmysql> SELECT ADDDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\n\nWhen invoked with the days form of the second argument, MySQL treats it\nas an integer number of days to be added to expr.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT ADDDATE(\'2008-01-02\', 31);\n -> \'2008-02-02\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (227,22,'REPEAT LOOP','Syntax:\n[begin_label:] REPEAT\n statement_list\nUNTIL search_condition\nEND REPEAT [end_label]\n\nThe statement list within a REPEAT statement is repeated until the\nsearch_condition is true. Thus, a REPEAT always enters the loop at\nleast once. statement_list consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter.\n\nA REPEAT statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/repeat-statement.html\n\n','mysql> delimiter //\n\nmysql> CREATE PROCEDURE dorepeat(p1 INT)\n -> BEGIN\n -> SET @x = 0;\n -> REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;\n -> END\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL dorepeat(1000)//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n+------+\n| @x |\n+------+\n| 1001 |\n+------+\n1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/repeat-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (228,37,'ALTER FUNCTION','Syntax:\nALTER FUNCTION func_name [characteristic ...]\n\ncharacteristic:\n { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nThis statement can be used to change the characteristics of a stored\nfunction. More than one change may be specified in an ALTER FUNCTION\nstatement. However, you cannot change the parameters or body of a\nstored function using this statement; to make such changes, you must\ndrop and re-create the function using DROP FUNCTION and CREATE\nFUNCTION.\n\nYou must have the ALTER ROUTINE privilege for the function. (That\nprivilege is granted automatically to the function creator.) If binary\nlogging is enabled, the ALTER FUNCTION statement might also require the\nSUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/alter-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-function.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (229,20,'SMALLINT','SMALLINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA small integer. The signed range is -32768 to 32767. The unsigned\nrange is 0 to 65535.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (230,20,'DOUBLE PRECISION','DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED]\n[ZEROFILL]\n\nThese types are synonyms for DOUBLE. Exception: If the REAL_AS_FLOAT\nSQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (231,35,'ORD','Syntax:\nORD(str)\n\nIf the leftmost character of the string str is a multi-byte character,\nreturns the code for that character, calculated from the numeric values\nof its constituent bytes using this formula:\n\n (1st byte code)\n+ (2nd byte code x 256)\n+ (3rd byte code x 2562) ...\n\nIf the leftmost character is not a multi-byte character, ORD() returns\nthe same value as the ASCII() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ORD(\'2\');\n -> 50\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (232,26,'DEALLOCATE PREPARE','Syntax:\n{DEALLOCATE | DROP} PREPARE stmt_name\n\nTo deallocate a prepared statement produced with PREPARE, use a\nDEALLOCATE PREPARE statement that refers to the prepared statement\nname. Attempting to execute a prepared statement after deallocating it\nresults in an error.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/deallocate-prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/deallocate-prepare.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (233,34,'ENVELOPE','Envelope(g)\n\nReturns the Minimum Bounding Rectangle (MBR) for the geometry value g.\nThe result is returned as a Polygon value.\n\nThe polygon is defined by the corner points of the bounding box:\n\nPOLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\')));\n+-------------------------------------------------------+\n| AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\'))) |\n+-------------------------------------------------------+\n| POLYGON((1 1,2 1,2 2,1 2,1 1)) |\n+-------------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (234,14,'IS_FREE_LOCK','Syntax:\nIS_FREE_LOCK(str)\n\nChecks whether the lock named str is free to use (that is, not locked).\nReturns 1 if the lock is free (no one is using the lock), 0 if the lock\nis in use, and NULL if an error occurs (such as an incorrect argument).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (235,29,'TOUCHES','Touches(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially touches g2. Two\ngeometries spatially touch if the interiors of the geometries do not\nintersect, but the boundary of one of the geometries intersects either\nthe boundary or the interior of the other.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (236,14,'INET_ATON','Syntax:\nINET_ATON(expr)\n\nGiven the dotted-quad representation of a network address as a string,\nreturns an integer that represents the numeric value of the address.\nAddresses may be 4- or 8-byte addresses.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_ATON(\'209.207.224.40\');\n -> 3520061480\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (237,11,'UNCOMPRESS','Syntax:\nUNCOMPRESS(string_to_uncompress)\n\nUncompresses a string compressed by the COMPRESS() function. If the\nargument is not a compressed value, the result is NULL. This function\nrequires MySQL to have been compiled with a compression library such as\nzlib. Otherwise, the return value is always NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESS(COMPRESS(\'any string\'));\n -> \'any string\'\nmysql> SELECT UNCOMPRESS(\'any string\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (238,20,'AUTO_INCREMENT','The AUTO_INCREMENT attribute can be used to generate a unique identity\nfor new rows:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html\n\n','CREATE TABLE animals (\n id MEDIUMINT NOT NULL AUTO_INCREMENT,\n name CHAR(30) NOT NULL,\n PRIMARY KEY (id)\n );\n\nINSERT INTO animals (name) VALUES \n (\'dog\'),(\'cat\'),(\'penguin\'),\n (\'lax\'),(\'whale\'),(\'ostrich\');\n\nSELECT * FROM animals;\n','http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (239,34,'ISSIMPLE','IsSimple(g)\n\nCurrently, this function is a placeholder and should not be used. If\nimplemented, its behavior will be as described in the next paragraph.\n\nReturns 1 if the geometry value g has no anomalous geometric points,\nsuch as self-intersection or self-tangency. IsSimple() returns 0 if the\nargument is not simple, and -1 if it is NULL.\n\nThe description of each instantiable geometric class given earlier in\nthe chapter includes the specific conditions that cause an instance of\nthat class to be classified as not simple. (See [HELP Geometry\nhierarchy].)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (240,4,'- BINARY','Syntax:\n-\n\nSubtraction:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3-5;\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (241,3,'GEOMCOLLFROMTEXT','GeomCollFromText(wkt[,srid]), GeometryCollectionFromText(wkt[,srid])\n\nConstructs a GEOMETRYCOLLECTION value using its WKT representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (242,3,'WKT DEFINITION','The Well-Known Text (WKT) representation of Geometry is designed to\nexchange geometry data in ASCII form.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-wkt-format.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/gis-wkt-format.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (243,30,'CURRENT_TIME','Syntax:\nCURRENT_TIME, CURRENT_TIME()\n\nCURRENT_TIME and CURRENT_TIME() are synonyms for CURTIME().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (244,9,'REVOKE','Syntax:\nREVOKE\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n FROM user [, user] ...\n\nREVOKE ALL PRIVILEGES, GRANT OPTION\n FROM user [, user] ...\n\nThe REVOKE statement enables system administrators to revoke privileges\nfrom MySQL accounts. Each account is named using the same format as for\nthe GRANT statement; for example, \'jeffrey\'@\'localhost\'. If you specify\nonly the user name part of the account name, a host name part of \'%\' is\nused. For details on the levels at which privileges exist, the\nallowable priv_type and priv_level values, and the syntax for\nspecifying users and passwords, see [HELP GRANT]\n\nTo use the first REVOKE syntax, you must have the GRANT OPTION\nprivilege, and you must have the privileges that you are revoking.\n\nTo revoke all privileges, use the second syntax, which drops all\nglobal, database, table, column, and routine privileges for the named\nuser or users:\n\nREVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...\n\nTo use this REVOKE syntax, you must have the global CREATE USER\nprivilege or the UPDATE privilege for the mysql database.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/revoke.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/revoke.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (245,15,'LAST_INSERT_ID','Syntax:\nLAST_INSERT_ID(), LAST_INSERT_ID(expr)\n\nFor MySQL 5.1.12 and later, LAST_INSERT_ID() (no arguments) returns the\nfirst automatically generated value successfully inserted for an\nAUTO_INCREMENT column as a result of the most recently executed INSERT\nstatement. The value of LAST_INSERT_ID() remains unchanged if no rows\nare successfully inserted.\n\nFor example, after inserting a row that generates an AUTO_INCREMENT\nvalue, you can get the value like this:\n\nmysql> SELECT LAST_INSERT_ID();\n -> 195\n\nIn MySQL 5.1.11 and earlier, LAST_INSERT_ID() (no arguments) returns\nthe first automatically generated value if any rows were successfully\ninserted or updated. This means that the returned value could be a\nvalue that was not successfully inserted into the table. If no rows\nwere successfully inserted, LAST_INSERT_ID() returns 0.\n\nThe value of LAST_INSERT_ID() will be consistent across all versions if\nall rows in the INSERT or UPDATE statement were successful.\n\nif a table contains an AUTO_INCREMENT column and INSERT ... ON\nDUPLICATE KEY UPDATE updates (rather than inserts) a row, the value of\nLAST_INSERT_ID() is not meaningful prior to MySQL 5.1.12. For a\nworkaround, see\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html.\n\nThe currently executing statement does not affect the value of\nLAST_INSERT_ID(). Suppose that you generate an AUTO_INCREMENT value\nwith one statement, and then refer to LAST_INSERT_ID() in a\nmultiple-row INSERT statement that inserts rows into a table with its\nown AUTO_INCREMENT column. The value of LAST_INSERT_ID() will remain\nstable in the second statement; its value for the second and later rows\nis not affected by the earlier row insertions. (However, if you mix\nreferences to LAST_INSERT_ID() and LAST_INSERT_ID(expr), the effect is\nundefined.)\n\nIf the previous statement returned an error, the value of\nLAST_INSERT_ID() is undefined. For transactional tables, if the\nstatement is rolled back due to an error, the value of LAST_INSERT_ID()\nis left undefined. For manual ROLLBACK, the value of LAST_INSERT_ID()\nis not restored to that before the transaction; it remains as it was at\nthe point of the ROLLBACK.\n\nWithin the body of a stored routine (procedure or function) or a\ntrigger, the value of LAST_INSERT_ID() changes the same way as for\nstatements executed outside the body of these kinds of objects. The\neffect of a stored routine or trigger upon the value of\nLAST_INSERT_ID() that is seen by following statements depends on the\nkind of routine:\n\no If a stored procedure executes statements that change the value of\n LAST_INSERT_ID(), the changed value will be seen by statements that\n follow the procedure call.\n\no For stored functions and triggers that change the value, the value is\n restored when the function or trigger ends, so following statements\n will not see a changed value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (246,30,'LAST_DAY','Syntax:\nLAST_DAY(date)\n\nTakes a date or datetime value and returns the corresponding value for\nthe last day of the month. Returns NULL if the argument is invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT LAST_DAY(\'2003-02-05\');\n -> \'2003-02-28\'\nmysql> SELECT LAST_DAY(\'2004-02-05\');\n -> \'2004-02-29\'\nmysql> SELECT LAST_DAY(\'2004-01-01 01:01:01\');\n -> \'2004-01-31\'\nmysql> SELECT LAST_DAY(\'2003-03-32\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (247,20,'MEDIUMINT','MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA medium-sized integer. The signed range is -8388608 to 8388607. The\nunsigned range is 0 to 16777215.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (248,4,'FLOOR','Syntax:\nFLOOR(X)\n\nReturns the largest integer value not greater than X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT FLOOR(1.23);\n -> 1\nmysql> SELECT FLOOR(-1.23);\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (249,35,'RTRIM','Syntax:\nRTRIM(str)\n\nReturns the string str with trailing space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RTRIM(\'barbar \');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (250,27,'EXPLAIN','Syntax:\nEXPLAIN tbl_name\n\nOr:\n\nEXPLAIN [EXTENDED | PARTITIONS] SELECT select_options\n\nThe EXPLAIN statement can be used either as a synonym for DESCRIBE or\nas a way to obtain information about how MySQL executes a SELECT\nstatement:\n\no EXPLAIN tbl_name is synonymous with DESCRIBE tbl_name or SHOW COLUMNS\n FROM tbl_name.\n\n For a description of the DESCRIBE and SHOW COLUMNS statements, see\n [HELP DESCRIBE], and [HELP SHOW COLUMNS].\n\no When you precede a SELECT statement with the keyword EXPLAIN, MySQL\n displays information from the optimizer about the query execution\n plan. That is, MySQL explains how it would process the SELECT,\n including information about how tables are joined and in which order.\n EXPLAIN EXTENDED can be used to provide additional information.\n\n For information regarding the use of EXPLAIN and EXPLAIN EXTENDED for\n obtaining query execution plan information, see\n http://dev.mysql.com/doc/refman/5.1/en/using-explain.html.\n\no EXPLAIN PARTITIONS is available beginning with MySQL 5.1.5. It is\n useful only when examining queries involving partitioned tables.\n\n For details, see\n http://dev.mysql.com/doc/refman/5.1/en/partitioning-info.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/explain.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/explain.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (251,4,'DEGREES','Syntax:\nDEGREES(X)\n\nReturns the argument X, converted from radians to degrees.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT DEGREES(PI());\n -> 180\nmysql> SELECT DEGREES(PI() / 2);\n -> 90\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (252,20,'VARCHAR','[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA variable-length string. M represents the maximum column length in\ncharacters. The range of M is 0 to 65,535. The effective maximum length\nof a VARCHAR is subject to the maximum row size (65,535 bytes, which is\nshared among all columns) and the character set used. For example, utf8\ncharacters can require up to three bytes per character, so a VARCHAR\ncolumn that uses the utf8 character set can be declared to be a maximum\nof 21,844 characters.\n\nMySQL stores VARCHAR values as a one-byte or two-byte length prefix\nplus data. The length prefix indicates the number of bytes in the\nvalue. A VARCHAR column uses one length byte if values require no more\nthan 255 bytes, two length bytes if values may require more than 255\nbytes.\n\n*Note*: MySQL 5.1 follows the standard SQL specification, and does not\nremove trailing spaces from VARCHAR values.\n\nVARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the\nstandard SQL way to define that a VARCHAR column should use some\npredefined character set. MySQL 4.1 and up uses utf8 as this predefined\ncharacter set.\nhttp://dev.mysql.com/doc/refman/5.1/en/charset-national.html. NVARCHAR\nis shorthand for NATIONAL VARCHAR.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (253,35,'UNHEX','Syntax:\n\nUNHEX(str)\n\nPerforms the inverse operation of HEX(str). That is, it interprets each\npair of hexadecimal digits in the argument as a number and converts it\nto the character represented by the number. The resulting characters\nare returned as a binary string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT UNHEX(\'4D7953514C\');\n -> \'MySQL\'\nmysql> SELECT 0x4D7953514C;\n -> \'MySQL\'\nmysql> SELECT UNHEX(HEX(\'string\'));\n -> \'string\'\nmysql> SELECT HEX(UNHEX(\'1267\'));\n -> \'1267\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (254,4,'- UNARY','Syntax:\n-\n\nUnary minus. This operator changes the sign of the argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT - 2;\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (255,22,'SELECT INTO','Syntax:\nSELECT col_name [, col_name] ...\n INTO var_name [, var_name] ...\n table_expr\n\nSELECT ... INTO syntax enables selected columns to be stored directly\ninto variables. The query should return a single row. If the query\nreturns no rows, a warning with error code 1329 occurs (No data), and\nthe variable values remain unchanged. If the query returns multiple\nrows, error 1172 occurs (Result consisted of more than one row). If it\nis possible that the statement may retrieve multiple rows, you can use\nLIMIT 1 to limit the result set to a single row.\n\nIn the context of such statements that occur as part of events executed\nby the Event Scheduler, diagnostics messages (not only errors, but also\nwarnings) are written to the error log, and, on Windows, to the\napplication event log. For additional information, see\nhttp://dev.mysql.com/doc/refman/5.1/en/events-status-info.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select-into-statement.html\n\n','SELECT id,data INTO x,y FROM test.t1 LIMIT 1;\n','http://dev.mysql.com/doc/refman/5.1/en/select-into-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (256,16,'STD','Syntax:\nSTD(expr)\n\nReturns the population standard deviation of expr. This is an extension\nto standard SQL. The standard SQL function STDDEV_POP() can be used\ninstead.\n\nThis function returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (257,4,'COS','Syntax:\nCOS(X)\n\nReturns the cosine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT COS(PI());\n -> -1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (258,30,'DATE FUNCTION','Syntax:\nDATE(expr)\n\nExtracts the date part of the date or datetime expression expr.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE(\'2003-12-31 01:02:03\');\n -> \'2003-12-31\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (259,37,'DROP TRIGGER','Syntax:\nDROP TRIGGER [IF EXISTS] [schema_name.]trigger_name\n\nThis statement drops a trigger. The schema (database) name is optional.\nIf the schema is omitted, the trigger is dropped from the default\nschema. DROP TRIGGER was added in MySQL 5.0.2. Its use requires the\nTRIGGER privilege for the table associated with the trigger. (This\nstatement requires the SUPER privilege prior to MySQL 5.1.6.)\n\nUse IF EXISTS to prevent an error from occurring for a trigger that\ndoes not exist. A NOTE is generated for a non-existent trigger when\nusing IF EXISTS. See [HELP SHOW WARNINGS]. The IF EXISTS clause was\nadded in MySQL 5.1.14.\n\nTriggers for a table are also dropped if you drop the table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-trigger.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (260,26,'RESET MASTER','Syntax:\nRESET MASTER\n\nDeletes all binary logs listed in the index file, resets the binary log\nindex file to be empty, and creates a new binary log file. It is\nintended to be used only when the master is started for the first time.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset-master.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (261,4,'TAN','Syntax:\nTAN(X)\n\nReturns the tangent of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT TAN(PI());\n -> -1.2246063538224e-16\nmysql> SELECT TAN(PI()+1);\n -> 1.5574077246549\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (262,4,'PI','Syntax:\nPI()\n\nReturns the value of π (pi). The default number of decimal places\ndisplayed is seven, but MySQL uses the full double-precision value\ninternally.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT PI();\n -> 3.141593\nmysql> SELECT PI()+0.000000000000000000;\n -> 3.141592653589793116\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (263,30,'WEEKOFYEAR','Syntax:\nWEEKOFYEAR(date)\n\nReturns the calendar week of the date as a number in the range from 1\nto 53. WEEKOFYEAR() is a compatibility function that is equivalent to\nWEEK(date,3).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKOFYEAR(\'2008-02-20\');\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (264,4,'/','Syntax:\n/\n\nDivision:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3/5;\n -> 0.60\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (265,26,'PURGE BINARY LOGS','Syntax:\nPURGE { BINARY | MASTER } LOGS\n { TO \'log_name\' | BEFORE datetime_expr }\n\nThe binary log is a set of files that contain information about data\nmodifications made by the MySQL server. The log consists of a set of\nbinary log files, plus an index file.\n\nThe PURGE BINARY LOGS statement deletes all the binary log files listed\nin the log index file prior to the specified log file name or date. The\nlog files also are removed from the list recorded in the index file, so\nthat the given log file becomes the first.\n\nThis statement has no effect if the --log-bin option has not been\nenabled.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/purge-binary-logs.html\n\n','PURGE BINARY LOGS TO \'mysql-bin.010\';\nPURGE BINARY LOGS BEFORE \'2008-04-02 22:46:26\';\n','http://dev.mysql.com/doc/refman/5.1/en/purge-binary-logs.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (266,16,'STDDEV_SAMP','Syntax:\nSTDDEV_SAMP(expr)\n\nReturns the sample standard deviation of expr (the square root of\nVAR_SAMP().\n\nSTDDEV_SAMP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (267,15,'SCHEMA','Syntax:\nSCHEMA()\n\nThis function is a synonym for DATABASE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (268,31,'MLINEFROMWKB','MLineFromWKB(wkb[,srid]), MultiLineStringFromWKB(wkb[,srid])\n\nConstructs a MULTILINESTRING value using its WKB representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (269,4,'LOG2','Syntax:\nLOG2(X)\n\nReturns the base-2 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG2(65536);\n -> 16\nmysql> SELECT LOG2(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (270,30,'SUBTIME','Syntax:\nSUBTIME(expr1,expr2)\n\nSUBTIME() returns expr1 - expr2 expressed as a value in the same format\nas expr1. expr1 is a time or datetime expression, and expr2 is a time\nexpression.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SUBTIME(\'2007-12-31 23:59:59.999999\',\'1 1:1:1.000002\');\n -> \'2007-12-30 22:58:58.999997\'\nmysql> SELECT SUBTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'-00:59:59.999999\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (271,11,'UNCOMPRESSED_LENGTH','Syntax:\nUNCOMPRESSED_LENGTH(compressed_string)\n\nReturns the length that the compressed string had before being\ncompressed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT(\'a\',30)));\n -> 30\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (272,37,'DROP TABLE','Syntax:\nDROP [TEMPORARY] TABLE [IF EXISTS]\n tbl_name [, tbl_name] ...\n [RESTRICT | CASCADE]\n\nDROP TABLE removes one or more tables. You must have the DROP privilege\nfor each table. All table data and the table definition are removed, so\nbe careful with this statement! If any of the tables named in the\nargument list do not exist, MySQL returns an error indicating by name\nwhich non-existing tables it was unable to drop, but it also drops all\nof the tables in the list that do exist.\n\n*Important*: When a table is dropped, user privileges on the table are\nnot automatically dropped. See [HELP GRANT].\n\nNote that for a partitioned table, DROP TABLE permanently removes the\ntable definition, all of its partitions, and all of the data which was\nstored in those partitions. It also removes the partitioning definition\n(.par) file associated with the dropped table.\n\nUse IF EXISTS to prevent an error from occurring for tables that do not\nexist. A NOTE is generated for each non-existent table when using IF\nEXISTS. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE are allowed to make porting easier. In MySQL 5.1,\nthey do nothing.\n\n*Note*: DROP TABLE automatically commits the current active\ntransaction, unless you use the TEMPORARY keyword.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (273,4,'POW','Syntax:\nPOW(X,Y)\n\nReturns the value of X raised to the power of Y.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT POW(2,2);\n -> 4\nmysql> SELECT POW(2,-2);\n -> 0.25\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (274,26,'SHOW CREATE TABLE','Syntax:\nSHOW CREATE TABLE tbl_name\n\nShows the CREATE TABLE statement that creates the given table. The\nstatement requires the SELECT privilege for the table. This statement\nalso works with views.\nSHOW CREATE TABLE quotes table and column names according to the value\nof the sql_quote_show_create option. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-session-variables.html.\…: http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html\n\n','mysql> SHOW CREATE TABLE t\\G\n*************************** 1. row ***************************\n Table: t\nCreate Table: CREATE TABLE t (\n id INT(11) default NULL auto_increment,\n s char(60) default NULL,\n PRIMARY KEY (id)\n) ENGINE=MyISAM\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (275,26,'DUAL','You are allowed to specify DUAL as a dummy table name in situations\nwhere no tables are referenced:\n\nmysql> SELECT 1 + 1 FROM DUAL;\n -> 2\n\nDUAL is purely for the convenience of people who require that all\nSELECT statements should have FROM and possibly other clauses. MySQL\nmay ignore the clauses. MySQL does not require FROM DUAL if no tables\nare referenced.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/select.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (276,35,'INSTR','Syntax:\nINSTR(str,substr)\n\nReturns the position of the first occurrence of substring substr in\nstring str. This is the same as the two-argument form of LOCATE(),\nexcept that the order of the arguments is reversed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT INSTR(\'foobarbar\', \'bar\');\n -> 4\nmysql> SELECT INSTR(\'xbar\', \'foobar\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (277,30,'NOW','Syntax:\nNOW()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context. The value is expressed in the\ncurrent time zone.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT NOW();\n -> \'2007-12-15 23:50:26\'\nmysql> SELECT NOW() + 0;\n -> 20071215235026.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (278,26,'SHOW ENGINES','Syntax:\nSHOW [STORAGE] ENGINES\n\nSHOW ENGINES displays status information about the server\'s storage\nengines. This is particularly useful for checking whether a storage\nengine is supported, or to see what the default engine is. SHOW TABLE\nTYPES is a deprecated synonym.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-engines.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-engines.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (279,17,'>=','Syntax:\n>=\n\nGreater than or equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 >= 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (280,4,'EXP','Syntax:\nEXP(X)\n\nReturns the value of e (the base of natural logarithms) raised to the\npower of X. The inverse of this function is LOG() (using a single\nargument only) or LN().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT EXP(2);\n -> 7.3890560989307\nmysql> SELECT EXP(-2);\n -> 0.13533528323661\nmysql> SELECT EXP(0);\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (281,20,'LONGBLOB','LONGBLOB\n\nA BLOB column with a maximum length of 4,294,967,295 or 4GB (232 - 1)\nbytes. The effective maximum length of LONGBLOB columns depends on the\nconfigured maximum packet size in the client/server protocol and\navailable memory. Each LONGBLOB value is stored using a four-byte\nlength prefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (282,12,'POINTN','PointN(ls,N)\n\nReturns the N-th Point in the Linestring value ls. Points are numbered\nbeginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(PointN(GeomFromText(@ls),2));\n+-------------------------------------+\n| AsText(PointN(GeomFromText(@ls),2)) |\n+-------------------------------------+\n| POINT(2 2) |\n+-------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (283,20,'YEAR DATA TYPE','YEAR[(2|4)]\n\nA year in two-digit or four-digit format. The default is four-digit\nformat. In four-digit format, the allowable values are 1901 to 2155,\nand 0000. In two-digit format, the allowable values are 70 to 69,\nrepresenting years from 1970 to 2069. MySQL displays YEAR values in\nYYYY format, but allows you to assign values to YEAR columns using\neither strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (284,16,'SUM','Syntax:\nSUM([DISTINCT] expr)\n\nReturns the sum of expr. If the return set has no rows, SUM() returns\nNULL. The DISTINCT keyword can be used in MySQL 5.1 to sum only the\ndistinct values of expr.\n\nSUM() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (285,4,'OCT','Syntax:\nOCT(N)\n\nReturns a string representation of the octal value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,8). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT OCT(12);\n -> \'14\'\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (286,30,'SYSDATE','Syntax:\nSYSDATE()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context.\n\nSYSDATE() returns the time at which it executes. This differs from the\nbehavior for NOW(), which returns a constant time that indicates the\ntime at which the statement began to execute. (Within a stored routine\nor trigger, NOW() returns the time at which the routine or triggering\nstatement began to execute.)\n\nmysql> SELECT NOW(), SLEEP(2), NOW();\n+---------------------+----------+---------------------+\n| NOW() | SLEEP(2) | NOW() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |\n+---------------------+----------+---------------------+\n\nmysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();\n+---------------------+----------+---------------------+\n| SYSDATE() | SLEEP(2) | SYSDATE() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |\n+---------------------+----------+---------------------+\n\nIn addition, the SET TIMESTAMP statement affects the value returned by\nNOW() but not by SYSDATE(). This means that timestamp settings in the\nbinary log have no effect on invocations of SYSDATE().\n\nBecause SYSDATE() can return different values even within the same\nstatement, and is not affected by SET TIMESTAMP, it is\nnon-deterministic and therefore unsafe for replication if\nstatement-based binary logging is used. If that is a problem, you can\nuse row-based logging, or start the server with the --sysdate-is-now\noption to cause SYSDATE() to be an alias for NOW(). The\nnon-deterministic nature of SYSDATE() also means that indexes cannot be\nused for evaluating expressions that refer to it.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (287,5,'UNINSTALL PLUGIN','Syntax:\nUNINSTALL PLUGIN plugin_name\n\nThis statement removes an installed plugin. You cannot uninstall a\nplugin if any table that uses it is open.\n\nplugin_name must be the name of some plugin that is listed in the\nmysql.plugin table. The server executes the plugin\'s deinitialization\nfunction and removes the row for the plugin from the mysql.plugin\ntable, so that subsequent server restarts will not load and initialize\nthe plugin. UNINSTALL PLUGIN does not remove the plugin\'s shared\nlibrary file.\n\nTo use UNINSTALL PLUGIN, you must have the DELETE privilege for the\nmysql.plugin table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/uninstall-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/uninstall-plugin.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (288,31,'ASBINARY','AsBinary(g), AsWKB(g)\n\nConverts a value in internal geometry format to its WKB representation\nand returns the binary result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…','SELECT AsBinary(g) FROM geom;\n','http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (289,35,'REPEAT FUNCTION','Syntax:\nREPEAT(str,count)\n\nReturns a string consisting of the string str repeated count times. If\ncount is less than 1, returns an empty string. Returns NULL if str or\ncount are NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT REPEAT(\'MySQL\', 3);\n -> \'MySQLMySQLMySQL\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (290,26,'SHOW TABLES','Syntax:\nSHOW [FULL] TABLES [FROM db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLES lists the non-TEMPORARY tables in a given database. You can\nalso get this list using the mysqlshow db_name command. The LIKE\nclause, if present, indicates which table names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nThis statement also lists any views in the database. The FULL modifier\nis supported such that SHOW FULL TABLES displays a second output\ncolumn. Values for the second column are BASE TABLE for a table and\nVIEW for a view.\n\nIf you have no privileges for a base table or view, it does not show up\nin the output from SHOW TABLES or mysqlshow db_name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-tables.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (291,30,'MAKEDATE','Syntax:\nMAKEDATE(year,dayofyear)\n\nReturns a date, given year and day-of-year values. dayofyear must be\ngreater than 0 or the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);\n -> \'2011-01-31\', \'2011-02-01\'\nmysql> SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);\n -> \'2011-12-31\', \'2014-12-31\'\nmysql> SELECT MAKEDATE(2011,0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (292,35,'BINARY OPERATOR','Syntax:\nBINARY\n\nThe BINARY operator casts the string following it to a binary string.\nThis is an easy way to force a column comparison to be done byte by\nbyte rather than character by character. This causes the comparison to\nbe case sensitive even if the column isn\'t defined as BINARY or BLOB.\nBINARY also causes trailing spaces to be significant.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','mysql> SELECT \'a\' = \'A\';\n -> 1\nmysql> SELECT BINARY \'a\' = \'A\';\n -> 0\nmysql> SELECT \'a\' = \'a \';\n -> 1\nmysql> SELECT BINARY \'a\' = \'a \';\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (293,6,'MBROVERLAPS','MBROverlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 overlap. The term spatially overlaps is\nused if two geometries intersect and their intersection results in a\ngeometry of the same dimension but not equal to either of the given\ngeometries.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (294,35,'SOUNDEX','Syntax:\nSOUNDEX(str)\n\nReturns a soundex string from str. Two strings that sound almost the\nsame should have identical soundex strings. A standard soundex string\nis four characters long, but the SOUNDEX() function returns an\narbitrarily long string. You can use SUBSTRING() on the result to get a\nstandard soundex string. All non-alphabetic characters in str are\nignored. All international alphabetic characters outside the A-Z range\nare treated as vowels.\n\n*Important*: When using SOUNDEX(), you should be aware of the following\nlimitations:\n\no This function, as currently implemented, is intended to work well\n with strings that are in the English language only. Strings in other\n languages may not produce reliable results.\n\no This function is not guaranteed to provide consistent results with\n strings that use multi-byte character sets, including utf-8.\n\n We hope to remove these limitations in a future release. See\n Bug#22638 (http://bugs.mysql.com/22638) for more information.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SOUNDEX(\'Hello\');\n -> \'H400\'\nmysql> SELECT SOUNDEX(\'Quadratically\');\n -> \'Q36324\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (295,6,'MBRTOUCHES','MBRTouches(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 touch. Two geometries spatially touch if\nthe interiors of the geometries do not intersect, but the boundary of\none of the geometries intersects either the boundary or the interior of\nthe other.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (296,37,'DROP EVENT','Syntax:\nDROP EVENT [IF EXISTS] event_name\n\nThis statement drops the event named event_name. The event immediately\nceases being active, and is deleted completely from the server.\n\nIf the event does not exist, the error ERROR 1517 (HY000): Unknown\nevent \'event_name\' results. You can override this and cause the\nstatement to generate a warning for non-existent events instead using\nIF EXISTS.\n\nBeginning with MySQL 5.1.12, this statement requires the having the\nEVENT privilege for the schema to which the event to be dropped\nbelongs. (In MySQL 5.1.11 and earlier, an event could be dropped only\nby its definer, or by a user having the SUPER privilege.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-event.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (297,26,'INSERT SELECT','Syntax:\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n SELECT ...\n [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]\n\nWith INSERT ... SELECT, you can quickly insert many rows into a table\nfrom one or many tables. For example:\n\nINSERT INTO tbl_temp2 (fld_id)\n SELECT tbl_temp1.fld_order_id\n FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert-select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert-select.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (298,37,'CREATE PROCEDURE','Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n PROCEDURE sp_name ([proc_parameter[,...]])\n [characteristic ...] routine_body\n\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n FUNCTION sp_name ([func_parameter[,...]])\n RETURNS type\n [characteristic ...] routine_body\n \nproc_parameter:\n [ IN | OUT | INOUT ] param_name type\n \nfunc_parameter:\n param_name type\n\ntype:\n Any valid MySQL data type\n\ncharacteristic:\n LANGUAGE SQL\n | [NOT] DETERMINISTIC\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nroutine_body:\n Valid SQL procedure statement\n\nThese statements create stored routines. By default, a routine is\nassociated with the default database. To associate the routine\nexplicitly with a given database, specify the name as db_name.sp_name\nwhen you create it.\n\nThe CREATE FUNCTION statement is also used in MySQL to support UDFs\n(user-defined functions). See\nhttp://dev.mysql.com/doc/refman/5.1/en/adding-functions.html. A UDF can\nbe regarded as an external stored function. However, do note that\nstored functions share their namespace with UDFs. See\nhttp://dev.mysql.com/doc/refman/5.1/en/function-resolution.html, for\nthe rules describing how the server interprets references to different\nkinds of functions.\n\nWhen the routine is invoked, an implicit USE db_name is performed (and\nundone when the routine terminates). The causes the routine to have the\ngiven default database while it executes. USE statements within stored\nroutines are disallowed.\n\nWhen a stored function has been created, you invoke it by referring to\nit in an expression. The function returns a value during expression\nevaluation. When a stored procedure has been created, you invoke it by\nusing the CALL statement (see [HELP CALL]).\n\nTo execute the CREATE PROCEDURE or CREATE FUNCTION statement, it is\nnecessary to have the CREATE ROUTINE privilege. By default, MySQL\nautomatically grants the ALTER ROUTINE and EXECUTE privileges to the\nroutine creator. See also\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-routines-privileges.htm… binary logging is enabled, the CREATE FUNCTION statement might also\nrequire the SUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html.\n\… DEFINER and SQL SECURITY clauses specify the security context to be\nused when checking access privileges at routine execution time, as\ndescribed later.\n\nIf the routine name is the same as the name of a built-in SQL function,\nyou must use a space between the name and the following parenthesis\nwhen defining the routine, or a syntax error occurs. This is also true\nwhen you invoke the routine later. For this reason, we suggest that it\nis better to avoid re-using the names of existing SQL functions for\nyour own stored routines.\n\nThe IGNORE_SPACE SQL mode applies to built-in functions, not to stored\nroutines. It is always allowable to have spaces after a routine name,\nregardless of whether IGNORE_SPACE is enabled.\n\nThe parameter list enclosed within parentheses must always be present.\nIf there are no parameters, an empty parameter list of () should be\nused. Parameter names are not case sensitive.\n\nEach parameter can be declared to use any valid data type, except that\nthe COLLATE attribute cannot be used.\n\nEach parameter is an IN parameter by default. To specify otherwise for\na parameter, use the keyword OUT or INOUT before the parameter name.\n\n*Note*: Specifying a parameter as IN, OUT, or INOUT is valid only for a\nPROCEDURE. (FUNCTION parameters are always regarded as IN parameters.)\n\nAn IN parameter passes a value into a procedure. The procedure might\nmodify the value, but the modification is not visible to the caller\nwhen the procedure returns. An OUT parameter passes a value from the\nprocedure back to the caller. Its initial value is NULL within the\nprocedure, and its value is visible to the caller when the procedure\nreturns. An INOUT parameter is initialized by the caller, can be\nmodified by the procedure, and any change made by the procedure is\nvisible to the caller when the procedure returns.\n\nFor each OUT or INOUT parameter, pass a user-defined variable in the\nCALL statement that invokes the procedure so that you can obtain its\nvalue when the procedure returns. If you are calling the procedure from\nwithin another stored procedure or function, you can also pass a\nroutine parameter or local routine variable as an IN or INOUT\nparameter.\n\nThe RETURNS clause may be specified only for a FUNCTION, for which it\nis mandatory. It indicates the return type of the function, and the\nfunction body must contain a RETURN value statement. If the RETURN\nstatement returns a value of a different type, the value is coerced to\nthe proper type. For example, if a function specifies an ENUM or SET\nvalue in the RETURNS clause, but the RETURN statement returns an\ninteger, the value returned from the function is the string for the\ncorresponding ENUM member of set of SET members.\n\nThe routine_body consists of a valid SQL procedure statement. This can\nbe a simple statement such as SELECT or INSERT, or it can be a compound\nstatement written using BEGIN and END. Compound statements can contain\ndeclarations, loops, and other control structure statements. The syntax\nfor these statements is described in\nhttp://dev.mysql.com/doc/refman/5.1/en/sql-syntax-compound-statements.h… allows routines to contain DDL statements, such as CREATE and\nDROP. MySQL also allows stored procedures (but not stored functions) to\ncontain SQL transaction statements such as COMMIT. Stored functions may\nnot contain statements that perform explicit or implicit commit or\nrollback. Support for these statements is not required by the SQL\nstandard, which states that each DBMS vendor may decide whether to\nallow them.\n\nStatements that return a result set cannot be used within a stored\nfunction. This includes SELECT statements that do not have an INTO\nvar_list clause and other statements such as SHOW, EXPLAIN, and CHECK\nTABLE. For statements that can be determined at function definition\ntime to return a result set, a Not allowed to return a result set from\na function error occurs (ER_SP_NO_RETSET). For statements that can be\ndetermined only at runtime to return a result set, a PROCEDURE %s can\'t\nreturn a result set in the given context error occurs\n(ER_SP_BADSELECT).\n\nFor additional information about statements that are not allowed in\nstored routines, see\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.htm… following example shows a simple stored procedure that uses an OUT\nparameter:\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE simpleproc (OUT param1 INT)\n -> BEGIN\n -> SELECT COUNT(*) INTO param1 FROM t;\n -> END;\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter ;\n\nmysql> CALL simpleproc(@a);\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @a;\n+------+\n| @a |\n+------+\n| 3 |\n+------+\n1 row in set (0.00 sec)\n\nThe example uses the mysql client delimiter command to change the\nstatement delimiter from ; to // while the procedure is being defined.\nThis allows the ; delimiter used in the procedure body to be passed\nthrough to the server rather than being interpreted by mysql itself.\nSee\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-defini… information about invoking stored procedures from within programs\nwritten in a language that has a MySQL interface, see [HELP CALL].\n\nThe following example function takes a parameter, performs an operation\nusing an SQL function, and returns the result. In this case, it is\nunnecessary to use delimiter because the function definition contains\nno internal ; statement delimiters:\n\nmysql> CREATE FUNCTION hello (s CHAR(20))\nmysql> RETURNS CHAR(50) DETERMINISTIC\n -> RETURN CONCAT(\'Hello, \',s,\'!\');\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT hello(\'world\');\n+----------------+\n| hello(\'world\') |\n+----------------+\n| Hello, world! |\n+----------------+\n1 row in set (0.00 sec)\n\nMySQL stores the sql_mode system variable setting that is in effect at\nthe time a routine is created, and always executes the routine with\nthis setting in force, regardless of the server SQL mode in effect when\nthe routine is invoked.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (299,20,'VARBINARY','VARBINARY(M)\n\nThe VARBINARY type is similar to the VARCHAR type, but stores binary\nbyte strings rather than non-binary character strings. M represents the\nmaximum column length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (300,26,'LOAD INDEX','Syntax:\nLOAD INDEX INTO CACHE\n tbl_index_list [, tbl_index_list] ...\n\ntbl_index_list:\n tbl_name\n [[INDEX|KEY] (index_name[, index_name] ...)]\n [IGNORE LEAVES]\n\nThe LOAD INDEX INTO CACHE statement preloads a table index into the key\ncache to which it has been assigned by an explicit CACHE INDEX\nstatement, or into the default key cache otherwise. LOAD INDEX INTO\nCACHE is used only for MyISAM tables. It is not supported for tables\nhaving user-defined partitioning (see\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations.html.)… IGNORE LEAVES modifier causes only blocks for the non-leaf nodes of\nthe index to be preloaded.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-index.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (301,26,'UNION','Syntax:\nSELECT ...\nUNION [ALL | DISTINCT] SELECT ...\n[UNION [ALL | DISTINCT] SELECT ...]\n\nUNION is used to combine the result from multiple SELECT statements\ninto a single result set.\n\nThe column names from the first SELECT statement are used as the column\nnames for the results returned. Selected columns listed in\ncorresponding positions of each SELECT statement should have the same\ndata type. (For example, the first column selected by the first\nstatement should have the same type as the first column selected by the\nother statements.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/union.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/union.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (302,30,'TO_DAYS','Syntax:\nTO_DAYS(date)\n\nGiven a date date, returns a day number (the number of days since year\n0).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TO_DAYS(950501);\n -> 728779\nmysql> SELECT TO_DAYS(\'2007-10-07\');\n -> 733321\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (303,35,'NOT REGEXP','Syntax:\nexpr NOT REGEXP pat, expr NOT RLIKE pat\n\nThis is the same as NOT (expr REGEXP pat).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/regexp.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/regexp.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (304,26,'SHOW INDEX','Syntax:\nSHOW INDEX FROM tbl_name [FROM db_name]\n\nSHOW INDEX returns table index information. The format resembles that\nof the SQLStatistics call in ODBC.\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. These two statements are equivalent:\n\nSHOW INDEX FROM mytable FROM mydb;\nSHOW INDEX FROM mydb.mytable;\n\nSHOW KEYS is a synonym for SHOW INDEX. You can also list a table\'s\nindexes with the mysqlshow -k db_name tbl_name command.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-index.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (305,26,'SHOW CREATE DATABASE','Syntax:\nSHOW CREATE {DATABASE | SCHEMA} db_name\n\nShows the CREATE DATABASE statement that creates the given database.\nSHOW CREATE SCHEMA is a synonym for SHOW CREATE DATABASE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-database.html\n\n','mysql> SHOW CREATE DATABASE test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n\nmysql> SHOW CREATE SCHEMA test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-database.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (306,22,'LEAVE','Syntax:\nLEAVE label\n\nThis statement is used to exit the flow control construct that has the\ngiven label. It can be used within BEGIN ... END or loop constructs\n(LOOP, REPEAT, WHILE).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/leave-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/leave-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (307,17,'NOT IN','Syntax:\nexpr NOT IN (value,...)\n\nThis is the same as NOT (expr IN (value,...)).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (308,13,'!','Syntax:\nNOT, !\n\nLogical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is\nnon-zero, and NOT NULL returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT NOT 10;\n -> 0\nmysql> SELECT NOT 0;\n -> 1\nmysql> SELECT NOT NULL;\n -> NULL\nmysql> SELECT ! (1+1);\n -> 0\nmysql> SELECT ! 1+1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (309,22,'DECLARE HANDLER','Syntax:\nDECLARE handler_type HANDLER\n FOR condition_value [, condition_value] ...\n statement\n\nhandler_type:\n CONTINUE\n | EXIT\n | UNDO\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | condition_name\n | SQLWARNING\n | NOT FOUND\n | SQLEXCEPTION\n | mysql_error_code\n\nThe DECLARE ... HANDLER statement specifies handlers that each may deal\nwith one or more conditions. If one of these conditions occurs, the\nspecified statement is executed. statement can be a simple statement\n(for example, SET var_name = value), or it can be a compound statement\nwritten using BEGIN and END (see [HELP BEGIN END]).\n\nFor a CONTINUE handler, execution of the current program continues\nafter execution of the handler statement. For an EXIT handler,\nexecution terminates for the BEGIN ... END compound statement in which\nthe handler is declared. (This is true even if the condition occurs in\nan inner block.) The UNDO handler type statement is not supported.\n\nIf a condition occurs for which no handler has been declared, the\ndefault action is EXIT.\n\nA condition_value for DECLARE ... HANDLER can be any of the following\nvalues:\n\no An SQLSTATE value (a 5-character string literal) or a MySQL error\n code (a number). You should not use SQLSTATE value \'00000\' or MySQL\n error code 0, because those indicate sucess rather than an error\n condition. For a list of SQLSTATE values and MySQL error codes, see\n http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html.\n\no A condition name previously specified with DECLARE ... CONDITION. See\n [HELP DECLARE CONDITION].\n\no SQLWARNING is shorthand for the class of SQLSTATE values that begin\n with \'01\'.\n\no NOT FOUND is shorthand for the class of SQLSTATE values that begin\n with \'02\'. This is relevant only the context of cursors and is used\n to control what happens when a cursor reaches the end of a data set.\n If no more rows are available, a No Data condition occurs with\n SQLSTATE value 02000. To detect this condition, you can set up a\n handler for it (or for a NOT FOUND condition). An example is shown in\n http://dev.mysql.com/doc/refman/5.1/en/cursors.html. This condition\n also occurs for SELECT ... INTO var_list statements that retrieve no\n rows.\n\no SQLEXCEPTION is shorthand for the class of SQLSTATE values that do\n not begin with \'00\', \'01\', or \'02\'.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html\n\n','mysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1));\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE handlerdemo ()\n -> BEGIN\n -> DECLARE CONTINUE HANDLER FOR SQLSTATE \'23000\' SET @x2 = 1;\n -> SET @x = 1;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 2;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 3;\n -> END;\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL handlerdemo()//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n +------+\n | @x |\n +------+\n | 3 |\n +------+\n 1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (310,20,'DOUBLE','DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA normal-size (double-precision) floating-point number. Allowable\nvalues are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and\n2.2250738585072014E-308 to 1.7976931348623157E+308. These are the\ntheoretical limits, based on the IEEE standard. The actual range might\nbe slightly smaller depending on your hardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits allowed by the hardware. A double-precision floating-point\nnumber is accurate to approximately 15 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (311,20,'TIME','TIME\n\nA time. The range is \'-838:59:59\' to \'838:59:59\'. MySQL displays TIME\nvalues in \'HH:MM:SS\' format, but allows assignment of values to TIME\ncolumns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (312,13,'&&','Syntax:\nAND, &&\n\nLogical AND. Evaluates to 1 if all operands are non-zero and not NULL,\nto 0 if one or more operands are 0, otherwise NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 && 1;\n -> 1\nmysql> SELECT 1 && 0;\n -> 0\nmysql> SELECT 1 && NULL;\n -> NULL\nmysql> SELECT 0 && NULL;\n -> 0\nmysql> SELECT NULL && 0;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (313,10,'X','X(p)\n\nReturns the X-coordinate value for the point p as a double-precision\nnumber.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…','mysql> SET @pt = \'Point(56.7 53.34)\';\nmysql> SELECT X(GeomFromText(@pt));\n+----------------------+\n| X(GeomFromText(@pt)) |\n+----------------------+\n| 56.7 |\n+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (314,15,'FOUND_ROWS','Syntax:\nFOUND_ROWS()\n\nA SELECT statement may include a LIMIT clause to restrict the number of\nrows the server returns to the client. In some cases, it is desirable\nto know how many rows the statement would have returned without the\nLIMIT, but without running the statement again. To obtain this row\ncount, include a SQL_CALC_FOUND_ROWS option in the SELECT statement,\nand then invoke FOUND_ROWS() afterward:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name\n -> WHERE id > 100 LIMIT 10;\nmysql> SELECT FOUND_ROWS();\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (315,15,'SYSTEM_USER','Syntax:\nSYSTEM_USER()\n\nSYSTEM_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (316,29,'CROSSES','Crosses(g1,g2)\n\nReturns 1 if g1 spatially crosses g2. Returns NULL if g1 is a Polygon\nor a MultiPolygon, or if g2 is a Point or a MultiPoint. Otherwise,\nreturns 0.\n\nThe term spatially crosses denotes a spatial relation between two given\ngeometries that has the following properties:\n\no The two geometries intersect\n\no Their intersection results in a geometry that has a dimension that is\n one less than the maximum dimension of the two given geometries\n\no Their intersection is not equal to either of the two given geometries\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (317,26,'TRUNCATE TABLE','Syntax:\nTRUNCATE [TABLE] tbl_name\n\nTRUNCATE TABLE empties a table completely. Logically, this is\nequivalent to a DELETE statement that deletes all rows, but there are\npractical differences under some circumstances.\n\nFor an InnoDB table, InnoDB processes TRUNCATE TABLE by deleting rows\none by one if there are any FOREIGN KEY constraints that reference the\ntable. If there are no FOREIGN KEY constraints, InnoDB performs fast\ntruncation by dropping the original table and creating an empty one\nwith the same definition, which is much faster than deleting rows one\nby one. The AUTO_INCREMENT counter is reset by TRUNCATE TABLE,\nregardless of whether there is a FOREIGN KEY constraint.\n\nIn the case that FOREIGN KEY constraints reference the table, InnoDB\ndeletes rows one by one and processes the constraints on each one. If\nthe FOREIGN KEY constraint specifies DELETE CASCADE, rows from the\nchild (referenced) table are deleted, and the truncated table becomes\nempty. If the FOREIGN KEY constraint does not specify CASCADE, the\nTRUNCATE statement deletes rows one by one and stops if it encounters a\nparent row that is referenced by the child, returning this error:\n\nERROR 1451 (23000): Cannot delete or update a parent row: a foreign\nkey constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1`\nFOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))\n\nThis is the same as a DELETE statement with no WHERE clause.\n\nBeginning with MySQL 5.1.32, TRUNCATE is treated for purposes of binary\nlogging and replication as DROP TABLE followed by CREATE TABLE --- that\nis, as DDL rather than DML. This is due to the fact that, when using\nInnoDB and other transactional storage engines where the transaction\nisolation level does not allow for statement-based logging (READ\nCOMMITTED or READ UNCOMMITTED), the statement was not logged and\nreplicated when using STATEMENT or MIXED logging mode. (Bug#36763\n(http://bugs.mysql.com/36763)) However, it is still applied on\nreplication slaves using InnoDB in the manner described previously.\n\nThe count of rows affected by TRUNCATE TABLE is accurate only when it\nis mapped to a DELETE statement.\n\nFor other storage engines, TRUNCATE TABLE differs from DELETE in the\nfollowing ways in MySQL 5.1:\n\no Truncate operations drop and re-create the table, which is much\n faster than deleting rows one by one, particularly for large tables.\n\no Truncate operations are not transaction-safe; an error occurs when\n attempting one in the course of an active transaction or active table\n lock.\n\no Truncation operations do not return the number of deleted rows.\n\no As long as the table format file tbl_name.frm is valid, the table can\n be re-created as an empty table with TRUNCATE TABLE, even if the data\n or index files have become corrupted.\n\no The table handler does not remember the last used AUTO_INCREMENT\n value, but starts counting from the beginning. This is true even for\n MyISAM and InnoDB, which normally do not reuse sequence values.\n\no When used with partitioned tables, TRUNCATE TABLE preserves the\n partitioning; that is, the data and index files are dropped and\n re-created, while the partition definitions (.par) file is\n unaffected.\n\no Since truncation of a table does not make any use of DELETE, the\n TRUNCATE statement does not invoke ON DELETE triggers.\n\nTRUNCATE TABLE requires the DROP privilege as of MySQL 5.1.16. (Before\n5.1.16, it requires the DELETE privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/truncate.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/truncate.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (318,16,'BIT_XOR','Syntax:\nBIT_XOR(expr)\n\nReturns the bitwise XOR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (319,30,'CURRENT_DATE','Syntax:\nCURRENT_DATE, CURRENT_DATE()\n\nCURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (320,26,'START SLAVE','Syntax:\nSTART SLAVE [thread_type [, thread_type] ... ]\nSTART SLAVE [SQL_THREAD] UNTIL\n MASTER_LOG_FILE = \'log_name\', MASTER_LOG_POS = log_pos\nSTART SLAVE [SQL_THREAD] UNTIL\n RELAY_LOG_FILE = \'log_name\', RELAY_LOG_POS = log_pos\n\nthread_type: IO_THREAD | SQL_THREAD\n\nSTART SLAVE with no thread_type options starts both of the slave\nthreads. The I/O thread reads queries from the master server and stores\nthem in the relay log. The SQL thread reads the relay log and executes\nthe queries. START SLAVE requires the SUPER privilege.\n\nIf START SLAVE succeeds in starting the slave threads, it returns\nwithout any error. However, even in that case, it might be that the\nslave threads start and then later stop (for example, because they do\nnot manage to connect to the master or read its binary logs, or some\nother problem). START SLAVE does not warn you about this. You must\ncheck the slave\'s error log for error messages generated by the slave\nthreads, or check that they are running satisfactorily with SHOW SLAVE\nSTATUS.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/start-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/start-slave.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (321,2,'AREA','Area(poly)\n\nReturns as a double-precision number the area of the Polygon value\npoly, as measured in its spatial reference system.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly = \'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))\';\nmysql> SELECT Area(GeomFromText(@poly));\n+---------------------------+\n| Area(GeomFromText(@poly)) |\n+---------------------------+\n| 4 |\n+---------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (322,22,'BEGIN END','Syntax:\n[begin_label:] BEGIN\n [statement_list]\nEND [end_label]\n\nBEGIN ... END syntax is used for writing compound statements, which can\nappear within stored programs. A compound statement can contain\nmultiple statements, enclosed by the BEGIN and END keywords.\nstatement_list represents a list of one or more statements, each\nterminated by a semicolon (;) statement delimiter. statement_list is\noptional, which means that the empty compound statement (BEGIN END) is\nlegal.\n\nUse of multiple statements requires that a client is able to send\nstatement strings containing the ; statement delimiter. This is handled\nin the mysql command-line client with the delimiter command. Changing\nthe ; end-of-statement delimiter (for example, to //) allows ; to be\nused in a program body. For an example, see\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html.\… compound statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/begin-end.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/begin-end.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (323,26,'FLUSH','Syntax:\nFLUSH [NO_WRITE_TO_BINLOG | LOCAL]\n flush_option [, flush_option] ...\n\nThe FLUSH statement clears or reloads various internal caches used by\nMySQL. To execute FLUSH, you must have the RELOAD privilege.\n\nThe RESET statement is similar to FLUSH. See [HELP RESET].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/flush.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/flush.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (324,26,'SHOW PROCEDURE STATUS','Syntax:\nSHOW PROCEDURE STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is a MySQL extension. It returns characteristics of a\nstored procedure, such as the database, name, type, creator, creation\nand modification dates, and character set information. A similar\nstatement, SHOW FUNCTION STATUS, displays information about stored\nfunctions (see [HELP SHOW FUNCTION STATUS]).\n\nThe LIKE clause, if present, indicates which procedure or function\nnames to match. The WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-procedure-status.html\n\n','mysql> SHOW PROCEDURE STATUS LIKE \'sp1\'\\G\n*************************** 1. row ***************************\n Db: test\n Name: sp1\n Type: PROCEDURE\n Definer: testuser@localhost\n Modified: 2004-08-03 15:29:37\n Created: 2004-08-03 15:29:37\n Security_type: DEFINER\n Comment:\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-procedure-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (325,26,'SHOW WARNINGS','Syntax:\nSHOW WARNINGS [LIMIT [offset,] row_count]\nSHOW COUNT(*) WARNINGS\n\nSHOW WARNINGS shows the error, warning, and note messages that resulted\nfrom the last statement that generated messages in the current session.\nIt shows nothing if the last statement used a table and generated no\nmessages. (That is, a statement that uses a table but generates no\nmessages clears the message list.) Statements that do not use tables\nand do not generate messages have no effect on the message list.\n\nA related statement, SHOW ERRORS, shows only the errors. See [HELP SHOW\nERRORS].\n\nThe SHOW COUNT(*) WARNINGS statement displays the total number of\nerrors, warnings, and notes. You can also retrieve this number from the\nwarning_count variable:\n\nSHOW COUNT(*) WARNINGS;\nSELECT @@warning_count;\n\nThe value of warning_count might be greater than the number of messages\ndisplayed by SHOW WARNINGS if the max_error_count system variable is\nset so low that not all messages are stored. An example shown later in\nthis section demonstrates how this can happen.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-warnings.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-warnings.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (326,27,'DESCRIBE','Syntax:\n{DESCRIBE | DESC} tbl_name [col_name | wild]\n\nDESCRIBE provides information about the columns in a table. It is a\nshortcut for SHOW COLUMNS FROM. These statements also display\ninformation for views. (See [HELP SHOW COLUMNS].)\n\ncol_name can be a column name, or a string containing the SQL "%" and\n"_" wildcard characters to obtain output only for the columns with\nnames matching the string. There is no need to enclose the string\nwithin quotes unless it contains spaces or other special characters.\n\nmysql> DESCRIBE City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n5 rows in set (0.00 sec)\n\nThe description for SHOW COLUMNS provides more information about the\noutput columns (see [HELP SHOW COLUMNS]).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/describe.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/describe.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (327,9,'DROP USER','Syntax:\nDROP USER user [, user] ...\n\nThe DROP USER statement removes one or more MySQL accounts. It removes\nprivilege rows for the account from all grant tables. To use this\nstatement, you must have the global CREATE USER privilege or the DELETE\nprivilege for the mysql database. Each account is named using the same\nformat as for the GRANT statement; for example, \'jeffrey\'@\'localhost\'.\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used. For additional information about specifying\naccount names, see [HELP GRANT].\n\nWith DROP USER, you can remove an account and its privileges as\nfollows:\n\nDROP USER user;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-user.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (328,16,'STDDEV_POP','Syntax:\nSTDDEV_POP(expr)\n\nReturns the population standard deviation of expr (the square root of\nVAR_POP()). You can also use STD() or STDDEV(), which are equivalent\nbut not standard SQL.\n\nSTDDEV_POP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (329,26,'SHOW CHARACTER SET','Syntax:\nSHOW CHARACTER SET\n [LIKE \'pattern\' | WHERE expr]\n\nThe SHOW CHARACTER SET statement shows all available character sets.\nThe LIKE clause, if present, indicates which character set names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. For example:\n\nmysql> SHOW CHARACTER SET LIKE \'latin%\';\n+---------+-----------------------------+-------------------+--------+\n| Charset | Description | Default collation | Maxlen |\n+---------+-----------------------------+-------------------+--------+\n| latin1 | cp1252 West European | latin1_swedish_ci | 1 |\n| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |\n| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |\n| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |\n+---------+-----------------------------+-------------------+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-character-set.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-character-set.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (330,35,'SUBSTRING','Syntax:\nSUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len),\nSUBSTRING(str FROM pos FOR len)\n\nThe forms without a len argument return a substring from string str\nstarting at position pos. The forms with a len argument return a\nsubstring len characters long from string str, starting at position\npos. The forms that use FROM are standard SQL syntax. It is also\npossible to use a negative value for pos. In this case, the beginning\nof the substring is pos characters from the end of the string, rather\nthan the beginning. A negative value may be used for pos in any of the\nforms of this function.\n\nFor all forms of SUBSTRING(), the position of the first character in\nthe string from which the substring is to be extracted is reckoned as\n1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SUBSTRING(\'Quadratically\',5);\n -> \'ratically\'\nmysql> SELECT SUBSTRING(\'foobarbar\' FROM 4);\n -> \'barbar\'\nmysql> SELECT SUBSTRING(\'Quadratically\',5,6);\n -> \'ratica\' \nmysql> SELECT SUBSTRING(\'Sakila\', -3);\n -> \'ila\' \nmysql> SELECT SUBSTRING(\'Sakila\', -5, 3);\n -> \'aki\'\nmysql> SELECT SUBSTRING(\'Sakila\' FROM -4 FOR 2);\n -> \'ki\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (331,34,'ISEMPTY','IsEmpty(g)\n\nReturns 1 if the geometry value g is the empty geometry, 0 if it is not\nempty, and -1 if the argument is NULL. If the geometry is empty, it\nrepresents the empty point set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (332,26,'SHOW FUNCTION STATUS','Syntax:\nSHOW FUNCTION STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is similar to SHOW PROCEDURE STATUS but for stored\nfunctions. See [HELP SHOW PROCEDURE STATUS].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-function-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-function-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (333,35,'LTRIM','Syntax:\nLTRIM(str)\n\nReturns the string str with leading space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LTRIM(\' barbar\');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (334,29,'INTERSECTS','Intersects(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially intersects g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (335,26,'CALL','Syntax:\nCALL sp_name([parameter[,...]])\nCALL sp_name[()]\n\nThe CALL statement invokes a stored procedure that was defined\npreviously with CREATE PROCEDURE.\n\nAs of MySQL 5.1.13, stored procedures that take no arguments can be\ninvoked without parentheses. That is, CALL p() and CALL p are\nequivalent.\n\nCALL can pass back values to its caller using parameters that are\ndeclared as OUT or INOUT parameters. When the procedure returns, a\nclient program can also obtain the number of rows affected for the\nfinal statement executed within the routine: At the SQL level, call the\nROW_COUNT() function; from the C API, call the mysql_affected_rows()\nfunction.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/call.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/call.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (336,6,'MBRDISJOINT','MBRDisjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 are disjoint (do not intersect).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (337,14,'VALUES','Syntax:\nVALUES(col_name)\n\nIn an INSERT ... ON DUPLICATE KEY UPDATE statement, you can use the\nVALUES(col_name) function in the UPDATE clause to refer to column\nvalues from the INSERT portion of the statement. In other words,\nVALUES(col_name) in the UPDATE clause refers to the value of col_name\nthat would be inserted, had no duplicate-key conflict occurred. This\nfunction is especially useful in multiple-row inserts. The VALUES()\nfunction is meaningful only in INSERT ... ON DUPLICATE KEY UPDATE\nstatements and returns NULL otherwise.\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html…: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)\n -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (338,35,'SUBSTRING_INDEX','Syntax:\nSUBSTRING_INDEX(str,delim,count)\n\nReturns the substring from string str before count occurrences of the\ndelimiter delim. If count is positive, everything to the left of the\nfinal delimiter (counting from the left) is returned. If count is\nnegative, everything to the right of the final delimiter (counting from\nthe right) is returned. SUBSTRING_INDEX() performs a case-sensitive\nmatch when searching for delim.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', 2);\n -> \'www.mysql\'\nmysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', -2);\n -> \'mysql.com\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (339,11,'ENCODE','Syntax:\nENCODE(str,pass_str)\n\nEncrypt str using pass_str as the password. To decrypt the result, use\nDECODE().\n\nThe result is a binary string of the same length as str.\n\nThe strength of the encryption is based on how good the random\ngenerator is. It should suffice for short strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (340,22,'LOOP','Syntax:\n[begin_label:] LOOP\n statement_list\nEND LOOP [end_label]\n\nLOOP implements a simple loop construct, enabling repeated execution of\nthe statement list, which consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter. The statements\nwithin the loop are repeated until the loop is exited; usually this is\naccomplished with a LEAVE statement.\n\nA LOOP statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/loop-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/loop-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (341,4,'TRUNCATE','Syntax:\nTRUNCATE(X,D)\n\nReturns the number X, truncated to D decimal places. If D is 0, the\nresult has no decimal point or fractional part. D can be negative to\ncause D digits left of the decimal point of the value X to become zero.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT TRUNCATE(1.223,1);\n -> 1.2\nmysql> SELECT TRUNCATE(1.999,1);\n -> 1.9\nmysql> SELECT TRUNCATE(1.999,0);\n -> 1\nmysql> SELECT TRUNCATE(-1.999,1);\n -> -1.9\nmysql> SELECT TRUNCATE(122,-2);\n -> 100\nmysql> SELECT TRUNCATE(10.28*100,0);\n -> 1028\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (342,30,'TIMESTAMPADD','Syntax:\nTIMESTAMPADD(unit,interval,datetime_expr)\n\nAdds the integer expression interval to the date or datetime expression\ndatetime_expr. The unit for interval is given by the unit argument,\nwhich should be one of the following values: FRAC_SECOND\n(microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or\nYEAR.\n\nBeginning with MySQL 5.1.24, it is possible to use MICROSECOND in place\nof FRAC_SECOND with this function, and FRAC_SECOND is deprecated.\n\nThe unit value may be specified using one of keywords as shown, or with\na prefix of SQL_TSI_. For example, DAY and SQL_TSI_DAY both are legal.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPADD(MINUTE,1,\'2003-01-02\');\n -> \'2003-01-02 00:01:00\'\nmysql> SELECT TIMESTAMPADD(WEEK,1,\'2003-01-02\');\n -> \'2003-01-09\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (343,26,'SHOW','SHOW has many forms that provide information about databases, tables,\ncolumns, or status information about the server. This section describes\nthose following:\n\nSHOW AUTHORS\nSHOW CHARACTER SET [like_or_where]\nSHOW COLLATION [like_or_where]\nSHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]\nSHOW CONTRIBUTORS\nSHOW CREATE DATABASE db_name\nSHOW CREATE EVENT event_name\nSHOW CREATE FUNCTION func_name\nSHOW CREATE PROCEDURE proc_name\nSHOW CREATE TABLE tbl_name\nSHOW CREATE TRIGGER trigger_name\nSHOW CREATE VIEW view_name\nSHOW DATABASES [like_or_where]\nSHOW ENGINE engine_name {STATUS | MUTEX}\nSHOW [STORAGE] ENGINES\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW [FULL] EVENTS\nSHOW FUNCTION CODE func_name\nSHOW FUNCTION STATUS [like_or_where]\nSHOW GRANTS FOR user\nSHOW INDEX FROM tbl_name [FROM db_name]\nSHOW INNODB STATUS\nSHOW OPEN TABLES [FROM db_name] [like_or_where]\nSHOW PLUGINS\nSHOW PROCEDURE CODE proc_name\nSHOW PROCEDURE STATUS [like_or_where]\nSHOW PRIVILEGES\nSHOW [FULL] PROCESSLIST\nSHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]\nSHOW PROFILES\nSHOW SCHEDULER STATUS\nSHOW [GLOBAL | SESSION] STATUS [like_or_where]\nSHOW TABLE STATUS [FROM db_name] [like_or_where]\nSHOW TABLES [FROM db_name] [like_or_where]\nSHOW TRIGGERS [FROM db_name] [like_or_where]\nSHOW [GLOBAL | SESSION] VARIABLES [like_or_where]\nSHOW WARNINGS [LIMIT [offset,] row_count]\n\nlike_or_where:\n LIKE \'pattern\'\n | WHERE expr\n\nIf the syntax for a given SHOW statement includes a LIKE \'pattern\'\npart, \'pattern\' is a string that can contain the SQL "%" and "_"\nwildcard characters. The pattern is useful for restricting statement\noutput to matching values.\n\nSeveral SHOW statements also accept a WHERE clause that provides more\nflexibility in specifying which rows to display. See\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (344,17,'GREATEST','Syntax:\nGREATEST(value1,value2,...)\n\nWith two or more arguments, returns the largest (maximum-valued)\nargument. The arguments are compared using the same rules as for\nLEAST().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT GREATEST(2,0);\n -> 2\nmysql> SELECT GREATEST(34.0,3.0,5.0,767.0);\n -> 767.0\nmysql> SELECT GREATEST(\'B\',\'A\',\'C\');\n -> \'C\'\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (345,26,'SHOW VARIABLES','Syntax:\nSHOW [GLOBAL | SESSION] VARIABLES\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW VARIABLES shows the values of MySQL system variables. This\ninformation also can be obtained using the mysqladmin variables\ncommand. The LIKE clause, if present, indicates which variable names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nWith the GLOBAL modifier, SHOW VARIABLES displays the values that are\nused for new connections to MySQL. With SESSION, it displays the values\nthat are in effect for the current connection. If no modifier is\npresent, the default is SESSION. LOCAL is a synonym for SESSION.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern. To obtain the row for a\nspecific variable, use a LIKE clause as shown:\n\nSHOW VARIABLES LIKE \'max_join_size\';\nSHOW SESSION VARIABLES LIKE \'max_join_size\';\n\nTo get a list of variables whose name match a pattern, use the "%"\nwildcard character in a LIKE clause:\n\nSHOW VARIABLES LIKE \'%size%\';\nSHOW GLOBAL VARIABLES LIKE \'%size%\';\n\nWildcard characters can be used in any position within the pattern to\nbe matched. Strictly speaking, because "_" is a wildcard that matches\nany single character, you should escape it as "\\_" to match it\nliterally. In practice, this is rarely necessary.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-variables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-variables.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (346,26,'BINLOG','Syntax:\nBINLOG \'str\'\n\nBINLOG is an internal-use statement. It is generated by the mysqlbinlog\nprogram as the printable representation of certain events in binary log\nfiles. (See http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html.)\nThe \'str\' value is a base 64-encoded string the that server decodes to\ndetermine the data change indicated by the corresponding event. This\nstatement requires the SUPER privilege. It was added in MySQL 5.1.5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/binlog.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/binlog.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (347,16,'BIT_AND','Syntax:\nBIT_AND(expr)\n\nReturns the bitwise AND of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (348,30,'SECOND','Syntax:\nSECOND(time)\n\nReturns the second for time, in the range 0 to 59.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SECOND(\'10:05:03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (349,4,'ATAN2','Syntax:\nATAN(Y,X), ATAN2(Y,X)\n\nReturns the arc tangent of the two variables X and Y. It is similar to\ncalculating the arc tangent of Y / X, except that the signs of both\narguments are used to determine the quadrant of the result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(-2,2);\n -> -0.78539816339745\nmysql> SELECT ATAN2(PI(),0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (350,6,'MBRCONTAINS','MBRContains(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1\ncontains the Minimum Bounding Rectangle of g2. This tests the opposite\nrelationship as MBRWithin().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Point(1 1)\');\nmysql> SELECT MBRContains(@g1,@g2), MBRContains(@g2,@g1);\n----------------------+----------------------+\n| MBRContains(@g1,@g2) | MBRContains(@g2,@g1) |\n+----------------------+----------------------+\n| 1 | 0 |\n+----------------------+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (351,30,'HOUR','Syntax:\nHOUR(time)\n\nReturns the hour for time. The range of the return value is 0 to 23 for\ntime-of-day values. However, the range of TIME values actually is much\nlarger, so HOUR can return values greater than 23.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT HOUR(\'10:05:03\');\n -> 10\nmysql> SELECT HOUR(\'272:59:59\');\n -> 272\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (352,26,'SELECT','Syntax:\nSELECT\n [ALL | DISTINCT | DISTINCTROW ]\n [HIGH_PRIORITY]\n [STRAIGHT_JOIN]\n [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]\n [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]\n select_expr [, select_expr ...]\n [FROM table_references\n [WHERE where_condition]\n [GROUP BY {col_name | expr | position}\n [ASC | DESC], ... [WITH ROLLUP]]\n [HAVING where_condition]\n [ORDER BY {col_name | expr | position}\n [ASC | DESC], ...]\n [LIMIT {[offset,] row_count | row_count OFFSET offset}]\n [PROCEDURE procedure_name(argument_list)]\n [INTO OUTFILE \'file_name\' export_options\n | INTO DUMPFILE \'file_name\'\n | INTO var_name [, var_name]]\n [FOR UPDATE | LOCK IN SHARE MODE]]\n\nSELECT is used to retrieve rows selected from one or more tables, and\ncan include UNION statements and subqueries. See [HELP UNION], and\nhttp://dev.mysql.com/doc/refman/5.1/en/subqueries.html.\n\nThe most commonly used clauses of SELECT statements are these:\n\no Each select_expr indicates a column that you want to retrieve. There\n must be at least one select_expr.\n\no table_references indicates the table or tables from which to retrieve\n rows. Its syntax is described in [HELP JOIN].\n\no The WHERE clause, if given, indicates the condition or conditions\n that rows must satisfy to be selected. where_condition is an\n expression that evaluates to true for each row to be selected. The\n statement selects all rows if there is no WHERE clause.\n\n In the WHERE clause, you can use any of the functions and operators\n that MySQL supports, except for aggregate (summary) functions. See\n http://dev.mysql.com/doc/refman/5.1/en/functions.html.\n\nSELECT can also be used to retrieve rows computed without reference to\nany table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/select.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (353,4,'COT','Syntax:\nCOT(X)\n\nReturns the cotangent of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT COT(12);\n -> -1.5726734063977\nmysql> SELECT COT(0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (354,26,'SHOW CREATE EVENT','Syntax:\nSHOW CREATE EVENT event_name\n\nThis statement displays the CREATE EVENT statement needed to re-create\na given event. For example (using the same event e_daily defined and\nthen altered in\nhttp://dev.mysql.com/doc/refman/5.1/en/show-events.html):\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-event.html\n\n','mysql> SHOW CREATE EVENT test.e_daily\\G\n*************************** 1. row ***************************\n Event: e_daily\n sql_mode: \n time_zone: SYSTEM\n Create Event: CREATE EVENT `e_daily`\n ON SCHEDULE EVERY 1 DAY\n STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR\n ON COMPLETION NOT PRESERVE\n ENABLE\n COMMENT \'Saves total number of sessions then\n clears the table each day\'\n DO BEGIN\n INSERT INTO site_activity.totals (time, total)\n SELECT CURRENT_TIMESTAMP, COUNT(*) \n FROM site_activity.sessions;\n DELETE FROM site_activity.sessions;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-event.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (355,19,'BACKUP TABLE','Syntax:\nBACKUP TABLE tbl_name [, tbl_name] ... TO \'/path/to/backup/directory\'\n\n*Note*: This statement is deprecated. We are working on a better\nreplacement for it that will provide online backup capabilities. In the\nmeantime, the mysqlhotcopy script can be used instead.\n\nBACKUP TABLE copies to the backup directory the minimum number of table\nfiles needed to restore the table, after flushing any buffered changes\nto disk. The statement works only for MyISAM tables. It copies the .frm\ndefinition and .MYD data files. The .MYI index file can be rebuilt from\nthose two files. The directory should be specified as a full path name.\nTo restore the table, use RESTORE TABLE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/backup-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/backup-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (356,35,'LOAD_FILE','Syntax:\nLOAD_FILE(file_name)\n\nReads the file and returns the file contents as a string. To use this\nfunction, the file must be located on the server host, you must specify\nthe full path name to the file, and you must have the FILE privilege.\nThe file must be readable by all and its size less than\nmax_allowed_packet bytes. If the secure_file_priv system variable is\nset to a non-empty directory name, the file to be loaded must be\nlocated in that directory.\n\nIf the file does not exist or cannot be read because one of the\npreceding conditions is not satisfied, the function returns NULL.\n\nAs of MySQL 5.1.6, the character_set_filesystem system variable\ncontrols interpretation of file names that are given as literal\nstrings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> UPDATE t\n SET blob_col=LOAD_FILE(\'/tmp/picture\')\n WHERE id=1;\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (357,26,'LOAD TABLE FROM MASTER','Syntax:\nLOAD TABLE tbl_name FROM MASTER\n\nThis feature is deprecated. We recommend not using it anymore. It is\nsubject to removal in a future version of MySQL.\n\nSince the current implementation of LOAD DATA FROM MASTER and LOAD\nTABLE FROM MASTER is very limited, these statements are deprecated in\nversions 4.1 of MySQL and above. We will introduce a more advanced\ntechnique (called "online backup") in a future version. That technique\nwill have the additional advantage of working with more storage\nengines.\n\nFor MySQL 5.1 and earlier, the recommended alternative solution to\nusing LOAD DATA FROM MASTER or LOAD TABLE FROM MASTER is using\nmysqldump or mysqlhotcopy. The latter requires Perl and two Perl\nmodules (DBI and DBD:mysql) and works for MyISAM and ARCHIVE tables\nonly. With mysqldump, you can create SQL dumps on the master and pipe\n(or copy) these to a mysql client on the slave. This has the advantage\nof working for all storage engines, but can be quite slow, since it\nworks using SELECT.\n\nTransfers a copy of the table from the master to the slave. This\nstatement is implemented mainly debugging LOAD DATA FROM MASTER\noperations. To use LOAD TABLE, the account used for connecting to the\nmaster server must have the RELOAD and SUPER privileges on the master\nand the SELECT privilege for the master table to load. On the slave\nside, the user that issues LOAD TABLE FROM MASTER must have privileges\nfor dropping and creating the table.\n\nThe conditions for LOAD DATA FROM MASTER apply here as well. For\nexample, LOAD TABLE FROM MASTER works only for MyISAM tables. The\ntimeout notes for LOAD DATA FROM MASTER apply as well.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-table-from-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-table-from-master.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (358,3,'POINTFROMTEXT','PointFromText(wkt[,srid])\n\nConstructs a POINT value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (359,16,'GROUP_CONCAT','Syntax:\nGROUP_CONCAT(expr)\n\nThis function returns a string result with the concatenated non-NULL\nvalues from a group. It returns NULL if there are no non-NULL values.\nThe full syntax is as follows:\n\nGROUP_CONCAT([DISTINCT] expr [,expr ...]\n [ORDER BY {unsigned_integer | col_name | expr}\n [ASC | DESC] [,col_name ...]]\n [SEPARATOR str_val])\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name,\n -> GROUP_CONCAT(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (360,30,'DATE_FORMAT','Syntax:\nDATE_FORMAT(date,format)\n\nFormats the date value according to the format string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2009-10-04 22:23:00\', \'%W %M %Y\');\n -> \'Sunday October 2009\'\nmysql> SELECT DATE_FORMAT(\'2007-10-04 22:23:00\', \'%H:%i:%s\');\n -> \'22:23:00\'\nmysql> SELECT DATE_FORMAT(\'1900-10-04 22:23:00\',\n -> \'%D %y %a %d %m %b %j\');\n -> \'4th 00 Thu 04 10 Oct 277\'\nmysql> SELECT DATE_FORMAT(\'1997-10-04 22:23:00\',\n -> \'%H %k %I %r %T %S %w\');\n -> \'22 22 10 10:23:00 PM 22:23:00 00 6\'\nmysql> SELECT DATE_FORMAT(\'1999-01-01\', \'%X %V\');\n -> \'1998 52\'\nmysql> SELECT DATE_FORMAT(\'2006-06-00\', \'%d\');\n -> \'00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (361,15,'BENCHMARK','Syntax:\nBENCHMARK(count,expr)\n\nThe BENCHMARK() function executes the expression expr repeatedly count\ntimes. It may be used to time how quickly MySQL processes the\nexpression. The result value is always 0. The intended use is from\nwithin the mysql client, which reports query execution times:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\'));\n+----------------------------------------------+\n| BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\')) |\n+----------------------------------------------+\n| 0 |\n+----------------------------------------------+\n1 row in set (4.74 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (362,30,'YEAR','Syntax:\nYEAR(date)\n\nReturns the year for date, in the range 1000 to 9999, or 0 for the\n"zero" date.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT YEAR(\'1987-01-01\');\n -> 1987\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (363,26,'SHOW ENGINE','Syntax:\nSHOW ENGINE engine_name {STATUS | MUTEX}\n\nSHOW ENGINE displays operational information about a storage engine.\nThe following statements currently are supported:\n\nSHOW ENGINE INNODB STATUS\nSHOW ENGINE INNODB MUTEX\nSHOW ENGINE {NDB | NDBCLUSTER} STATUS\n\nOlder (and now deprecated) synonyms are SHOW INNODB STATUS for SHOW\nENGINE INNODB STATUS and SHOW MUTEX STATUS for SHOW ENGINE INNODB\nMUTEX.\n\nIn MySQL 5.0, SHOW ENGINE INNODB MUTEX is invoked as SHOW MUTEX STATUS.\nThe latter statement displays similar information but in a somewhat\ndifferent output format.\n\nSHOW ENGINE BDB LOGS formerly displayed status information about BDB\nlog files. As of MySQL 5.1.12, the BDB storage engine is not supported,\nand this statement produces a warning.\n\nSHOW ENGINE INNODB STATUS displays extensive information from the\nstandard InnoDB Monitor about the state of the InnoDB storage engine.\nFor information about the standard monitor and other InnoDB Monitors\nthat provide information about InnoDB processing, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-monitors.html.\n\nSHOW ENGINE INNODB MUTEX displays InnoDB mutex statistics. From MySQL\n5.1.2 to 5.1.14, the statement displays the following output fields:\n\no Type\n\n Always InnoDB.\n\no Name\n\n The mutex name and the source file where it is implemented. Example:\n &pool->mutex:mem0pool.c\n\n The mutex name indicates its purpose. For example, the log_sys mutex\n is used by the InnoDB logging subsystem and indicates how intensive\n logging activity is. The buf_pool mutex protects the InnoDB buffer\n pool.\n\no Status\n\n The mutex status. The fields contains several values:\n\n o count indicates how many times the mutex was requested.\n\n o spin_waits indicates how many times the spinlock had to run.\n\n o spin_rounds indicates the number of spinlock rounds. (spin_rounds\n divided by spin_waits provides the average round count.)\n\n o os_waits indicates the number of operating system waits. This\n occurs when the spinlock did not work (the mutex was not locked\n during the spinlock and it was necessary to yield to the operating\n system and wait).\n\n o os_yields indicates the number of times a the thread trying to lock\n a mutex gave up its timeslice and yielded to the operating system\n (on the presumption that allowing other threads to run will free\n the mutex so that it can be locked).\n\n o os_wait_times indicates the amount of time (in ms) spent in\n operating system waits, if the timed_mutexes system variable is 1\n (ON). If timed_mutexes is 0 (OFF), timing is disabled, so\n os_wait_times is 0. timed_mutexes is off by default.\n\nFrom MySQL 5.1.15 on, the statement displays the following output\nfields:\n\no Type\n\n Always InnoDB.\n\no Name\n\n The source file where the mutex is implemented, and the line number\n in the file where the mutex is created. The line number may change\n depending on your version of MySQL.\n\no Status\n\n This field displays the same values as previously described (count,\n spin_waits, spin_rounds, os_waits, os_yields, os_wait_times), but\n only if UNIV_DEBUG was defined at MySQL compilation time (for\n example, in include/univ.h in the InnoDB part of the MySQL source\n tree). If UNIV_DEBUG was not defined, the statement displays only the\n os_waits value. In the latter case (without UNIV_DEBUG), the\n information on which the output is based is insufficient to\n distinguish regular mutexes and mutexes that protect rw-locks (which\n allow multiple readers or a single writer). Consequently, the output\n may appear to contain multiple rows for the same mutex.\n\nInformation from this statement can be used to diagnose system\nproblems. For example, large values of spin_waits and spin_rounds may\nindicate scalability problems.\n\nIf the server has the NDBCLUSTER storage engine enabled, SHOW ENGINE\nNDB STATUS displays cluster status information such as the number of\nconnected data nodes, the cluster connectstring, and cluster binlog\nepochs, as well as counts of various Cluster API objects created by the\nMySQL Server when connected to the cluster. Sample output from this\nstatement is shown here:\n\nmysql> SHOW ENGINE NDB STATUS;\n+------------+-----------------------+--------------------------------------------------+\n| Type | Name | Status |\n+------------+-----------------------+--------------------------------------------------+\n| ndbcluster | connection | cluster_node_id=7, \n connected_host=192.168.0.103, connected_port=1186, number_of_data_nodes=4, \n number_of_ready_data_nodes=3, connect_count=0 |\n| ndbcluster | NdbTransaction | created=6, free=0, sizeof=212 |\n| ndbcluster | NdbOperation | created=8, free=8, sizeof=660 |\n| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744 |\n| ndbcluster | NdbIndexOperation | created=0, free=0, sizeof=664 |\n| ndbcluster | NdbRecAttr | created=1285, free=1285, sizeof=60 |\n| ndbcluster | NdbApiSignal | created=16, free=16, sizeof=136 |\n| ndbcluster | NdbLabel | created=0, free=0, sizeof=196 |\n| ndbcluster | NdbBranch | created=0, free=0, sizeof=24 |\n| ndbcluster | NdbSubroutine | created=0, free=0, sizeof=68 |\n| ndbcluster | NdbCall | created=0, free=0, sizeof=16 |\n| ndbcluster | NdbBlob | created=1, free=1, sizeof=264 |\n| ndbcluster | NdbReceiver | created=4, free=0, sizeof=68 |\n| ndbcluster | binlog | latest_epoch=155467, latest_trans_epoch=148126, \n latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0, \n latest_applied_binlog_epoch=0 |\n+------------+-----------------------+--------------------------------------------------+\n\nThe rows with connection and binlog in the Name column were added to\nthe output of this statement in MySQL 5.1. The Status column in each of\nthese rows provides information about the MySQL server\'s connection to\nthe cluster and about the cluster binary log\'s status, respectively.\nThe Status information is in the form of comma-delimited set of\nname/value pairs.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-engine.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-engine.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (364,14,'NAME_CONST','Syntax:\nNAME_CONST(name,value)\n\nReturns the given value. When used to produce a result set column,\nNAME_CONST() causes the column to have the given name. The arguments\nshould be constants.\n\nmysql> SELECT NAME_CONST(\'myname\', 14);\n+--------+\n| myname |\n+--------+\n| 14 |\n+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (365,14,'RELEASE_LOCK','Syntax:\nRELEASE_LOCK(str)\n\nReleases the lock named by the string str that was obtained with\nGET_LOCK(). Returns 1 if the lock was released, 0 if the lock was not\nestablished by this thread (in which case the lock is not released),\nand NULL if the named lock did not exist. The lock does not exist if it\nwas never obtained by a call to GET_LOCK() or if it has previously been\nreleased.\n\nThe DO statement is convenient to use with RELEASE_LOCK(). See [HELP\nDO].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (366,17,'IS NULL','Syntax:\nIS NULL\n\nTests whether a value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;\n -> 0, 0, 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (367,30,'CONVERT_TZ','Syntax:\nCONVERT_TZ(dt,from_tz,to_tz)\n\nCONVERT_TZ() converts a datetime value dt from the time zone given by\nfrom_tz to the time zone given by to_tz and returns the resulting\nvalue. Time zones are specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html. This\nfunction returns NULL if the arguments are invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'GMT\',\'MET\');\n -> \'2004-01-01 13:00:00\'\nmysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'+00:00\',\'+10:00\');\n -> \'2004-01-01 22:00:00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (368,30,'TIME_TO_SEC','Syntax:\nTIME_TO_SEC(time)\n\nReturns the time argument, converted to seconds.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_TO_SEC(\'22:23:00\');\n -> 80580\nmysql> SELECT TIME_TO_SEC(\'00:39:38\');\n -> 2378\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (369,30,'WEEKDAY','Syntax:\nWEEKDAY(date)\n\nReturns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 =\nSunday).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKDAY(\'2008-02-03 22:23:00\');\n -> 6\nmysql> SELECT WEEKDAY(\'2007-11-06\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (370,35,'EXPORT_SET','Syntax:\nEXPORT_SET(bits,on,off[,separator[,number_of_bits]])\n\nReturns a string such that for every bit set in the value bits, you get\nan on string and for every bit not set in the value, you get an off\nstring. Bits in bits are examined from right to left (from low-order to\nhigh-order bits). Strings are added to the result from left to right,\nseparated by the separator string (the default being the comma\ncharacter ","). The number of bits examined is given by number_of_bits\n(defaults to 64).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT EXPORT_SET(5,\'Y\',\'N\',\',\',4);\n -> \'Y,N,Y,N\'\nmysql> SELECT EXPORT_SET(6,\'1\',\'0\',\',\',10);\n -> \'0,1,1,0,0,0,0,0,0,0\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (371,37,'ALTER SERVER','Syntax:\nALTER SERVER server_name\n OPTIONS (option [, option] ...)\n\nAlters the server information for server_name, adjusting the specified\noptions as per the CREATE SERVER command. See [HELP CREATE SERVER]. The\ncorresponding fields in the mysql.servers table are updated\naccordingly. This statement requires the SUPER privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-server.html\n\n','ALTER SERVER s OPTIONS (USER \'sally\');\n','http://dev.mysql.com/doc/refman/5.1/en/alter-server.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (372,30,'TIME FUNCTION','Syntax:\nTIME(expr)\n\nExtracts the time part of the time or datetime expression expr and\nreturns it as a string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME(\'2003-12-31 01:02:03\');\n -> \'01:02:03\'\nmysql> SELECT TIME(\'2003-12-31 01:02:03.000123\');\n -> \'01:02:03.000123\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (373,30,'DATE_ADD','Syntax:\nDATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)\n\nThese functions perform date arithmetic. The date argument specifies\nthe starting date or datetime value. expr is an expression specifying\nthe interval value to be added or subtracted from the starting date.\nexpr is a string; it may start with a "-" for negative intervals. unit\nis a keyword indicating the units in which the expression should be\ninterpreted.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT \'2008-12-31 23:59:59\' + INTERVAL 1 SECOND;\n -> \'2009-01-01 00:00:00\'\nmysql> SELECT INTERVAL 1 DAY + \'2008-12-31\';\n -> \'2009-01-01\'\nmysql> SELECT \'2005-01-01\' - INTERVAL 1 SECOND;\n -> \'2004-12-31 23:59:59\'\nmysql> SELECT DATE_ADD(\'2000-12-31 23:59:59\',\n -> INTERVAL 1 SECOND);\n -> \'2001-01-01 00:00:00\'\nmysql> SELECT DATE_ADD(\'2010-12-31 23:59:59\',\n -> INTERVAL 1 DAY);\n -> \'2011-01-01 23:59:59\'\nmysql> SELECT DATE_ADD(\'2100-12-31 23:59:59\',\n -> INTERVAL \'1:1\' MINUTE_SECOND);\n -> \'2101-01-01 00:01:00\'\nmysql> SELECT DATE_SUB(\'2005-01-01 00:00:00\',\n -> INTERVAL \'1 1:1:1\' DAY_SECOND);\n -> \'2004-12-30 22:58:59\'\nmysql> SELECT DATE_ADD(\'1900-01-01 00:00:00\',\n -> INTERVAL \'-1 10\' DAY_HOUR);\n -> \'1899-12-30 14:00:00\'\nmysql> SELECT DATE_SUB(\'1998-01-02\', INTERVAL 31 DAY);\n -> \'1997-12-02\'\nmysql> SELECT DATE_ADD(\'1992-12-31 23:59:59.000002\',\n -> INTERVAL \'1.999999\' SECOND_MICROSECOND);\n -> \'1993-01-01 00:00:01.000001\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (374,35,'CAST','Syntax:\nCAST(expr AS type)\n\nThe CAST() function takes a value of one type and produce a value of\nanother type, similar to CONVERT(). See the description of CONVERT()\nfor more information.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (375,35,'SOUNDS LIKE','Syntax:\nexpr1 SOUNDS LIKE expr2\n\nThis is the same as SOUNDEX(expr1) = SOUNDEX(expr2).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (376,30,'PERIOD_DIFF','Syntax:\nPERIOD_DIFF(P1,P2)\n\nReturns the number of months between periods P1 and P2. P1 and P2\nshould be in the format YYMM or YYYYMM. Note that the period arguments\nP1 and P2 are not date values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_DIFF(200802,200703);\n -> 11\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (377,35,'LIKE','Syntax:\nexpr LIKE pat [ESCAPE \'escape_char\']\n\nPattern matching using SQL simple regular expression comparison.\nReturns 1 (TRUE) or 0 (FALSE). If either expr or pat is NULL, the\nresult is NULL.\n\nThe pattern need not be a literal string. For example, it can be\nspecified as a string expression or table column.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','mysql> SELECT \'David!\' LIKE \'David_\';\n -> 1\nmysql> SELECT \'David!\' LIKE \'%D%v%\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (378,23,'MULTIPOINT','MultiPoint(pt1,pt2,...)\n\nConstructs a WKB MultiPoint value using WKB Point arguments. If any\nargument is not a WKB Point, the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (379,18,'>>','Syntax:\n>>\n\nShifts a longlong (BIGINT) number to the right.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 4 >> 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (380,22,'FETCH','Syntax:\nFETCH cursor_name INTO var_name [, var_name] ...\n\nThis statement fetches the next row (if a row exists) using the\nspecified open cursor, and advances the cursor pointer.\n\nIf no more rows are available, a No Data condition occurs with SQLSTATE\nvalue 02000. To detect this condition, you can set up a handler for it\n(or for a NOT FOUND condition). An example is shown in\nhttp://dev.mysql.com/doc/refman/5.1/en/cursors.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/fetch.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/fetch.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (381,16,'AVG','Syntax:\nAVG([DISTINCT] expr)\n\nReturns the average value of expr. The DISTINCT option can be used to\nreturn the average of the distinct values of expr.\n\nAVG() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name, AVG(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (382,28,'TRUE FALSE','The constants TRUE and FALSE evaluate to 1 and 0, respectively. The\nconstant names can be written in any lettercase.\n\nmysql> SELECT TRUE, true, FALSE, false;\n -> 1, 1, 0, 0\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/boolean-values.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/boolean-values.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (383,6,'MBRWITHIN','MBRWithin(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1\nis within the Minimum Bounding Rectangle of g2. This tests the opposite\nrelationship as MBRContains().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Polygon((0 0,0 5,5 5,5 0,0 0))\');\nmysql> SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1);\n+--------------------+--------------------+\n| MBRWithin(@g1,@g2) | MBRWithin(@g2,@g1) |\n+--------------------+--------------------+\n| 1 | 0 |\n+--------------------+--------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (384,17,'IN','Syntax:\nexpr IN (value,...)\n\nReturns 1 if expr is equal to any of the values in the IN list, else\nreturns 0. If all values are constants, they are evaluated according to\nthe type of expr and sorted. The search for the item then is done using\na binary search. This means IN is very quick if the IN value list\nconsists entirely of constants. Otherwise, type conversion takes place\naccording to the rules described in\nhttp://dev.mysql.com/doc/refman/5.1/en/type-conversion.html, but\napplied to all the arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 IN (0,3,5,7);\n -> 0\nmysql> SELECT \'wefwf\' IN (\'wee\',\'wefwf\',\'weg\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (385,35,'QUOTE','Syntax:\nQUOTE(str)\n\nQuotes a string to produce a result that can be used as a properly\nescaped data value in an SQL statement. The string is returned enclosed\nby single quotes and with each instance of single quote ("\'"),\nbackslash ("\\"), ASCII NUL, and Control-Z preceded by a backslash. If\nthe argument is NULL, the return value is the word "NULL" without\nenclosing single quotes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT QUOTE(\'Don\\\'t!\');\n -> \'Don\\\'t!\'\nmysql> SELECT QUOTE(NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (386,15,'SESSION_USER','Syntax:\nSESSION_USER()\n\nSESSION_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (387,25,'HELP COMMAND','Syntax:\nmysql> help search_string\n\nIf you provide an argument to the help command, mysql uses it as a\nsearch string to access server-side help from the contents of the MySQL\nReference Manual. The proper operation of this command requires that\nthe help tables in the mysql database be initialized with help topic\ninformation (see\nhttp://dev.mysql.com/doc/refman/5.1/en/server-side-help-support.html).… there is no match for the search string, the search fails:\n\nmysql> help me\n\nNothing found\nPlease try to run \'help contents\' for a list of all accessible topics\n\nUse help contents to see a list of the help categories:\n\nmysql> help contents\nYou asked for help about help category: "Contents"\nFor more information, type \'help <item>\', where <item> is one of the\nfollowing categories:\n Account Management\n Administration\n Data Definition\n Data Manipulation\n Data Types\n Functions\n Functions and Modifiers for Use with GROUP BY\n Geographic Features\n Language Structure\n Plugins\n Storage Engines\n Stored Routines\n Table Maintenance\n Transactions\n Triggers\n\nIf the search string matches multiple items, mysql shows a list of\nmatching topics:\n\nmysql> help logs\nMany help items for your request exist.\nTo make a more specific request, please type \'help <item>\',\nwhere <item> is one of the following topics:\n SHOW\n SHOW BINARY LOGS\n SHOW ENGINE\n SHOW LOGS\n\nUse a topic as the search string to see the help entry for that topic:\n\nmysql> help show binary logs\nName: \'SHOW BINARY LOGS\'\nDescription:\nSyntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [purge-binary-logs], that shows how\nto determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mysql-server-side-help.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mysql-server-side-help.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (388,30,'QUARTER','Syntax:\nQUARTER(date)\n\nReturns the quarter of the year for date, in the range 1 to 4.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT QUARTER(\'2008-04-01\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (389,35,'POSITION','Syntax:\nPOSITION(substr IN str)\n\nPOSITION(substr IN str) is a synonym for LOCATE(substr,str).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (390,26,'SHOW CREATE FUNCTION','Syntax:\nSHOW CREATE FUNCTION func_name\n\nThis statement is similar to SHOW CREATE PROCEDURE but for stored\nfunctions. See [HELP SHOW CREATE PROCEDURE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-function.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (391,14,'IS_USED_LOCK','Syntax:\nIS_USED_LOCK(str)\n\nChecks whether the lock named str is in use (that is, locked). If so,\nit returns the connection identifier of the client that holds the lock.\nOtherwise, it returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (392,3,'POLYFROMTEXT','PolyFromText(wkt[,srid]), PolygonFromText(wkt[,srid])\n\nConstructs a POLYGON value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (393,11,'DES_ENCRYPT','Syntax:\nDES_ENCRYPT(str[,{key_num|key_str}])\n\nEncrypts the string with the given key using the Triple-DES algorithm.\n\nThis function works only if MySQL has been configured with SSL support.\nSee http://dev.mysql.com/doc/refman/5.1/en/secure-connections.html.\n\nThe encryption key to use is chosen based on the second argument to\nDES_ENCRYPT(), if one was given. With no argument, the first key from\nthe DES key file is used. With a key_num argument, the given key number\n(0-9) from the DES key file is used. With a key_str argument, the given\nkey string is used to encrypt str.\n\nThe key file can be specified with the --des-key-file server option.\n\nThe return string is a binary string where the first character is\nCHAR(128 | key_num). If an error occurs, DES_ENCRYPT() returns NULL.\n\nThe 128 is added to make it easier to recognize an encrypted key. If\nyou use a string key, key_num is 127.\n\nThe string length for the result is given by this formula:\n\nnew_len = orig_len + (8 - (orig_len % 8)) + 1\n\nEach line in the DES key file has the following format:\n\nkey_num des_key_str\n\nEach key_num value must be a number in the range from 0 to 9. Lines in\nthe file may be in any order. des_key_str is the string that is used to\nencrypt the message. There should be at least one space between the\nnumber and the key. The first key is the default key that is used if\nyou do not specify any key argument to DES_ENCRYPT().\n\nYou can tell MySQL to read new key values from the key file with the\nFLUSH DES_KEY_FILE statement. This requires the RELOAD privilege.\n\nOne benefit of having a set of default keys is that it gives\napplications a way to check for the existence of encrypted column\nvalues, without giving the end user the right to decrypt those values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT customer_address FROM customer_table \n > WHERE crypted_credit_card = DES_ENCRYPT(\'credit_card_number\');\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (394,4,'CEIL','Syntax:\nCEIL(X)\n\nCEIL() is a synonym for CEILING().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (395,35,'LENGTH','Syntax:\nLENGTH(str)\n\nReturns the length of the string str, measured in bytes. A multi-byte\ncharacter counts as multiple bytes. This means that for a string\ncontaining five two-byte characters, LENGTH() returns 10, whereas\nCHAR_LENGTH() returns 5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LENGTH(\'text\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (396,30,'STR_TO_DATE','Syntax:\nSTR_TO_DATE(str,format)\n\nThis is the inverse of the DATE_FORMAT() function. It takes a string\nstr and a format string format. STR_TO_DATE() returns a DATETIME value\nif the format string contains both date and time parts, or a DATE or\nTIME value if the string contains only date or time parts.\n\nThe date, time, or datetime values contained in str should be given in\nthe format indicated by format. For the specifiers that can be used in\nformat, see the DATE_FORMAT() function description. If str contains an\nillegal date, time, or datetime value, STR_TO_DATE() returns NULL. An\nillegal value also produces a warning.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (397,10,'Y','Y(p)\n\nReturns the Y-coordinate value for the point p as a double-precision\nnumber.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…','mysql> SET @pt = \'Point(56.7 53.34)\';\nmysql> SELECT Y(GeomFromText(@pt));\n+----------------------+\n| Y(GeomFromText(@pt)) |\n+----------------------+\n| 53.34 |\n+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (398,26,'SHOW INNODB STATUS','Syntax:\nSHOW INNODB STATUS\n\nIn MySQL 5.1, this is a deprecated synonym for SHOW ENGINE INNODB\nSTATUS. See [HELP SHOW ENGINE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-innodb-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-innodb-status.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (399,19,'CHECKSUM TABLE','Syntax:\nCHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]\n\nCHECKSUM TABLE reports a table checksum.\n\nWith QUICK, the live table checksum is reported if it is available, or\nNULL otherwise. This is very fast. A live checksum is enabled by\nspecifying the CHECKSUM=1 table option when you create the table;\ncurrently, this is supported only for MyISAM tables. See [HELP CREATE\nTABLE].\n\nWith EXTENDED, the entire table is read row by row and the checksum is\ncalculated. This can be very slow for large tables.\n\nIf neither QUICK nor EXTENDED is specified, MySQL returns a live\nchecksum if the table storage engine supports it and scans the table\notherwise.\n\nFor a non-existent table, CHECKSUM TABLE returns NULL and generates a\nwarning.\n\nThe checksum value depends on the table row format. If the row format\nchanges, the checksum also changes. For example, the storage format for\nVARCHAR changed between MySQL 4.1 and 5.0, so if a 4.1 table is\nupgraded to MySQL 5.0, the checksum value may change.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/checksum-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/checksum-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (400,2,'NUMINTERIORRINGS','NumInteriorRings(poly)\n\nReturns the number of interior rings in the Polygon value poly.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT NumInteriorRings(GeomFromText(@poly));\n+---------------------------------------+\n| NumInteriorRings(GeomFromText(@poly)) |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (401,2,'INTERIORRINGN','InteriorRingN(poly,N)\n\nReturns the N-th interior ring for the Polygon value poly as a\nLineString. Rings are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT AsText(InteriorRingN(GeomFromText(@poly),1));\n+----------------------------------------------+\n| AsText(InteriorRingN(GeomFromText(@poly),1)) |\n+----------------------------------------------+\n| LINESTRING(1 1,1 2,2 2,2 1,1 1) |\n+----------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (402,30,'UTC_TIME','Syntax:\nUTC_TIME, UTC_TIME()\n\nReturns the current UTC time as a value in \'HH:MM:SS\' or HHMMSS.uuuuuu\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIME(), UTC_TIME() + 0;\n -> \'18:07:53\', 180753.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (403,37,'DROP FUNCTION','The DROP FUNCTION statement is used to drop stored functions and\nuser-defined functions (UDFs):\n\no For information about dropping stored functions, see [HELP DROP\n PROCEDURE].\n\no For information about dropping user-defined functions, see [HELP DROP\n FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-function.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (404,37,'ALTER EVENT','Syntax:\nALTER\n [DEFINER = { user | CURRENT_USER }]\n EVENT event_name\n [ON SCHEDULE schedule]\n [ON COMPLETION [NOT] PRESERVE]\n [RENAME TO new_event_name]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n [DO sql_statement]\n\nThe ALTER EVENT statement is used to change one or more of the\ncharacteristics of an existing event without the need to drop and\nrecreate it. The syntax for each of the DEFINER, ON SCHEDULE, ON\nCOMPLETION, COMMENT, ENABLE / DISABLE, and DO clauses is exactly the\nsame as when used with CREATE EVENT. (See [HELP CREATE EVENT].)\n\nSupport for the DEFINER clause was added in MySQL 5.1.17.\n\nBeginning with MySQL 5.1.12, this statement requires the EVENT\nprivilege. When a user executes a successful ALTER EVENT statement,\nthat user becomes the definer for the affected event.\n\n(In MySQL 5.1.11 and earlier, an event could be altered only by its\ndefiner, or by a user having the SUPER privilege.)\n\nALTER EVENT works only with an existing event:\n\nmysql> ALTER EVENT no_such_event \n > ON SCHEDULE \n > EVERY \'2:3\' DAY_HOUR;\nERROR 1517 (HY000): Unknown event \'no_such_event\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-event.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (405,16,'STDDEV','Syntax:\nSTDDEV(expr)\n\nReturns the population standard deviation of expr. This function is\nprovided for compatibility with Oracle. The standard SQL function\nSTDDEV_POP() can be used instead.\n\nThis function returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (406,30,'DATE_SUB','Syntax:\nDATE_SUB(date,INTERVAL expr unit)\n\nSee the description for DATE_ADD().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (407,30,'PERIOD_ADD','Syntax:\nPERIOD_ADD(P,N)\n\nAdds N months to period P (in the format YYMM or YYYYMM). Returns a\nvalue in the format YYYYMM. Note that the period argument P is not a\ndate value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_ADD(200801,2);\n -> 200803\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (408,18,'|','Syntax:\n|\n\nBitwise OR:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 29 | 15;\n -> 31\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (409,3,'GEOMFROMTEXT','GeomFromText(wkt[,srid]), GeometryFromText(wkt[,srid])\n\nConstructs a geometry value of any type using its WKT representation\nand SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (410,14,'UUID_SHORT','Syntax:\nUUID_SHORT()\n\nReturns a "short" universal identifier as a 64-bit unsigned integer\n(rather than a string-form 128-bit identifier as returned by the UUID()\nfunction).\n\nThe value of UUID_SHORT() is guaranteed to be unique if the following\nconditions hold:\n\no The server_id of the current host is unique among your set of master\n and slave servers\n\no server_id is between 0 and 255\n\no You don\'t set back your system time for your server between mysqld\n restarts\n\no You do not invoke UUID_SHORT() on average more than 16 million times\n per second between mysqld restarts\n\nThe UUID_SHORT() return value is constructed this way:\n\n (server_id & 255) << 56\n+ (server_startup_time_in_seconds << 24)\n+ incremented_variable++;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID_SHORT();\n -> 92395783831158784 \n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (411,35,'RIGHT','Syntax:\nRIGHT(str,len)\n\nReturns the rightmost len characters from the string str, or NULL if\nany argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RIGHT(\'foobarbar\', 4);\n -> \'rbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (412,30,'DATEDIFF','Syntax:\nDATEDIFF(expr1,expr2)\n\nDATEDIFF() returns expr1 - expr2 expressed as a value in days from one\ndate to the other. expr1 and expr2 are date or date-and-time\nexpressions. Only the date parts of the values are used in the\ncalculation.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATEDIFF(\'2007-12-31 23:59:59\',\'2007-12-30\');\n -> 1\nmysql> SELECT DATEDIFF(\'2010-11-30 23:59:59\',\'2010-12-31\');\n -> -31\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (413,37,'DROP TABLESPACE','Syntax:\nDROP TABLESPACE tablespace_name\n ENGINE [=] engine_name\n\nThis statement drops a tablespace that was previously created using\nCREATE TABLESPACE (see [HELP CREATE TABLESPACE]).\n\n*Important*: The tablespace to be dropped must not contain any data\nfiles; in other words, before you can drop a tablespace, you must first\ndrop each of its data files using ALTER TABLESPACE ... DROP DATAFILE\n(see [HELP ALTER TABLESPACE]).\n\nThe ENGINE clause (required) specifies the storage engine used by the\ntablespace. In MySQL 5.1, the only accepted values for engine_name are\nNDB and NDBCLUSTER.\n\nDROP TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/drop-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-tablespace.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (414,37,'DROP PROCEDURE','Syntax:\nDROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name\n\nThis statement is used to drop a stored procedure or function. That is,\nthe specified routine is removed from the server. You must have the\nALTER ROUTINE privilege for the routine. (That privilege is granted\nautomatically to the routine creator.)\n\nThe IF EXISTS clause is a MySQL extension. It prevents an error from\noccurring if the procedure or function does not exist. A warning is\nproduced that can be viewed with SHOW WARNINGS.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-procedure.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (415,19,'CHECK TABLE','Syntax:\nCHECK TABLE tbl_name [, tbl_name] ... [option] ...\n\noption = {FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED}\n\nCHECK TABLE checks a table or tables for errors. CHECK TABLE works for\nMyISAM, InnoDB, and ARCHIVE tables. Starting with MySQL 5.1.9, CHECK\nTABLE is also valid for CSV tables, see\nhttp://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html. For\nMyISAM tables, the key statistics are updated as well.\n\nCHECK TABLE can also check views for problems, such as tables that are\nreferenced in the view definition that no longer exist.\n\nBeginning with MySQL 5.1.27, CHECK TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... CHECK PARTITION to check one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/check-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/check-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (416,35,'BIN','Syntax:\nBIN(N)\n\nReturns a string representation of the binary value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,2). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT BIN(12);\n -> \'1100\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (417,5,'INSTALL PLUGIN','Syntax:\nINSTALL PLUGIN plugin_name SONAME \'plugin_library\'\n\nThis statement installs a plugin.\n\nplugin_name is the name of the plugin as defined in the plugin\ndeclaration structure contained in the library file. Plugin names are\nnot case sensitive. For maximal compatibility, plugin names should be\nlimited to ASCII letters, digits, and underscore, because they are used\nin C source files, shell command lines, M4 and Bourne shell scripts,\nand SQL environments.\n\nplugin_library is the name of the shared library that contains the\nplugin code. The name includes the file name extension (for example,\nlibmyplugin.so or libmyplugin.dylib).\n\nThe shared library must be located in the plugin directory (that is,\nthe directory named by the plugin_dir system variable). The library\nmust be in the plugin directory itself, not in a subdirectory. By\ndefault, plugin_dir is plugin directory under the directory named by\nthe pkglibdir configuration variable, but it can be changed by setting\nthe value of plugin_dir at server startup. For example, set its value\nin a my.cnf file:\n\n[mysqld]\nplugin_dir=/path/to/plugin/directory\n\nIf the value of plugin_dir is a relative path name, it is taken to be\nrelative to the MySQL base directory (the value of the basedir system\nvariable).\n\nINSTALL PLUGIN adds a line to the mysql.plugin table that describes the\nplugin. This table contains the plugin name and library file name.\n\nAs of MySQL 5.1.33, INSTALL PLUGIN causes the server to read option\n(my.cnf) files just as during server startup. This enables the plugin\nto pick up any relevant options from those files. It is possible to add\nplugin options to an option file even before loading a plugin (if the\nloose prefix is used). It is also possible to uninstall a plugin, edit\nmy.cnf, and install the plugin again. Restarting the plugin this way\nenables it to the new option values without a server restart.\n\nBefore MySQL 5.1.33, a plugin is started with each option set to its\ndefault value.\n\nINSTALL PLUGIN also loads and initializes the plugin code to make the\nplugin available for use. A plugin is initialized by executing its\ninitialization function, which handles any setup that the plugin must\nperform before it can be used.\n\nTo use INSTALL PLUGIN, you must have the INSERT privilege for the\nmysql.plugin table.\n\nAt server startup, the server loads and initializes any plugin that is\nlisted in the mysql.plugin table. This means that a plugin is installed\nwith INSTALL PLUGIN only once, not every time the server starts. Plugin\nloading at startup does not occur if the server is started with the\n--skip-grant-tables option.\n\nWhen the server shuts down, it executes the deinitialization function\nfor each plugin that is loaded so that the plugin has a change to\nperform any final cleanup.\n\nIf you need to load plugins for a single server startup when the\n--skip-grant-tables option is given (which tells the server not to read\nsystem tables), use the --plugin-load option. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-options.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/install-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/install-plugin.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (418,22,'DECLARE CURSOR','Syntax:\nDECLARE cursor_name CURSOR FOR select_statement\n\nThis statement declares a cursor. Multiple cursors may be declared in a\nstored program, but each cursor in a given block must have a unique\nname.\n\nThe SELECT statement cannot have an INTO clause.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-cursor.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-cursor.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (419,26,'LOAD DATA','Syntax:\nLOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE \'file_name\'\n [REPLACE | IGNORE]\n INTO TABLE tbl_name\n [CHARACTER SET charset_name]\n [{FIELDS | COLUMNS}\n [TERMINATED BY \'string\']\n [[OPTIONALLY] ENCLOSED BY \'char\']\n [ESCAPED BY \'char\']\n ]\n [LINES\n [STARTING BY \'string\']\n [TERMINATED BY \'string\']\n ]\n [IGNORE number LINES]\n [(col_name_or_user_var,...)]\n [SET col_name = expr,...]\n\nThe LOAD DATA INFILE statement reads rows from a text file into a table\nat a very high speed. The file name must be given as a literal string.\n\nLOAD DATA INFILE is the complement of SELECT ... INTO OUTFILE. (See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.) To write data from\na table to a file, use SELECT ... INTO OUTFILE. To read the file back\ninto a table, use LOAD DATA INFILE. The syntax of the FIELDS and LINES\nclauses is the same for both statements. Both clauses are optional, but\nFIELDS must precede LINES if both are specified.\n\nFor more information about the efficiency of INSERT versus LOAD DATA\nINFILE and speeding up LOAD DATA INFILE, see\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-speed.html.\n\nThe character set indicated by the character_set_database system\nvariable is used to interpret the information in the file. SET NAMES\nand the setting of character_set_client do not affect interpretation of\ninput. If the contents of the input file use a character set that\ndiffers from the default, it is usually preferable to specify the\ncharacter set of the file by using the CHARACTER SET clause, which is\navailable as of MySQL 5.1.17.\n\nLOAD DATA INFILE interprets all fields in the file as having the same\ncharacter set, regardless of the data types of the columns into which\nfield values are loaded. For proper interpretation of file contents,\nyou must ensure that it was written with the correct character set. For\nexample, if you write a data file with mysqldump -T or by issuing a\nSELECT ... INTO OUTFILE statement in mysql, be sure to use a\n--default-character-set option with mysqldump or mysql so that output\nis written in the character set to be used when the file is loaded with\nLOAD DATA INFILE.\n\nNote that it is currently not possible to load data files that use the\nucs2, utf16, or utf32 character set.\n\nAs of MySQL 5.1.6, the character_set_filesystem system variable\ncontrols the interpretation of the file name.\n\nYou can also load data files by using the mysqlimport utility; it\noperates by sending a LOAD DATA INFILE statement to the server. The\n--local option causes mysqlimport to read data files from the client\nhost. You can specify the --compress option to get better performance\nover slow networks if the client and server support the compressed\nprotocol. See http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html.\n\nIf you use LOW_PRIORITY, execution of the LOAD DATA statement is\ndelayed until no other clients are reading from the table. This affects\nonly storage engines that use only table-level locking (MyISAM, MEMORY,\nMERGE).\n\nIf you specify CONCURRENT with a MyISAM table that satisfies the\ncondition for concurrent inserts (that is, it contains no free blocks\nin the middle), other threads can retrieve data from the table while\nLOAD DATA is executing. Using this option affects the performance of\nLOAD DATA a bit, even if no other thread is using the table at the same\ntime.\n\nCONCURRENT is not replicated when using statement-based replication;\nhowever, it is replicated when using row-based replication. See\nhttp://dev.mysql.com/doc/refman/5.1/en/replication-features-load-data.…, for more information.\n\n*Note*: Prior to MySQL 5.1.23, LOAD DATA performed very poorly when\nimporting into partitioned tables. The statement now uses buffering to\nimprove performance; however, the buffer uses 130 KB memory per\npartition to achieve this. (Bug#26527 (http://bugs.mysql.com/26527))\n\nThe LOCAL keyword, if specified, is interpreted with respect to the\nclient end of the connection:\n\no If LOCAL is specified, the file is read by the client program on the\n client host and sent to the server. The file can be given as a full\n path name to specify its exact location. If given as a relative path\n name, the name is interpreted relative to the directory in which the\n client program was started.\n\no If LOCAL is not specified, the file must be located on the server\n host and is read directly by the server. The server uses the\n following rules to locate the file:\n\n o If the file name is an absolute path name, the server uses it as\n given.\n\n o If the file name is a relative path name with one or more leading\n components, the server searches for the file relative to the\n server\'s data directory.\n\n o If a file name with no leading components is given, the server\n looks for the file in the database directory of the default\n database.\n\nNote that, in the non-LOCAL case, these rules mean that a file named as\n./myfile.txt is read from the server\'s data directory, whereas the file\nnamed as myfile.txt is read from the database directory of the default\ndatabase. For example, if db1 is the default database, the following\nLOAD DATA statement reads the file data.txt from the database directory\nfor db1, even though the statement explicitly loads the file into a\ntable in the db2 database:\n\nLOAD DATA INFILE \'data.txt\' INTO TABLE db2.my_table;\n\nWindows path names are specified using forward slashes rather than\nbackslashes. If you do use backslashes, you must double them.\n\nFor security reasons, when reading text files located on the server,\nthe files must either reside in the database directory or be readable\nby all. Also, to use LOAD DATA INFILE on server files, you must have\nthe FILE privilege. See\nhttp://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html. For\nnon-LOCAL load operations, if the secure_file_priv system variable is\nset to a non-empty directory name, the file to be loaded must be\nlocated in that directory.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-data.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-data.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (420,23,'MULTILINESTRING','MultiLineString(ls1,ls2,...)\n\nConstructs a WKB MultiLineString value using WKB LineString arguments.\nIf any argument is not a WKB LineString, the return value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (421,30,'LOCALTIME','Syntax:\nLOCALTIME, LOCALTIME()\n\nLOCALTIME and LOCALTIME() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (422,3,'MPOINTFROMTEXT','MPointFromText(wkt[,srid]), MultiPointFromText(wkt[,srid])\n\nConstructs a MULTIPOINT value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (423,20,'BLOB','BLOB[(M)]\n\nA BLOB column with a maximum length of 65,535 (216 - 1) bytes. Each\nBLOB value is stored using a two-byte length prefix that indicates the\nnumber of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest BLOB type large enough to hold\nvalues M bytes long.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (424,11,'SHA1','Syntax:\nSHA1(str), SHA(str)\n\nCalculates an SHA-1 160-bit checksum for the string, as described in\nRFC 3174 (Secure Hash Algorithm). The value is returned as a binary\nstring of 40 hex digits, or NULL if the argument was NULL. One of the\npossible uses for this function is as a hash key. You can also use it\nas a cryptographic function for storing passwords. SHA() is synonymous\nwith SHA1().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT SHA1(\'abc\');\n -> \'a9993e364706816aba3e25717850c26c9cd0d89d\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (425,35,'SUBSTR','Syntax:\nSUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str\nFROM pos FOR len)\n\nSUBSTR() is a synonym for SUBSTRING().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (426,11,'PASSWORD','Syntax:\nPASSWORD(str)\n\nCalculates and returns a password string from the plaintext password\nstr and returns a binary string, or NULL if the argument was NULL. This\nis the function that is used for encrypting MySQL passwords for storage\nin the Password column of the user grant table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT PASSWORD(\'badpwd\');\n -> \'*AAB3E285149C0135D51A520E1940DD3263DC008C\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (427,20,'CHAR','[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA fixed-length string that is always right-padded with spaces to the\nspecified length when stored. M represents the column length in\ncharacters. The range of M is 0 to 255. If M is omitted, the length is\n1.\n\n*Note*: Trailing spaces are removed when CHAR values are retrieved\nunless the PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (428,30,'UTC_DATE','Syntax:\nUTC_DATE, UTC_DATE()\n\nReturns the current UTC date as a value in \'YYYY-MM-DD\' or YYYYMMDD\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_DATE(), UTC_DATE() + 0;\n -> \'2003-08-14\', 20030814\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (429,34,'DIMENSION','Dimension(g)\n\nReturns the inherent dimension of the geometry value g. The result can\nbe -1, 0, 1, or 2. The meaning of these values is given in\nhttp://dev.mysql.com/doc/refman/5.1/en/gis-class-geometry.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT Dimension(GeomFromText(\'LineString(1 1,2 2)\'));\n+------------------------------------------------+\n| Dimension(GeomFromText(\'LineString(1 1,2 2)\')) |\n+------------------------------------------------+\n| 1 |\n+------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (430,16,'COUNT DISTINCT','Syntax:\nCOUNT(DISTINCT expr,[expr...])\n\nReturns a count of the number of different non-NULL values.\n\nCOUNT(DISTINCT) returns 0 if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT COUNT(DISTINCT results) FROM student;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (431,20,'BIT','BIT[(M)]\n\nA bit-field type. M indicates the number of bits per value, from 1 to\n64. The default is 1 if M is omitted.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (432,29,'EQUALS','Equals(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially equal to g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (433,26,'SHOW CREATE VIEW','Syntax:\nSHOW CREATE VIEW view_name\n\nThis statement shows a CREATE VIEW statement that creates the given\nview.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (434,17,'INTERVAL','Syntax:\nINTERVAL(N,N1,N2,N3,...)\n\nReturns 0 if N < N1, 1 if N < N2 and so on or -1 if N is NULL. All\narguments are treated as integers. It is required that N1 < N2 < N3 <\n... < Nn for this function to work correctly. This is because a binary\nsearch is used (very fast).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);\n -> 3\nmysql> SELECT INTERVAL(10, 1, 10, 100, 1000);\n -> 2\nmysql> SELECT INTERVAL(22, 23, 30, 44, 200);\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (435,30,'FROM_DAYS','Syntax:\nFROM_DAYS(N)\n\nGiven a day number N, returns a DATE value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_DAYS(730669);\n -> \'2007-07-03\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (436,37,'ALTER PROCEDURE','Syntax:\nALTER PROCEDURE proc_name [characteristic ...]\n\ncharacteristic:\n { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nThis statement can be used to change the characteristics of a stored\nprocedure. More than one change may be specified in an ALTER PROCEDURE\nstatement. However, you cannot change the parameters or body of a\nstored procedure using this statement; to make such changes, you must\ndrop and re-create the procedure using DROP PROCEDURE and CREATE\nPROCEDURE.\n\nYou must have the ALTER ROUTINE privilege for the procedure. (That\nprivilege is granted automatically to the procedure creator.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-procedure.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (437,18,'BIT_COUNT','Syntax:\nBIT_COUNT(N)\n\nReturns the number of bits that are set in the argument N.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT BIT_COUNT(29), BIT_COUNT(b\'101010\');\n -> 4, 3\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (438,35,'OCTET_LENGTH','Syntax:\nOCTET_LENGTH(str)\n\nOCTET_LENGTH() is a synonym for LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (439,30,'UTC_TIMESTAMP','Syntax:\nUTC_TIMESTAMP, UTC_TIMESTAMP()\n\nReturns the current UTC date and time as a value in \'YYYY-MM-DD\nHH:MM:SS\' or YYYYMMDDHHMMSS.uuuuuu format, depending on whether the\nfunction is used in a string or numeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;\n -> \'2003-08-14 18:08:04\', 20030814180804.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (440,11,'AES_ENCRYPT','Syntax:\nAES_ENCRYPT(str,key_str)\n\nAES_ENCRYPT() and AES_DECRYPT() allow encryption and decryption of data\nusing the official AES (Advanced Encryption Standard) algorithm,\npreviously known as "Rijndael." Encoding with a 128-bit key length is\nused, but you can extend it up to 256 bits by modifying the source. We\nchose 128 bits because it is much faster and it is secure enough for\nmost purposes.\n\nAES_ENCRYPT() encrypts a string and returns a binary string.\nAES_DECRYPT() decrypts the encrypted string and returns the original\nstring. The input arguments may be any length. If either argument is\nNULL, the result of this function is also NULL.\n\nBecause AES is a block-level algorithm, padding is used to encode\nuneven length strings and so the result string length may be calculated\nusing this formula:\n\n16 x (trunc(string_length / 16) + 1)\n\nIf AES_DECRYPT() detects invalid data or incorrect padding, it returns\nNULL. However, it is possible for AES_DECRYPT() to return a non-NULL\nvalue (possibly garbage) if the input data or the key is invalid.\n\nYou can use the AES functions to store data in an encrypted form by\nmodifying your queries:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','INSERT INTO t VALUES (1,AES_ENCRYPT(\'text\',\'password\'));\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (441,4,'+','Syntax:\n+\n\nAddition:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3+5;\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (442,14,'INET_NTOA','Syntax:\nINET_NTOA(expr)\n\nGiven a numeric network address in network byte order (4 or 8 byte),\nreturns the dotted-quad representation of the address as a string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_NTOA(3520061480);\n -> \'209.207.224.40\'\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (443,4,'ACOS','Syntax:\nACOS(X)\n\nReturns the arc cosine of X, that is, the value whose cosine is X.\nReturns NULL if X is not in the range -1 to 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ACOS(1);\n -> 0\nmysql> SELECT ACOS(1.0001);\n -> NULL\nmysql> SELECT ACOS(0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (444,8,'ISOLATION','Syntax:\nSET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL\n {\n READ UNCOMMITTED\n | READ COMMITTED\n | REPEATABLE READ\n | SERIALIZABLE\n }\n\nThis statement sets the transaction isolation level globally, for the\ncurrent session, or for the next transaction:\n\no With the GLOBAL keyword, the statement sets the default transaction\n level globally for all subsequent sessions. Existing sessions are\n unaffected.\n\no With the SESSION keyword, the statement sets the default transaction\n level for all subsequent transactions performed within the current\n session.\n\no Without any SESSION or GLOBAL keyword, the statement sets the\n isolation level for the next (not started) transaction performed\n within the current session.\n\nA change to the global default isolation level requires the SUPER\nprivilege. Any session is free to change its session isolation level\n(even in the middle of a transaction), or the isolation level for its\nnext transaction.\n\nTo set the global default isolation level at server startup, use the\n--transaction-isolation=level option to mysqld on the command line or\nin an option file. Values of level for this option use dashes rather\nthan spaces, so the allowable values are READ-UNCOMMITTED,\nREAD-COMMITTED, REPEATABLE-READ, or SERIALIZABLE. For example, to set\nthe default isolation level to REPEATABLE READ, use these lines in the\n[mysqld] section of an option file:\n\n[mysqld]\ntransaction-isolation = REPEATABLE-READ\n\nTo determine the global and session transaction isolation levels at\nruntime, check the value of the tx_isolation system variable:\n\nSELECT @@GLOBAL.tx_isolation, @@tx_isolation;\n\nInnoDB supports each of the translation isolation levels described here\nusing different locking strategies. The default level is REPEATABLE\nREAD. For additional information about InnoDB record-level locks and\nhow it uses them to execute various types of statements, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-record-level-locks.html,… http://dev.mysql.com/doc/refman/5.1/en/innodb-locks-set.html.\n\nThe following list describes how MySQL supports the different\ntransaction levels:\n\no READ UNCOMMITTED\n\n SELECT statements are performed in a non-locking fashion, but a\n possible earlier version of a row might be used. Thus, using this\n isolation level, such reads are not consistent. This is also called a\n "dirty read." Otherwise, this isolation level works like READ\n COMMITTED.\n\no READ COMMITTED\n\n A somewhat Oracle-like isolation level with respect to consistent\n (non-locking) reads: Each consistent read, even within the same\n transaction, sets and reads its own fresh snapshot. See\n http://dev.mysql.com/doc/refman/5.1/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n InnoDB locks only index records, not the gaps before them, and thus\n allows the free insertion of new records next to locked records. For\n UPDATE and DELETE statements, locking depends on whether the\n statement uses a unique index with a unique search condition (such as\n WHERE id = 100), or a range-type search condition (such as WHERE id >\n 100). For a unique index with a unique search condition, InnoDB locks\n only the index record found, not the gap before it. For range-type\n searches, InnoDB locks the index range scanned, using gap locks or\n next-key (gap plus index-record) locks to block insertions by other\n sessions into the gaps covered by the range. This is necessary\n because "phantom rows" must be blocked for MySQL replication and\n recovery to work.\n\n *Note*: In MySQL 5.1, if the READ COMMITTED isolation level is used\n or the innodb_locks_unsafe_for_binlog system variable is enabled,\n there is no InnoDB gap locking except for foreign-key constraint\n checking and duplicate-key checking. Also, record locks for\n non-matching rows are released after MySQL has evaluated the WHERE\n condition. As of MySQL 5.1, if you use READ COMMITTED or enable\n innodb_locks_unsafe_for_binlog, you must use row-based binary\n logging.\n\no REPEATABLE READ\n\n This is the default isolation level for InnoDB. For consistent reads,\n there is an important difference from the READ COMMITTED isolation\n level: All consistent reads within the same transaction read the\n snapshot established by the first read. This convention means that if\n you issue several plain (non-locking) SELECT statements within the\n same transaction, these SELECT statements are consistent also with\n respect to each other. See\n http://dev.mysql.com/doc/refman/5.1/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n UPDATE, and DELETE statements, locking depends on whether the\n statement uses a unique index with a unique search condition, or a\n range-type search condition. For a unique index with a unique search\n condition, InnoDB locks only the index record found, not the gap\n before it. For other search conditions, InnoDB locks the index range\n scanned, using gap locks or next-key (gap plus index-record) locks to\n block insertions by other sessions into the gaps covered by the\n range.\n\no SERIALIZABLE\n\n This level is like REPEATABLE READ, but InnoDB implicitly converts\n all plain SELECT statements to SELECT ... LOCK IN SHARE MODE if\n autocommit is disabled. If autocommit is enabled, the SELECT is its\n own transaction. It therefore is known to be read only and can be\n serialized if performed as a consistent (non-locking) read and need\n not block for other transactions. (This means that to force a plain\n SELECT to block if other transactions have modified the selected\n rows, you should disable autocommit.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (445,4,'CEILING','Syntax:\nCEILING(X)\n\nReturns the smallest integer value not less than X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CEILING(1.23);\n -> 2\nmysql> SELECT CEILING(-1.23);\n -> -1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (446,4,'SIN','Syntax:\nSIN(X)\n\nReturns the sine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT SIN(PI());\n -> 1.2246063538224e-16\nmysql> SELECT ROUND(SIN(PI()));\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (447,30,'DAYOFWEEK','Syntax:\nDAYOFWEEK(date)\n\nReturns the weekday index for date (1 = Sunday, 2 = Monday, ..., 7 =\nSaturday). These index values correspond to the ODBC standard.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFWEEK(\'2007-02-03\');\n -> 7\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (448,26,'SHOW PROCESSLIST','Syntax:\nSHOW [FULL] PROCESSLIST\n\nSHOW PROCESSLIST shows you which threads are running. You can also get\nthis information from the INFORMATION_SCHEMA PROCESSLIST table or the\nmysqladmin processlist command. If you have the PROCESS privilege, you\ncan see all threads. Otherwise, you can see only your own threads (that\nis, threads associated with the MySQL account that you are using). If\nyou do not use the FULL keyword, only the first 100 characters of each\nstatement are shown in the Info field.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (449,31,'LINEFROMWKB','LineFromWKB(wkb[,srid]), LineStringFromWKB(wkb[,srid])\n\nConstructs a LINESTRING value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (450,34,'GEOMETRYTYPE','GeometryType(g)\n\nReturns as a string the name of the geometry type of which the geometry\ninstance g is a member. The name corresponds to one of the instantiable\nGeometry subclasses.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT GeometryType(GeomFromText(\'POINT(1 1)\'));\n+------------------------------------------+\n| GeometryType(GeomFromText(\'POINT(1 1)\')) |\n+------------------------------------------+\n| POINT |\n+------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (451,37,'CREATE VIEW','Syntax:\nCREATE\n [OR REPLACE]\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = { user | CURRENT_USER }]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThe CREATE VIEW statement creates a new view, or replaces an existing\none if the OR REPLACE clause is given. If the view does not exist,\nCREATE OR REPLACE VIEW is the same as CREATE VIEW. If the view does\nexist, CREATE OR REPLACE VIEW is the same as ALTER VIEW.\n\nThe select_statement is a SELECT statement that provides the definition\nof the view. (When you select from the view, you select in effect using\nthe SELECT statement.) select_statement can select from base tables or\nother views.\n\nThe view definition is "frozen" at creation time, so changes to the\nunderlying tables afterward do not affect the view definition. For\nexample, if a view is defined as SELECT * on a table, new columns added\nto the table later do not become part of the view.\n\nThe ALGORITHM clause affects how MySQL processes the view. The DEFINER\nand SQL SECURITY clauses specify the security context to be used when\nchecking access privileges at view invocation time. The WITH CHECK\nOPTION clause can be given to constrain inserts or updates to rows in\ntables referenced by the view. These clauses are described later in\nthis section.\n\nThe CREATE VIEW statement requires the CREATE VIEW privilege for the\nview, and some privilege for each column selected by the SELECT\nstatement. For columns used elsewhere in the SELECT statement you must\nhave the SELECT privilege. If the OR REPLACE clause is present, you\nmust also have the DROP privilege for the view.\n\nA view belongs to a database. By default, a new view is created in the\ndefault database. To create the view explicitly in a given database,\nspecify the name as db_name.view_name when you create it.\n\nmysql> CREATE VIEW test.v AS SELECT * FROM t;\n\nBase tables and views share the same namespace within a database, so a\ndatabase cannot contain a base table and a view that have the same\nname.\n\nViews must have unique column names with no duplicates, just like base\ntables. By default, the names of the columns retrieved by the SELECT\nstatement are used for the view column names. To define explicit names\nfor the view columns, the optional column_list clause can be given as a\nlist of comma-separated identifiers. The number of names in column_list\nmust be the same as the number of columns retrieved by the SELECT\nstatement.\n\n*Note*: Prior to MySQL 5.1.29, When you modify an existing view, the\ncurrent view definition is backed up and saved. It is stored in that\ntable\'s database directory, in a subdirectory named arc. The backup\nfile for a view v is named v.frm-00001. If you alter the view again,\nthe next backup is named v.frm-00002. The three latest view backup\ndefinitions are stored. Backed up view definitions are not preserved by\nmysqldump, or any other such programs, but you can retain them using a\nfile copy operation. However, they are not needed for anything but to\nprovide you with a backup of your previous view definition. It is safe\nto remove these backup definitions, but only while mysqld is not\nrunning. If you delete the arc subdirectory or its files while mysqld\nis running, you will receive an error the next time you try to alter\nthe view: mysql> ALTER VIEW v AS SELECT * FROM t; ERROR 6 (HY000):\nError on delete of \'.\\test\\arc/v.frm-0004\' (Errcode: 2)\n\nColumns retrieved by the SELECT statement can be simple references to\ntable columns. They can also be expressions that use functions,\nconstant values, operators, and so forth.\n\nUnqualified table or view names in the SELECT statement are interpreted\nwith respect to the default database. A view can refer to tables or\nviews in other databases by qualifying the table or view name with the\nproper database name.\n\nA view can be created from many kinds of SELECT statements. It can\nrefer to base tables or other views. It can use joins, UNION, and\nsubqueries. The SELECT need not even refer to any tables. The following\nexample defines a view that selects two columns from another table, as\nwell as an expression calculated from those columns:\n\nmysql> CREATE TABLE t (qty INT, price INT);\nmysql> INSERT INTO t VALUES(3, 50);\nmysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;\nmysql> SELECT * FROM v;\n+------+-------+-------+\n| qty | price | value |\n+------+-------+-------+\n| 3 | 50 | 150 |\n+------+-------+-------+\n\nA view definition is subject to the following restrictions:\n\no The SELECT statement cannot contain a subquery in the FROM clause.\n\no The SELECT statement cannot refer to system or user variables.\n\no Within a stored program, the definition cannot refer to program\n parameters or local variables.\n\no The SELECT statement cannot refer to prepared statement parameters.\n\no Any table or view referred to in the definition must exist. However,\n after a view has been created, it is possible to drop a table or view\n that the definition refers to. In this case, use of the view results\n in an error. To check a view definition for problems of this kind,\n use the CHECK TABLE statement.\n\no The definition cannot refer to a TEMPORARY table, and you cannot\n create a TEMPORARY view.\n\no Any tables named in the view definition must exist at definition\n time.\n\no You cannot associate a trigger with a view.\n\nORDER BY is allowed in a view definition, but it is ignored if you\nselect from a view using a statement that has its own ORDER BY.\n\nFor other options or clauses in the definition, they are added to the\noptions or clauses of the statement that references the view, but the\neffect is undefined. For example, if a view definition includes a LIMIT\nclause, and you select from the view using a statement that has its own\nLIMIT clause, it is undefined which limit applies. This same principle\napplies to options such as ALL, DISTINCT, or SQL_SMALL_RESULT that\nfollow the SELECT keyword, and to clauses such as INTO, FOR UPDATE,\nLOCK IN SHARE MODE, and PROCEDURE.\n\nIf you create a view and then change the query processing environment\nby changing system variables, that may affect the results that you get\nfrom the view:\n\nmysql> CREATE VIEW v (mycol) AS SELECT \'abc\';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SET sql_mode = \'\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT "mycol" FROM v;\n+-------+\n| mycol |\n+-------+\n| mycol | \n+-------+\n1 row in set (0.01 sec)\n\nmysql> SET sql_mode = \'ANSI_QUOTES\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT "mycol" FROM v;\n+-------+\n| mycol |\n+-------+\n| abc | \n+-------+\n1 row in set (0.00 sec)\n\nThe DEFINER and SQL SECURITY clauses determine which MySQL account to\nuse when checking access privileges for the view when a statement is\nexecuted that references the view. They were addded in MySQL 5.1.2. The\nlegal SQL SECURITY characteristic values are DEFINER and INVOKER. These\nindicate that the required privileges must be held by the user who\ndefined or invoked the view, respectively. The default SQL SECURITY\nvalue is DEFINER.\n\nIf a user value is given for the DEFINER clause, it should be a MySQL\naccount in \'user_name\'@\'host_name\' format (the same format used in the\nGRANT statement). The user_name and host_name values both are required.\nThe definer can also be given as CURRENT_USER or CURRENT_USER(). The\ndefault DEFINER value is the user who executes the CREATE VIEW\nstatement. This is the same as specifying DEFINER = CURRENT_USER\nexplicitly.\n\nIf you specify the DEFINER clause, these rules determine the legal\nDEFINER user values:\n\no If you do not have the SUPER privilege, the only legal user value is\n your own account, either specified literally or by using\n CURRENT_USER. You cannot set the definer to some other account.\n\no If you have the SUPER privilege, you can specify any syntactically\n legal account name. If the account does not actually exist, a warning\n is generated.\n\no If the SQL SECURITY value is DEFINER but the definer account does not\n exist when the view is referenced, an error occurs.\n\nWithin a view definition, CURRENT_USER returns the view\'s DEFINER value\nby default as of MySQL 5.1.12. For older versions, and for views\ndefined with the SQL SECURITY INVOKER characteristic, CURRENT_USER\nreturns the account for the view\'s invoker. For information about user\nauditing within views, see\nhttp://dev.mysql.com/doc/refman/5.1/en/account-activity-auditing.html.… a stored routine that is defined with the SQL SECURITY DEFINER\ncharacteristic, CURRENT_USER returns the routine\'s DEFINER value. This\nalso affects a view defined within such a program, if the view\ndefinition contains a DEFINER value of CURRENT_USER.\n\nAs of MySQL 5.1.2 (when the DEFINER and SQL SECURITY clauses were\nimplemented), view privileges are checked like this:\n\no At view definition time, the view creator must have the privileges\n needed to use the top-level objects accessed by the view. For\n example, if the view definition refers to table columns, the creator\n must have privileges for the columns, as described previously. If the\n definition refers to a stored function, only the privileges needed to\n invoke the function can be checked. The privileges required when the\n function runs can be checked only as it executes: For different\n invocations of the function, different execution paths within the\n function might be taken.\n\no When a view is referenced, privileges for objects accessed by the\n view are checked against the privileges held by the view creator or\n invoker, depending on whether the SQL SECURITY characteristic is\n DEFINER or INVOKER, respectively.\n\no If reference to a view causes execution of a stored function,\n privilege checking for statements executed within the function depend\n on whether the function is defined with a SQL SECURITY characteristic\n of DEFINER or INVOKER. If the security characteristic is DEFINER, the\n function runs with the privileges of its creator. If the\n characteristic is INVOKER, the function runs with the privileges\n determined by the view\'s SQL SECURITY characteristic.\n\nPrior to MySQL 5.1.2 (before the DEFINER and SQL SECURITY clauses were\nimplemented), privileges required for objects used in a view are\nchecked at view creation time.\n\nExample: A view might depend on a stored function, and that function\nmight invoke other stored routines. For example, the following view\ninvokes a stored function f():\n\nCREATE VIEW v AS SELECT * FROM t WHERE t.id = f(t.name);\n\nSuppose that f() contains a statement such as this:\n\nIF name IS NULL then\n CALL p1();\nELSE\n CALL p2();\nEND IF;\n\nThe privileges required for executing statements within f() need to be\nchecked when f() executes. This might mean that privileges are needed\nfor p1() or p2(), depending on the execution path within f(). Those\nprivileges must be checked at runtime, and the user who must possess\nthe privileges is determined by the SQL SECURITY values of the view v\nand the function f().\n\nThe DEFINER and SQL SECURITY clauses for views are extensions to\nstandard SQL. In standard SQL, views are handled using the rules for\nSQL SECURITY INVOKER.\n\nIf you invoke a view that was created before MySQL 5.1.2, it is treated\nas though it was created with a SQL SECURITY DEFINER clause and with a\nDEFINER value that is the same as your account. However, because the\nactual definer is unknown, MySQL issues a warning. To make the warning\ngo away, it is sufficient to re-create the view so that the view\ndefinition includes a DEFINER clause.\n\nThe optional ALGORITHM clause is a MySQL extension to standard SQL. It\naffects how MySQL processes the view. ALGORITHM takes three values:\nMERGE, TEMPTABLE, or UNDEFINED. The default algorithm is UNDEFINED if\nno ALGORITHM clause is present. For more information, see\nhttp://dev.mysql.com/doc/refman/5.1/en/view-algorithms.html.\n\nSome views are updatable. That is, you can use them in statements such\nas UPDATE, DELETE, or INSERT to update the contents of the underlying\ntable. For a view to be updatable, there must be a one-to-one\nrelationship between the rows in the view and the rows in the\nunderlying table. There are also certain other constructs that make a\nview non-updatable.\n\nThe WITH CHECK OPTION clause can be given for an updatable view to\nprevent inserts or updates to rows except those for which the WHERE\nclause in the select_statement is true.\n\nIn a WITH CHECK OPTION clause for an updatable view, the LOCAL and\nCASCADED keywords determine the scope of check testing when the view is\ndefined in terms of another view. The LOCAL keyword restricts the CHECK\nOPTION only to the view being defined. CASCADED causes the checks for\nunderlying views to be evaluated as well. When neither keyword is\ngiven, the default is CASCADED.\n\nFor more information about updatable views and the WITH CHECK OPTION\nclause, see\nhttp://dev.mysql.com/doc/refman/5.1/en/view-updatability.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-view.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (452,35,'TRIM','Syntax:\nTRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr\nFROM] str)\n\nReturns the string str with all remstr prefixes or suffixes removed. If\nnone of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is\nassumed. remstr is optional and, if not specified, spaces are removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT TRIM(\' bar \');\n -> \'bar\'\nmysql> SELECT TRIM(LEADING \'x\' FROM \'xxxbarxxx\');\n -> \'barxxx\'\nmysql> SELECT TRIM(BOTH \'x\' FROM \'xxxbarxxx\');\n -> \'bar\'\nmysql> SELECT TRIM(TRAILING \'xyz\' FROM \'barxxyz\');\n -> \'barx\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (453,17,'IS','Syntax:\nIS boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;\n -> 1, 1, 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (454,30,'GET_FORMAT','Syntax:\nGET_FORMAT({DATE|TIME|DATETIME}, {\'EUR\'|\'USA\'|\'JIS\'|\'ISO\'|\'INTERNAL\'})\n\nReturns a format string. This function is useful in combination with\nthe DATE_FORMAT() and the STR_TO_DATE() functions.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2003-10-03\',GET_FORMAT(DATE,\'EUR\'));\n -> \'03.10.2003\'\nmysql> SELECT STR_TO_DATE(\'10.31.2003\',GET_FORMAT(DATE,\'USA\'));\n -> \'2003-10-31\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (455,20,'TINYBLOB','TINYBLOB\n\nA BLOB column with a maximum length of 255 (28 - 1) bytes. Each\nTINYBLOB value is stored using a one-byte length prefix that indicates\nthe number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (456,8,'SAVEPOINT','Syntax:\nSAVEPOINT identifier\nROLLBACK [WORK] TO [SAVEPOINT] identifier\nRELEASE SAVEPOINT identifier\n\nInnoDB supports the SQL statements SAVEPOINT, ROLLBACK TO SAVEPOINT,\nRELEASE SAVEPOINT and the optional WORK keyword for ROLLBACK.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/savepoint.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/savepoint.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (457,15,'USER','Syntax:\nUSER()\n\nReturns the current MySQL user name and host name as a string in the\nutf8 character set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (458,37,'ALTER TABLE','Syntax:\nALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name\n alter_specification [, alter_specification] ...\n\nalter_specification:\n table_option ...\n | ADD [COLUMN] col_name column_definition\n [FIRST | AFTER col_name ]\n | ADD [COLUMN] (col_name column_definition,...)\n | ADD {INDEX|KEY} [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]] PRIMARY KEY\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n UNIQUE [INDEX|KEY] [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD FULLTEXT [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD SPATIAL [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n FOREIGN KEY [index_name] (index_col_name,...)\n reference_definition\n | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}\n | CHANGE [COLUMN] old_col_name new_col_name column_definition\n [FIRST|AFTER col_name]\n | MODIFY [COLUMN] col_name column_definition\n [FIRST | AFTER col_name]\n | DROP [COLUMN] col_name\n | DROP PRIMARY KEY\n | DROP {INDEX|KEY} index_name\n | DROP FOREIGN KEY fk_symbol\n | DISABLE KEYS\n | ENABLE KEYS\n | RENAME [TO] new_tbl_name\n | ORDER BY col_name [, col_name] ...\n | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]\n | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]\n | DISCARD TABLESPACE\n | IMPORT TABLESPACE\n | partition_options\n | ADD PARTITION (partition_definition)\n | DROP PARTITION partition_names\n | COALESCE PARTITION number\n | REORGANIZE PARTITION [partition_names INTO (partition_definitions)]\n | ANALYZE PARTITION partition_names\n | CHECK PARTITION partition_names\n | OPTIMIZE PARTITION partition_names\n | REBUILD PARTITION partition_names\n | REPAIR PARTITION partition_names\n | REMOVE PARTITIONING\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n\nALTER TABLE enables you to change the structure of an existing table.\nFor example, you can add or delete columns, create or destroy indexes,\nchange the type of existing columns, or rename columns or the table\nitself. You can also change the comment for the table and type of the\ntable.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (459,31,'MPOINTFROMWKB','MPointFromWKB(wkb[,srid]), MultiPointFromWKB(wkb[,srid])\n\nConstructs a MULTIPOINT value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (460,20,'CHAR BYTE','The CHAR BYTE data type is an alias for the BINARY data type. This is a\ncompatibility feature.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (461,19,'REPAIR TABLE','Syntax:\nREPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n [QUICK] [EXTENDED] [USE_FRM]\n\nREPAIR TABLE repairs a possibly corrupted table. By default, it has the\nsame effect as myisamchk --recover tbl_name. REPAIR TABLE works for\nMyISAM and for ARCHIVE tables. Starting with MySQL 5.1.9, REPAIR is\nalso valid for CSV tables. See\nhttp://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html, and\nhttp://dev.mysql.com/doc/refman/5.1/en/archive-storage-engine.html, and\nhttp://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, REPAIR TABLE is also supported for\npartitioned tables. However, the USE_FRM option cannot be used with\nthis statement on a partitioned table.\n\nAlso beginning with MySQL 5.1.27, you can use ALTER TABLE ... REPAIR\nPARTITION to repair one or more partitions; for more information, see\n[HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/repair-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/repair-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (462,37,'MERGE','The MERGE storage engine, also known as the MRG_MyISAM engine, is a\ncollection of identical MyISAM tables that can be used as one.\n"Identical" means that all tables have identical column and index\ninformation. You cannot merge MyISAM tables in which the columns are\nlisted in a different order, do not have exactly the same columns, or\nhave the indexes in different order. However, any or all of the MyISAM\ntables can be compressed with myisampack. See\nhttp://dev.mysql.com/doc/refman/5.1/en/myisampack.html. Differences in\ntable options such as AVG_ROW_LENGTH, MAX_ROWS, or PACK_KEYS do not\nmatter.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html\n\n','mysql> CREATE TABLE t1 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> CREATE TABLE t2 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> INSERT INTO t1 (message) VALUES (\'Testing\'),(\'table\'),(\'t1\');\nmysql> INSERT INTO t2 (message) VALUES (\'Testing\'),(\'table\'),(\'t2\');\nmysql> CREATE TABLE total (\n -> a INT NOT NULL AUTO_INCREMENT,\n -> message CHAR(20), INDEX(a))\n -> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;\n','http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (463,37,'CREATE TABLE','Syntax:\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n (create_definition,...)\n [table_option] ...\n [partition_options]\n\nOr:\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n [(create_definition,...)]\n [table_option] ...\n [partition_options]\n select_statement\n\nOr:\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n { LIKE old_tbl_name | (LIKE old_tbl_name) }\n\ncreate_definition:\n col_name column_definition\n | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)\n [index_option] ...\n | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]\n [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name,...) reference_definition\n | CHECK (expr)\n\ncolumn_definition:\n data_type [NOT NULL | NULL] [DEFAULT default_value]\n [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]\n [COMMENT \'string\']\n [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]\n [STORAGE {DISK|MEMORY|DEFAULT}]\n [reference_definition]\n\ndata_type:\n BIT[(length)]\n | TINYINT[(length)] [UNSIGNED] [ZEROFILL]\n | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]\n | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]\n | INT[(length)] [UNSIGNED] [ZEROFILL]\n | INTEGER[(length)] [UNSIGNED] [ZEROFILL]\n | BIGINT[(length)] [UNSIGNED] [ZEROFILL]\n | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | DATE\n | TIME\n | TIMESTAMP\n | DATETIME\n | YEAR\n | CHAR[(length)]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | VARCHAR(length)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | BINARY[(length)]\n | VARBINARY(length)\n | TINYBLOB\n | BLOB\n | MEDIUMBLOB\n | LONGBLOB\n | TINYTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | TEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | MEDIUMTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | LONGTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | ENUM(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | SET(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | spatial_type\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n\nreference_definition:\n REFERENCES tbl_name (index_col_name,...)\n [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\ntable_option: \n ENGINE [=] engine_name\n | AUTO_INCREMENT [=] value\n | AVG_ROW_LENGTH [=] value\n | [DEFAULT] CHARACTER SET [=] charset_name\n | CHECKSUM [=] {0 | 1}\n | [DEFAULT] COLLATE [=] collation_name\n | COMMENT [=] \'string\'\n | CONNECTION [=] \'connect_string\'\n | DATA DIRECTORY [=] \'absolute path to directory\'\n | DELAY_KEY_WRITE [=] {0 | 1}\n | INDEX DIRECTORY [=] \'absolute path to directory\'\n | INSERT_METHOD [=] { NO | FIRST | LAST }\n | KEY_BLOCK_SIZE [=] value\n | MAX_ROWS [=] value\n | MIN_ROWS [=] value\n | PACK_KEYS [=] {0 | 1 | DEFAULT}\n | PASSWORD [=] \'string\'\n | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}\n | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}]\n | UNION [=] (tbl_name[,tbl_name]...)\n\npartition_options:\n PARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY(column_list)\n | RANGE(expr)\n | LIST(expr) }\n [PARTITIONS num]\n [SUBPARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY(column_list) }\n [SUBPARTITIONS num]\n ]\n [(partition_definition [, partition_definition] ...)]\n\npartition_definition:\n PARTITION partition_name\n [VALUES {LESS THAN {(expr) | MAXVALUE} | IN (value_list)}]\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n [(subpartition_definition [, subpartition_definition] ...)]\n\nsubpartition_definition:\n SUBPARTITION logical_name\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n\nselect_statement:\n [IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)\n\nCREATE TABLE creates a table with the given name. You must have the\nCREATE privilege for the table.\n\nRules for allowable table names are given in\nhttp://dev.mysql.com/doc/refman/5.1/en/identifiers.html. By default,\nthe table is created in the default database. An error occurs if the\ntable exists, if there is no default database, or if the database does\nnot exist.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (464,17,'>','Syntax:\n>\n\nGreater than:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 > 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (465,19,'ANALYZE TABLE','Syntax:\nANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n\nANALYZE TABLE analyzes and stores the key distribution for a table.\nDuring the analysis, the table is locked with a read lock for MyISAM.\nFor InnoDB the table is locked with a write lock. This statement works\nwith MyISAM, and InnoDB tables. For MyISAM tables, this statement is\nequivalent to using myisamchk --analyze.\n\nFor more information on how the analysis works within InnoDB, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html.\n\nMy… uses the stored key distribution to decide the order in which\ntables should be joined when you perform a join on something other than\na constant. In addition, key distributions can be used when deciding\nwhich indexes to use for a specific table within a query.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, ANALYZE TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... ANALYZE PARTITION to analyze one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (466,30,'MICROSECOND','Syntax:\nMICROSECOND(expr)\n\nReturns the microseconds from the time or datetime expression expr as a\nnumber in the range from 0 to 999999.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MICROSECOND(\'12:00:00.123456\');\n -> 123456\nmysql> SELECT MICROSECOND(\'2009-12-31 23:59:59.000010\');\n -> 10\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (467,37,'CONSTRAINT','InnoDB supports foreign key constraints. The syntax for a foreign key\nconstraint definition in InnoDB looks like this:\n\n[CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name, ...)\n REFERENCES tbl_name (index_col_name,...)\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html\…','CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,\n price DECIMAL,\n PRIMARY KEY(category, id)) ENGINE=INNODB;\nCREATE TABLE customer (id INT NOT NULL,\n PRIMARY KEY (id)) ENGINE=INNODB;\nCREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,\n product_category INT NOT NULL,\n product_id INT NOT NULL,\n customer_id INT NOT NULL,\n PRIMARY KEY(no),\n INDEX (product_category, product_id),\n FOREIGN KEY (product_category, product_id)\n REFERENCES product(category, id)\n ON UPDATE CASCADE ON DELETE RESTRICT,\n INDEX (customer_id),\n FOREIGN KEY (customer_id)\n REFERENCES customer(id)) ENGINE=INNODB;\n','http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (468,37,'CREATE SERVER','Syntax:\nCREATE SERVER server_name\n FOREIGN DATA WRAPPER wrapper_name\n OPTIONS (option [, option] ...)\n\noption:\n { HOST character-literal\n | DATABASE character-literal\n | USER character-literal\n | PASSWORD character-literal\n | SOCKET character-literal\n | OWNER character-literal\n | PORT numeric-literal }\n\nThis statement creates the definition of a server for use with the\nFEDERATED storage engine. The CREATE SERVER statement creates a new row\nwithin the servers table within the mysql database. This statement\nrequires the SUPER privilege.\n\nThe server_name should be a unique reference to the server. Server\ndefinitions are global within the scope of the server, it is not\npossible to qualify the server definition to a specific database.\nserver_name has a maximum length of 64 characters (names longer than 64\ncharacters are silently truncated), and is case insensitive. You may\nspecify the name as a quoted string.\n\nThe wrapper_name should be mysql, and may be quoted with single quotes.\nOther values for wrapper_name are not currently supported.\n\nFor each option you must specify either a character literal or numeric\nliteral. Character literals are UTF-8, support a maximum length of 64\ncharacters and default to a blank (empty) string. String literals are\nsilently truncated to 64 characters. Numeric literals must be a number\nbetween 0 and 9999, default value is 0.\n\n*Note*: Note that the OWNER option is currently not applied, and has no\neffect on the ownership or operation of the server connection that is\ncreated.\n\nThe CREATE SERVER statement creates an entry in the mysql.server table\nthat can later be used with the CREATE TABLE statement when creating a\nFEDERATED table. The options that you specify will be used to populate\nthe columns in the mysql.server table. The table columns are\nServer_name, Host, Db, Username, Password, Port and Socket.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-server.html\n\n','CREATE SERVER s\nFOREIGN DATA WRAPPER mysql\nOPTIONS (USER \'Remote\', HOST \'192.168.1.106\', DATABASE \'test\');\n','http://dev.mysql.com/doc/refman/5.1/en/create-server.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (469,35,'FIELD','Syntax:\nFIELD(str,str1,str2,str3,...)\n\nReturns the index (position) of str in the str1, str2, str3, ... list.\nReturns 0 if str is not found.\n\nIf all arguments to FIELD() are strings, all arguments are compared as\nstrings. If all arguments are numbers, they are compared as numbers.\nOtherwise, the arguments are compared as double.\n\nIf str is NULL, the return value is 0 because NULL fails equality\ncomparison with any value. FIELD() is the complement of ELT().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FIELD(\'ej\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 2\nmysql> SELECT FIELD(\'fo\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (470,30,'MAKETIME','Syntax:\nMAKETIME(hour,minute,second)\n\nReturns a time value calculated from the hour, minute, and second\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MAKETIME(12,15,30);\n -> \'12:15:30\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (471,30,'CURDATE','Syntax:\nCURDATE()\n\nReturns the current date as a value in \'YYYY-MM-DD\' or YYYYMMDD format,\ndepending on whether the function is used in a string or numeric\ncontext.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CURDATE();\n -> \'2008-06-13\'\nmysql> SELECT CURDATE() + 0;\n -> 20080613\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (472,9,'SET PASSWORD','Syntax:\nSET PASSWORD [FOR user] =\n {\n PASSWORD(\'some password\')\n | OLD_PASSWORD(\'some password\')\n | \'encrypted password\'\n }\n\nThe SET PASSWORD statement assigns a password to an existing MySQL user\naccount.\n\nIf the password is specified using the PASSWORD() or OLD_PASSWORD()\nfunction, the literal text of the password should be given. If the\npassword is specified without using either function, the password\nshould be the already-encrypted password value as returned by\nPASSWORD().\n\nWith no FOR clause, this statement sets the password for the current\nuser. Any client that has connected to the server using a non-anonymous\naccount can change the password for that account.\n\nWith a FOR clause, this statement sets the password for a specific\naccount on the current server host. Only clients that have the UPDATE\nprivilege for the mysql database can do this. The user value should be\ngiven in user_name@host_name format, where user_name and host_name are\nexactly as they are listed in the User and Host columns of the\nmysql.user table entry. For example, if you had an entry with User and\nHost column values of \'bob\' and \'%.loc.gov\', you would write the\nstatement like this:\n\nSET PASSWORD FOR \'bob\'@\'%.loc.gov\' = PASSWORD(\'newpass\');\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-password.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-password.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (473,37,'ALTER TABLESPACE','Syntax:\nALTER TABLESPACE tablespace_name\n {ADD|DROP} DATAFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement can be used either to add a new data file, or to drop a\ndata file from a tablespace.\n\nThe ADD DATAFILE variant allows you to specify an initial size using an\nINITIAL_SIZE clause, where size is measured in bytes; the default value\nis 128M (128 megabytes). You may optionally follow this integer value\nwith a one-letter abbreviation for an order of magnitude, similar to\nthose used in my.cnf. Generally, this is one of the letters M (for\nmegabytes) or G (for gigabytes).\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an data file with the same name, or an undo log\nfile and a with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for data files could not be longer than 128 characters.\n(Bug#31770 (http://bugs.mysql.com/31770))\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nOnce a data file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using additional ALTER\nTABLESPACE ... ADD DATAFILE statements.\n\nUsing DROP DATAFILE with ALTER TABLESPACE drops the data file\n\'file_name\' from the tablespace. This file must already have been added\nto the tablespace using CREATE TABLESPACE or ALTER TABLESPACE;\notherwise an error will result.\n\nBoth ALTER TABLESPACE ... ADD DATAFILE and ALTER TABLESPACE ... DROP\nDATAFILE require an ENGINE clause which specifies the storage engine\nused by the tablespace. In MySQL 5.1, the only accepted values for\nengine_name are NDB and NDBCLUSTER.\n\nWAIT is parsed but otherwise ignored, and so has no effect in MySQL\n5.1. It is intended for future expansion.\n\nWhen ALTER TABLESPACE ... ADD DATAFILE is used with ENGINE = NDB, a\ndata file is created on each Cluster data node. You can verify that the\ndata files were created and obtain information about them by querying\nthe INFORMATION_SCHEMA.FILES table. For example, the following query\nshows all data files belonging to the tablespace named newts:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA \n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+--------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+--------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=4 |\n+--------------------+--------------+----------------+\n2 rows in set (0.03 sec)\n\nSee http://dev.mysql.com/doc/refman/5.1/en/files-table.html.\n\nALTER TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (474,20,'ENUM','ENUM(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nAn enumeration. A string object that can have only one value, chosen\nfrom the list of values \'value1\', \'value2\', ..., NULL or the special \'\'\nerror value. An ENUM column can have a maximum of 65,535 distinct\nvalues. ENUM values are represented internally as integers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (475,7,'IF FUNCTION','Syntax:\nIF(expr1,expr2,expr3)\n\nIf expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns\nexpr2; otherwise it returns expr3. IF() returns a numeric or string\nvalue, depending on the context in which it is used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT IF(1>2,2,3);\n -> 3\nmysql> SELECT IF(1<2,\'yes\',\'no\');\n -> \'yes\'\nmysql> SELECT IF(STRCMP(\'test\',\'test1\'),\'no\',\'yes\');\n -> \'no\'\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (476,15,'DATABASE','Syntax:\nDATABASE()\n\nReturns the default (current) database name as a string in the utf8\ncharacter set. If there is no default database, DATABASE() returns\nNULL. Within a stored routine, the default database is the database\nthat the routine is associated with, which is not necessarily the same\nas the database that is the default in the calling context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT DATABASE();\n -> \'test\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (477,31,'POINTFROMWKB','PointFromWKB(wkb[,srid])\n\nConstructs a POINT value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (478,4,'POWER','Syntax:\nPOWER(X,Y)\n\nThis is a synonym for POW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (479,4,'ATAN','Syntax:\nATAN(X)\n\nReturns the arc tangent of X, that is, the value whose tangent is X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(2);\n -> 1.1071487177941\nmysql> SELECT ATAN(-2);\n -> -1.1071487177941\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (480,35,'STRCMP','Syntax:\nSTRCMP(expr1,expr2)\n\nSTRCMP() returns 0 if the strings are the same, -1 if the first\nargument is smaller than the second according to the current sort\norder, and 1 otherwise.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','mysql> SELECT STRCMP(\'text\', \'text2\');\n -> -1\nmysql> SELECT STRCMP(\'text2\', \'text\');\n -> 1\nmysql> SELECT STRCMP(\'text\', \'text\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (481,26,'INSERT DELAYED','Syntax:\nINSERT DELAYED ...\n\nThe DELAYED option for the INSERT statement is a MySQL extension to\nstandard SQL that is very useful if you have clients that cannot or\nneed not wait for the INSERT to complete. This is a common situation\nwhen you use MySQL for logging and you also periodically run SELECT and\nUPDATE statements that take a long time to complete.\n\nWhen a client uses INSERT DELAYED, it gets an okay from the server at\nonce, and the row is queued to be inserted when the table is not in use\nby any other thread.\n\nAnother major benefit of using INSERT DELAYED is that inserts from many\nclients are bundled together and written in one block. This is much\nfaster than performing many separate inserts.\n\nNote that INSERT DELAYED is slower than a normal INSERT if the table is\nnot otherwise in use. There is also the additional overhead for the\nserver to handle a separate thread for each table for which there are\ndelayed rows. This means that you should use INSERT DELAYED only when\nyou are really sure that you need it.\n\nThe queued rows are held only in memory until they are inserted into\nthe table. This means that if you terminate mysqld forcibly (for\nexample, with kill -9) or if mysqld dies unexpectedly, any queued rows\nthat have not been written to disk are lost.\n\nThere are some constraints on the use of DELAYED:\n\no INSERT DELAYED works only with MyISAM, MEMORY, ARCHIVE, and (as of\n MySQL 5.1.19) BLACKHOLE tables. See\n http://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html,\n http://dev.mysql.com/doc/refman/5.1/en/memory-storage-engine.html,\n http://dev.mysql.com/doc/refman/5.1/en/archive-storage-engine.html,\n and\n http://dev.mysql.com/doc/refman/5.1/en/blackhole-storage-engine.html.\n\no For MyISAM tables, if there are no free blocks in the middle of the\n data file, concurrent SELECT and INSERT statements are supported.\n Under these circumstances, you very seldom need to use INSERT DELAYED\n with MyISAM.\n\no INSERT DELAYED should be used only for INSERT statements that specify\n value lists. The server ignores DELAYED for INSERT ... SELECT or\n INSERT ... ON DUPLICATE KEY UPDATE statements.\n\no Because the INSERT DELAYED statement returns immediately, before the\n rows are inserted, you cannot use LAST_INSERT_ID() to get the\n AUTO_INCREMENT value that the statement might generate.\n\no DELAYED rows are not visible to SELECT statements until they actually\n have been inserted.\n\no DELAYED is ignored on slave replication servers, so that INSERT\n DELAYED is treated as a normal INSERT on slaves. This is because\n DELAYED could cause the slave to have different data than the master.\n\no Pending INSERT DELAYED statements are lost if a table is write locked\n and ALTER TABLE is used to modify the table structure.\n\no INSERT DELAYED is not supported for views.\n\no INSERT DELAYED is not supported for partitioned tables.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (482,26,'SHOW PROFILE','Syntax:\nSHOW PROFILES\n\nThe SHOW PROFILE statement display profiling information that indicates\nresource usage for statements executed during the course of the current\nsession. It is used together with SHOW PROFILES; see [HELP SHOW\nPROFILES].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-profile.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-profile.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (483,26,'SHOW PROCEDURE CODE','Syntax:\nSHOW PROCEDURE CODE proc_name\n\nThis statement is a MySQL extension that is available only for servers\nthat have been built with debugging support. It displays a\nrepresentation of the internal implementation of the named stored\nprocedure. A similar statement, SHOW FUNCTION CODE, displays\ninformation about stored functions (see [HELP SHOW FUNCTION CODE]).\n\nBoth statements require that you be the owner of the routine or have\nSELECT access to the mysql.proc table.\n\nIf the named routine is available, each statement produces a result\nset. Each row in the result set corresponds to one "instruction" in the\nroutine. The first column is Pos, which is an ordinal number beginning\nwith 0. The second column is Instruction, which contains an SQL\nstatement (usually changed from the original source), or a directive\nwhich has meaning only to the stored-routine handler.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-procedure-code.html\n\n','mysql> DELIMITER //\nmysql> CREATE PROCEDURE p1 ()\n -> BEGIN\n -> DECLARE fanta INT DEFAULT 55;\n -> DROP TABLE t2;\n -> LOOP\n -> INSERT INTO t3 VALUES (fanta);\n -> END LOOP;\n -> END//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SHOW PROCEDURE CODE p1//\n+-----+----------------------------------------+\n| Pos | Instruction |\n+-----+----------------------------------------+\n| 0 | set fanta@0 55 |\n| 1 | stmt 9 "DROP TABLE t2" |\n| 2 | stmt 5 "INSERT INTO t3 VALUES (fanta)" |\n| 3 | jump 2 |\n+-----+----------------------------------------+\n4 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/show-procedure-code.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (484,20,'MEDIUMTEXT','MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 16,777,215 (224 - 1) characters.\nThe effective maximum length is less if the value contains multi-byte\ncharacters. Each MEDIUMTEXT value is stored using a three-byte length\nprefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (485,4,'LN','Syntax:\nLN(X)\n\nReturns the natural logarithm of X; that is, the base-e logarithm of X.\nIf X is less than or equal to 0, then NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LN(2);\n -> 0.69314718055995\nmysql> SELECT LN(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (486,22,'RETURN','Syntax:\nRETURN expr\n\nThe RETURN statement terminates execution of a stored function and\nreturns the value expr to the function caller. There must be at least\none RETURN statement in a stored function. There may be more than one\nif the function has multiple exit points.\n\nThis statement is not used in stored procedures, triggers, or events.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/return.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/return.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (487,26,'SHOW COLLATION','Syntax:\nSHOW COLLATION\n [LIKE \'pattern\' | WHERE expr]\n\nThe output from SHOW COLLATION includes all available character sets.\nThe LIKE clause, if present, indicates which collation names to match.\nThe WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. For example:\n\nmysql> SHOW COLLATION LIKE \'latin1%\';\n+-------------------+---------+----+---------+----------+---------+\n| Collation | Charset | Id | Default | Compiled | Sortlen |\n+-------------------+---------+----+---------+----------+---------+\n| latin1_german1_ci | latin1 | 5 | | | 0 |\n| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 0 |\n| latin1_danish_ci | latin1 | 15 | | | 0 |\n| latin1_german2_ci | latin1 | 31 | | Yes | 2 |\n| latin1_bin | latin1 | 47 | | Yes | 0 |\n| latin1_general_ci | latin1 | 48 | | | 0 |\n| latin1_general_cs | latin1 | 49 | | | 0 |\n| latin1_spanish_ci | latin1 | 94 | | | 0 |\n+-------------------+---------+----+---------+----------+---------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-collation.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-collation.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (488,4,'LOG','Syntax:\nLOG(X), LOG(B,X)\n\nIf called with one parameter, this function returns the natural\nlogarithm of X. If X is less than or equal to 0, then NULL is returned.\n\nThe inverse of this function (when called with a single argument) is\nthe EXP() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG(2);\n -> 0.69314718055995\nmysql> SELECT LOG(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (489,26,'SET SQL_LOG_BIN','Syntax:\nSET sql_log_bin = {0|1}\n\nDisables or enables binary logging for the current connection\n(sql_log_bin is a session variable) if the client has the SUPER\nprivilege. The statement is refused with an error if the client does\nnot have that privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-sql-log-bin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-sql-log-bin.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (490,17,'!=','Syntax:\n<>, !=\n\nNot equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT \'.01\' <> \'0.01\';\n -> 1\nmysql> SELECT .01 <> \'0.01\';\n -> 0\nmysql> SELECT \'zapp\' <> \'zappp\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (491,22,'WHILE','Syntax:\n[begin_label:] WHILE search_condition DO\n statement_list\nEND WHILE [end_label]\n\nThe statement list within a WHILE statement is repeated as long as the\nsearch_condition is true. statement_list consists of one or more\nstatements.\n\nA WHILE statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/while-statement.html\n\n','CREATE PROCEDURE dowhile()\nBEGIN\n DECLARE v1 INT DEFAULT 5;\n\n WHILE v1 > 0 DO\n ...\n SET v1 = v1 - 1;\n END WHILE;\nEND\n','http://dev.mysql.com/doc/refman/5.1/en/while-statement.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (492,11,'AES_DECRYPT','Syntax:\nAES_DECRYPT(crypt_str,key_str)\n\nThis function allows decryption of data using the official AES\n(Advanced Encryption Standard) algorithm. For more information, see the\ndescription of AES_ENCRYPT().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (493,30,'DAYNAME','Syntax:\nDAYNAME(date)\n\nReturns the name of the weekday for date. As of MySQL 5.1.12, the\nlanguage used for the name is controlled by the value of the\nlc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.1/en/locale-support.html).\n\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYNAME(\'2007-02-03\');\n -> \'Saturday\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (494,15,'COERCIBILITY','Syntax:\nCOERCIBILITY(str)\n\nReturns the collation coercibility value of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT COERCIBILITY(\'abc\' COLLATE latin1_swedish_ci);\n -> 0\nmysql> SELECT COERCIBILITY(USER());\n -> 3\nmysql> SELECT COERCIBILITY(\'abc\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (495,20,'INT','INT[(M)] [UNSIGNED] [ZEROFILL]\n\nA normal-size integer. The signed range is -2147483648 to 2147483647.\nThe unsigned range is 0 to 4294967295.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (496,12,'GLENGTH','GLength(ls)\n\nReturns as a double-precision number the length of the LineString value\nls in its associated spatial reference.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT GLength(GeomFromText(@ls));\n+----------------------------+\n| GLength(GeomFromText(@ls)) |\n+----------------------------+\n| 2.8284271247462 |\n+----------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (497,4,'RADIANS','Syntax:\nRADIANS(X)\n\nReturns the argument X, converted from degrees to radians. (Note that\nπ radians equals 180 degrees.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT RADIANS(90);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (498,15,'COLLATION','Syntax:\nCOLLATION(str)\n\nReturns the collation of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT COLLATION(\'abc\');\n -> \'latin1_swedish_ci\'\nmysql> SELECT COLLATION(_utf8\'abc\');\n -> \'utf8_general_ci\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (499,17,'COALESCE','Syntax:\nCOALESCE(value,...)\n\nReturns the first non-NULL value in the list, or NULL if there are no\nnon-NULL values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT COALESCE(NULL,1);\n -> 1\nmysql> SELECT COALESCE(NULL,NULL,NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (500,15,'VERSION','Syntax:\nVERSION()\n\nReturns a string that indicates the MySQL server version. The string\nuses the utf8 character set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT VERSION();\n -> \'5.1.35-standard\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (501,35,'MAKE_SET','Syntax:\nMAKE_SET(bits,str1,str2,...)\n\nReturns a set value (a string containing substrings separated by ","\ncharacters) consisting of the strings that have the corresponding bit\nin bits set. str1 corresponds to bit 0, str2 to bit 1, and so on. NULL\nvalues in str1, str2, ... are not appended to the result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT MAKE_SET(1,\'a\',\'b\',\'c\');\n -> \'a\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',\'world\');\n -> \'hello,world\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',NULL,\'world\');\n -> \'hello\'\nmysql> SELECT MAKE_SET(0,\'a\',\'b\',\'c\');\n -> \'\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
-insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (502,35,'FIND_IN_SET','Syntax:\nFIND_IN_SET(str,strlist)\n\nReturns a value in the range of 1 to N if the string str is in the\nstring list strlist consisting of N substrings. A string list is a\nstring composed of substrings separated by "," characters. If the first\nargument is a constant string and the second is a column of type SET,\nthe FIND_IN_SET() function is optimized to use bit arithmetic. Returns\n0 if str is not in strlist or if strlist is the empty string. Returns\nNULL if either argument is NULL. This function does not work properly\nif the first argument contains a comma (",") character.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FIND_IN_SET(\'b\',\'a,b,c,d\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (167,25,'SHOW EVENTS','Syntax:\nSHOW EVENTS [{FROM | IN} schema_name]\n [LIKE \'pattern\' | WHERE expr]\n\nIn its simplest form, SHOW EVENTS lists all of the events in the\ncurrent schema:\n\nmysql> SELECT CURRENT_USER(), SCHEMA();\n+----------------+----------+\n| CURRENT_USER() | SCHEMA() |\n+----------------+----------+\n| jon@ghidora | myschema |\n+----------------+----------+\n1 row in set (0.00 sec)\n\nmysql> SHOW EVENTS\\G\n*************************** 1. row ***************************\n Db: myschema\n Name: e_daily\n Definer: jon@ghidora\n Time zone: SYSTEM\n Type: RECURRING\n Execute at: NULL\n Interval value: 10\n Interval field: SECOND\n Starts: 2006-02-09 10:41:23\n Ends: 0000-00-00 00:00:00\n Status: ENABLED\n Originator: 0\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\nThe LIKE clause, if present, indicates which event names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-events.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-events.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (168,15,'CHARSET','Syntax:\nCHARSET(str)\n\nReturns the character set of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT CHARSET(\'abc\');\n -> \'latin1\'\nmysql> SELECT CHARSET(CONVERT(\'abc\' USING utf8));\n -> \'utf8\'\nmysql> SELECT CHARSET(USER());\n -> \'utf8\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (169,30,'SUBDATE','Syntax:\nSUBDATE(date,INTERVAL expr unit), SUBDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, SUBDATE()\nis a synonym for DATE_SUB(). For information on the INTERVAL unit\nargument, see the discussion for DATE_ADD().\n\nmysql> SELECT DATE_SUB(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\nmysql> SELECT SUBDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\n\nThe second form allows the use of an integer value for days. In such\ncases, it is interpreted as the number of days to be subtracted from\nthe date or datetime expression expr.\n\nmysql> SELECT SUBDATE(\'2008-01-02 12:00:00\', 31);\n -> \'2007-12-02 12:00:00\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (170,30,'DAYOFYEAR','Syntax:\nDAYOFYEAR(date)\n\nReturns the day of the year for date, in the range 1 to 366.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFYEAR(\'2007-02-03\');\n -> 34\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (171,20,'LONGTEXT','LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 4,294,967,295 or 4GB (232 - 1)\ncharacters. The effective maximum length is less if the value contains\nmulti-byte characters. The effective maximum length of LONGTEXT columns\nalso depends on the configured maximum packet size in the client/server\nprotocol and available memory. Each LONGTEXT value is stored using a\nfour-byte length prefix that indicates the number of bytes in the\nvalue.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (172,4,'%','Syntax:\nN % M\n\nModulo operation. Returns the remainder of N divided by M. For more\ninformation, see the description for the MOD() function in\nhttp://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html.\n\n…: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (173,25,'KILL','Syntax:\nKILL [CONNECTION | QUERY] thread_id\n\nEach connection to mysqld runs in a separate thread. You can see which\nthreads are running with the SHOW PROCESSLIST statement and kill a\nthread with the KILL thread_id statement.\n\nKILL allows the optional CONNECTION or QUERY modifier:\n\no KILL CONNECTION is the same as KILL with no modifier: It terminates\n the connection associated with the given thread_id.\n\no KILL QUERY terminates the statement that the connection is currently\n executing, but leaves the connection itself intact.\n\nIf you have the PROCESS privilege, you can see all threads. If you have\nthe SUPER privilege, you can kill all threads and statements.\nOtherwise, you can see and kill only your own threads and statements.\n\nYou can also use the mysqladmin processlist and mysqladmin kill\ncommands to examine and kill threads.\n\n*Note*: You cannot use KILL with the Embedded MySQL Server library,\nbecause the embedded server merely runs inside the threads of the host\napplication. It does not create any connection threads of its own.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/kill.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/kill.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (174,29,'DISJOINT','Disjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially disjoint from (does\nnot intersect) g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (175,3,'ASTEXT','AsText(g), AsWKT(g)\n\nConverts a value in internal geometry format to its WKT representation\nand returns the string result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…','mysql> SET @g = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(GeomFromText(@g));\n+--------------------------+\n| AsText(GeomFromText(@g)) |\n+--------------------------+\n| LINESTRING(1 1,2 2,3 3) |\n+--------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (176,35,'LPAD','Syntax:\nLPAD(str,len,padstr)\n\nReturns the string str, left-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters.\n\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LPAD(\'hi\',4,\'??\');\n -> \'??hi\'\nmysql> SELECT LPAD(\'hi\',1,\'??\');\n -> \'h\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (177,19,'RESTORE TABLE','Syntax:\nRESTORE TABLE tbl_name [, tbl_name] ... FROM \'/path/to/backup/directory\'\n\nRESTORE TABLE restores the table or tables from a backup that was made\nwith BACKUP TABLE. The directory should be specified as a full path\nname.\n\nExisting tables are not overwritten; if you try to restore over an\nexisting table, an error occurs. Just as for BACKUP TABLE, RESTORE\nTABLE currently works only for MyISAM tables. Restored tables are not\nreplicated from master to slave.\n\nThe backup for each table consists of its .frm format file and .MYD\ndata file. The restore operation restores those files, and then uses\nthem to rebuild the .MYI index file. Restoring takes longer than\nbacking up due to the need to rebuild the indexes. The more indexes the\ntable has, the longer it takes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/restore-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/restore-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (178,22,'DECLARE CONDITION','Syntax:\nDECLARE condition_name CONDITION FOR condition_value\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | mysql_error_code\n\nThe DECLARE ... CONDITION statement defines a named error condition. It\nspecifies a condition that needs specific handling and associates a\nname with that condition. The name can be referred to in a subsequence\nDECLARE ... HANDLER statement. See [HELP DECLARE HANDLER].\n\nA condition_value for DECLARE ... CONDITION can be an SQLSTATE value (a\n5-character string literal) or a MySQL error code (a number). You\nshould not use SQLSTATE value \'00000\' or MySQL error code 0, because\nthose indicate sucess rather than an error condition. For a list of\nSQLSTATE values and MySQL error codes, see\nhttp://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html.\n\n…: http://dev.mysql.com/doc/refman/5.1/en/declare-condition.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-condition.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (179,29,'OVERLAPS','Overlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially overlaps g2. The term\nspatially overlaps is used if two geometries intersect and their\nintersection results in a geometry of the same dimension but not equal\nto either of the given geometries.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (180,25,'SET GLOBAL SQL_SLAVE_SKIP_COUNTER','Syntax:\nSET GLOBAL SQL_SLAVE_SKIP_COUNTER = N\n\nThis statement skips the next N events from the master. This is useful\nfor recovering from replication stops caused by a statement.\n\nThis statement is valid only when the slave thread is not running.\nOtherwise, it produces an error.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-global-sql-slave-skip-counter.ht…','','http://dev.mysql.com/doc/refman/5.1/en/set-global-sql-slave-skip-counter.ht…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (181,24,'NUMGEOMETRIES','NumGeometries(gc)\n\nReturns the number of geometries in the GeometryCollection value gc.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT NumGeometries(GeomFromText(@gc));\n+----------------------------------+\n| NumGeometries(GeomFromText(@gc)) |\n+----------------------------------+\n| 2 |\n+----------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (182,30,'MONTHNAME','Syntax:\nMONTHNAME(date)\n\nReturns the full name of the month for date. As of MySQL 5.1.12, the\nlanguage used for the name is controlled by the value of the\nlc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.1/en/locale-support.html).\n\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MONTHNAME(\'2008-02-03\');\n -> \'February\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (183,36,'PROCEDURE ANALYSE','Syntax:\nANALYSE([max_elements[,max_memory]])\n\nANALYSE() is defined in the sql/sql_analyse.cc source file, which\nserves as an example of how to create a procedure for use with the\nPROCEDURE clause of SELECT statements. ANALYSE() is built in and is\navailable by default; other procedures can be created using the format\ndemonstrated in the source file.\n\nANALYSE() examines the result from a query and returns an analysis of\nthe results that suggests optimal data types for each column that may\nhelp reduce table sizes. To obtain this analysis, append PROCEDURE\nANALYSE to the end of a SELECT statement:\n\nSELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])\n\nFor example:\n\nSELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);\n\nThe results show some statistics for the values returned by the query,\nand propose an optimal data type for the columns. This can be helpful\nfor checking your existing tables, or after importing new data. You may\nneed to try different settings for the arguments so that PROCEDURE\nANALYSE() does not suggest the ENUM data type when it is not\nappropriate.\n\nThe arguments are optional and are used as follows:\n\no max_elements (default 256) is the maximum number of distinct values\n that ANALYSE() notices per column. This is used by ANALYSE() to check\n whether the optimal data type should be of type ENUM; if there are\n more than max_elements distinct values, then ENUM is not a suggested\n type.\n\no max_memory (default 8192) is the maximum amount of memory that\n ANALYSE() should allocate per column while trying to find all\n distinct values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/procedure-analyse.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/procedure-analyse.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (184,25,'CHANGE MASTER TO','Syntax:\nCHANGE MASTER TO master_def [, master_def] ...\n\nmaster_def:\n MASTER_BIND = \'interface_name\'\n | MASTER_HOST = \'host_name\'\n | MASTER_USER = \'user_name\'\n | MASTER_PASSWORD = \'password\'\n | MASTER_PORT = port_num\n | MASTER_CONNECT_RETRY = interval\n | MASTER_HEARTBEAT_PERIOD = interval\n | MASTER_LOG_FILE = \'master_log_name\'\n | MASTER_LOG_POS = master_log_pos\n | RELAY_LOG_FILE = \'relay_log_name\'\n | RELAY_LOG_POS = relay_log_pos\n | MASTER_SSL = {0|1}\n | MASTER_SSL_CA = \'ca_file_name\'\n | MASTER_SSL_CAPATH = \'ca_directory_name\'\n | MASTER_SSL_CERT = \'cert_file_name\'\n | MASTER_SSL_KEY = \'key_file_name\'\n | MASTER_SSL_CIPHER = \'cipher_list\'\n | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}\n\nCHANGE MASTER TO changes the parameters that the slave server uses for\nconnecting to and communicating with the master server. It also updates\nthe contents of the master.info and relay-log.info files.\n\nMASTER_USER, MASTER_PASSWORD, MASTER_SSL, MASTER_SSL_CA,\nMASTER_SSL_CAPATH, MASTER_SSL_CERT, MASTER_SSL_KEY, MASTER_SSL_CIPHER,\nand MASTER_SSL_VERIFY_SERVER_CERT provide information to the slave\nabout how to connect to its master. MASTER_SSL_VERIFY_SERVER_CERT was\nadded in MySQL 5.1.18. It is used as described for the\n--ssl-verify-server-cert option in\nhttp://dev.mysql.com/doc/refman/5.1/en/ssl-options.html.\n\nMASTER_CONN… specifies how many seconds to wait between connect\nretries. The default is 60. The number of reconnection attempts is\nlimited by the --master-retry-count server option; for more\ninformation, see\nhttp://dev.mysql.com/doc/refman/5.1/en/replication-options.html.\n\nThe SSL options (MASTER_SSL, MASTER_SSL_CA, MASTER_SSL_CAPATH,\nMASTER_SSL_CERT, MASTER_SSL_KEY, MASTER_SSL_CIPHER), and\nMASTER_SSL_VERIFY_SERVER_CERT can be changed even on slaves that are\ncompiled without SSL support. They are saved to the master.info file,\nbut are ignored unless you use a server that has SSL support enabled.\n\nIf you don\'t specify a given parameter, it keeps its old value, except\nas indicated in the following discussion. For example, if the password\nto connect to your MySQL master has changed, you just need to issue\nthese statements to tell the slave about the new password:\n\nSTOP SLAVE; -- if replication was running\nCHANGE MASTER TO MASTER_PASSWORD=\'new3cret\';\nSTART SLAVE; -- if you want to restart replication\n\nThere is no need to specify the parameters that do not change (host,\nport, user, and so forth).\n\nMASTER_HOST and MASTER_PORT are the host name (or IP address) of the\nmaster host and its TCP/IP port.\n\nThe next two options are available only in MySQL Cluster NDB 6.3 and\n6.4; they are not supported in mainline MySQL 5.1:\n\no MASTER_BIND is for use on replication slaves having multiple network\n interfaces, and determines which of the slave\'s network interfaces is\n chosen for connecting to the master. It is also possible to determine\n which network interface is to be used in such cases by starting the\n slave mysqld process with the --master-bind option.\n\n The ability to bind a replication slave to specific network interface\n was added in MySQL Cluster NDB 6.3.4.\n\no MASTER_HEARTBEAT_PERIOD is used to set the interval in seconds\n between replication heartbeats. Whenever the master\'s binlog is\n updated with an event, the waiting period for the next heartbeat is\n reset. interval is a decimal value having the range 0 to 4294967\n seconds and a resolution to hundredths of a second; the smallest\n nonzero value is 0.001. Heartbeats are sent by the master only if\n there are no unsent events in the binlog file for a period longer\n than interval.\n\n Setting interval to 0 disables heartbeats altogether. The default\n value for interval is equal to the value of slave_net_timeout divided\n by 2.\n\n *Note*: Setting @@global.slave_net_timeout to a value less than that\n of the current heartbeat interval results in a warning being issued.\n\n Issuing RESET SLAVE resets the heartbeat interval to the default.\n\n MASTER_HEARTBEAT_PERIOD was added in MySQL Cluster NDB 6.3.4.\n\n*Note*: Replication cannot use Unix socket files. You must be able to\nconnect to the master MySQL server using TCP/IP.\n\nIf you specify MASTER_HOST or MASTER_PORT, the slave assumes that the\nmaster server is different from before (even if you specify a host or\nport value that is the same as the current value.) In this case, the\nold values for the master binary log name and position are considered\nno longer applicable, so if you do not specify MASTER_LOG_FILE and\nMASTER_LOG_POS in the statement, MASTER_LOG_FILE=\'\' and\nMASTER_LOG_POS=4 are silently appended to it.\n\nSetting MASTER_HOST=\'\' --- that is, setting its value explicitly to an\nempty string --- is not the same as not setting it at all. Setting this\noption to an empty string causes START SLAVE subsequently to fail. This\nissue is addressed in MySQL 6.0. (Bug#28796\n(http://bugs.mysql.com/28796))\n\nMASTER_LOG_FILE and MASTER_LOG_POS are the coordinates at which the\nslave I/O thread should begin reading from the master the next time the\nthread starts. If you specify either of them, you cannot specify\nRELAY_LOG_FILE or RELAY_LOG_POS. If neither of MASTER_LOG_FILE or\nMASTER_LOG_POS are specified, the slave uses the last coordinates of\nthe slave SQL thread before CHANGE MASTER TO was issued. This ensures\nthat there is no discontinuity in replication, even if the slave SQL\nthread was late compared to the slave I/O thread, when you merely want\nto change, say, the password to use.\n\nCHANGE MASTER TO deletes all relay log files and starts a new one,\nunless you specify RELAY_LOG_FILE or RELAY_LOG_POS. In that case, relay\nlogs are kept; the relay_log_purge global variable is set silently to\n0.\n\nCHANGE MASTER TO is useful for setting up a slave when you have the\nsnapshot of the master and have recorded the log and the offset\ncorresponding to it. After loading the snapshot into the slave, you can\nrun CHANGE MASTER TO MASTER_LOG_FILE=\'log_name_on_master\',\nMASTER_LOG_POS=log_offset_on_master on the slave.\n\nThe following example changes the master and master\'s binary log\ncoordinates. This is used when you want to set up the slave to\nreplicate the master:\n\nCHANGE MASTER TO\n MASTER_HOST=\'master2.mycompany.com\',\n MASTER_USER=\'replication\',\n MASTER_PASSWORD=\'bigs3cret\',\n MASTER_PORT=3306,\n MASTER_LOG_FILE=\'master2-bin.001\',\n MASTER_LOG_POS=4,\n MASTER_CONNECT_RETRY=10;\n\nThe next example shows an operation that is less frequently employed.\nIt is used when the slave has relay logs that you want it to execute\nagain for some reason. To do this, the master need not be reachable.\nYou need only use CHANGE MASTER TO and start the SQL thread (START\nSLAVE SQL_THREAD):\n\nCHANGE MASTER TO\n RELAY_LOG_FILE=\'slave-relay-bin.006\',\n RELAY_LOG_POS=4025;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/change-master-to.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/change-master-to.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (185,37,'DROP DATABASE','Syntax:\nDROP {DATABASE | SCHEMA} [IF EXISTS] db_name\n\nDROP DATABASE drops all tables in the database and deletes the\ndatabase. Be very careful with this statement! To use DROP DATABASE,\nyou need the DROP privilege on the database. DROP SCHEMA is a synonym\nfor DROP DATABASE.\n\n*Important*: When a database is dropped, user privileges on the\ndatabase are not automatically dropped. See [HELP GRANT].\n\nIF EXISTS is used to prevent an error from occurring if the database\ndoes not exist.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-database.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (186,6,'MBREQUAL','MBREqual(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 are the same.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (187,30,'TIMESTAMP FUNCTION','Syntax:\nTIMESTAMP(expr), TIMESTAMP(expr1,expr2)\n\nWith a single argument, this function returns the date or datetime\nexpression expr as a datetime value. With two arguments, it adds the\ntime expression expr2 to the date or datetime expression expr1 and\nreturns the result as a datetime value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMP(\'2003-12-31\');\n -> \'2003-12-31 00:00:00\'\nmysql> SELECT TIMESTAMP(\'2003-12-31 12:00:00\',\'12:00:00\');\n -> \'2004-01-01 00:00:00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (188,35,'CHARACTER_LENGTH','Syntax:\nCHARACTER_LENGTH(str)\n\nCHARACTER_LENGTH() is a synonym for CHAR_LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (189,25,'SHOW GRANTS','Syntax:\nSHOW GRANTS [FOR user]\n\nThis statement lists the GRANT statement or statements that must be\nissued to duplicate the privileges that are granted to a MySQL user\naccount. The account is named using the same format as for the GRANT\nstatement; for example, \'jeffrey\'@\'localhost\'. If you specify only the\nuser name part of the account name, a host name part of \'%\' is used.\nFor additional information about specifying account names, see [HELP\nGRANT].\n\nmysql> SHOW GRANTS FOR \'root\'@\'localhost\';\n+---------------------------------------------------------------------+\n| Grants for root@localhost |\n+---------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'localhost\' WITH GRANT OPTION |\n+---------------------------------------------------------------------+\n\nTo list the privileges granted to the account that you are using to\nconnect to the server, you can use any of the following statements:\n\nSHOW GRANTS;\nSHOW GRANTS FOR CURRENT_USER;\nSHOW GRANTS FOR CURRENT_USER();\n\nAs of MySQL 5.1.12, if SHOW GRANTS FOR CURRENT_USER (or any of the\nequivalent syntaxes) is used in DEFINER context, such as within a\nstored procedure that is defined with SQL SECURITY DEFINER), the grants\ndisplayed are those of the definer and not the invoker.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-grants.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-grants.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (190,25,'SHOW PRIVILEGES','Syntax:\nSHOW PRIVILEGES\n\nSHOW PRIVILEGES shows the list of system privileges that the MySQL\nserver supports. The exact list of privileges depends on the version of\nyour server.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-privileges.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-privileges.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (191,37,'CREATE TABLESPACE','Syntax:\nCREATE TABLESPACE tablespace_name\n ADD DATAFILE \'file_name\'\n USE LOGFILE GROUP logfile_group\n [EXTENT_SIZE [=] extent_size]\n [INITIAL_SIZE [=] initial_size]\n [AUTOEXTEND_SIZE [=] autoextend_size]\n [MAX_SIZE [=] max_size]\n [NODEGROUP [=] nodegroup_id]\n [WAIT]\n [COMMENT [=] comment_text]\n ENGINE [=] engine_name\n\nThis statement is used to create a tablespace, which can contain one or\nmore data files, providing storage space for tables. One data file is\ncreated and added to the tablespace using this statement. Additional\ndata files may be added to the tablespace by using the ALTER TABLESPACE\nstatement (see [HELP ALTER TABLESPACE]). For rules covering the naming\nof tablespaces, see\nhttp://dev.mysql.com/doc/refman/5.1/en/identifiers.html.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and a log file group with the same name, or a\ntablespace and a data file with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for data files could not be longer than 128 characters.\n(Bug#31770 (http://bugs.mysql.com/31770))\n\nA log file group of one or more UNDO log files must be assigned to the\ntablespace to be created with the USE LOGFILE GROUP clause.\nlogfile_group must be an existing log file group created with CREATE\nLOGFILE GROUP (see\nhttp://dev.mysql.com/doc/refman/5.1/en/create-logfile-group.html).\nMu… tablespaces may use the same log file group for UNDO logging.\n\nThe EXTENT_SIZE sets the size, in bytes, of the extents used by any\nfiles belonging to the tablespace. The default value is 1M. The minimum\nsize is 32K, and theoretical maximum is 2G, although the practical\nmaximum size depends on a number of factors. In most cases, changing\nthe extent size does not have any measurable effect on performance, and\nthe default value is recommended for all but the most unusual\nsituations.\n\nAn extent is a unit of disk space allocation. One extent is filled with\nas much data as that extent can contain before another extent is used.\nIn theory, up to 65,535 (64K) extents may used per data file; however,\nthe recommended maximum is 32,768 (32K). The recommended maximum size\nfor a single data file is 32G --- that is, 32K extents x 1 MB per\nextent. In addition, once an extent is allocated to a given partition,\nit cannot be used to store data from a different partition; an extent\ncannot store data from more than one partition. This means, for example\nthat a tablespace having a single datafile whose INITIAL_SIZE is 256 MB\nand whose EXTENT_SIZE is 128M has just two extents, and so can be used\nto store data from at most two different disk data table partitions.\n\nYou can see how many extents remain free in a given data file by\nquerying the INFORMATION_SCHEMA.FILES table, and so derive an estimate\nfor how much space remains free in the file. For further discussion and\nexamples, see http://dev.mysql.com/doc/refman/5.1/en/files-table.html.\n\nThe INITIAL_SIZE parameter sets the data file\'s total size in bytes.\nOnce the file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using ALTER TABLESPACE\n... ADD DATAFILE. See [HELP ALTER TABLESPACE].\n\nINITIAL_SIZE is optional; its default value is 128M.\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nWhen setting EXTENT_SIZE or INITIAL_SIZE (either or both), you may\noptionally follow the number with a one-letter abbreviation for an\norder of magnitude, similar to those used in my.cnf. Generally, this is\none of the letters M (for megabytes) or G (for gigabytes).\n\nAUTOEXTEND_SIZE, MAX_SIZE, NODEGROUP, WAIT, and COMMENT are parsed but\nignored, and so have no effect in MySQL 5.1. These options are intended\nfor future expansion.\n\nThe ENGINE parameter determines the storage engine which uses this\ntablespace, with engine_name being the name of the storage engine. In\nMySQL 5.1, engine_name must be one of the values NDB or NDBCLUSTER.\n\nWhen CREATE TABLESPACE is used with ENGINE = NDB, a tablespace and\nassociated data file are created on each Cluster data node. You can\nverify that the data files were created and obtain information about\nthem by querying the INFORMATION_SCHEMA.FILES table. For example:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA\n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+-------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+-------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n+--------------------+-------------+----------------+\n2 rows in set (0.01 sec)\n\n(See http://dev.mysql.com/doc/refman/5.1/en/files-table.html.)\n\nCREATE TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (192,35,'INSERT FUNCTION','Syntax:\nINSERT(str,pos,len,newstr)\n\nReturns the string str, with the substring beginning at position pos\nand len characters long replaced by the string newstr. Returns the\noriginal string if pos is not within the length of the string. Replaces\nthe rest of the string from position pos if len is not within the\nlength of the rest of the string. Returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT INSERT(\'Quadratic\', 3, 4, \'What\');\n -> \'QuWhattic\'\nmysql> SELECT INSERT(\'Quadratic\', -1, 4, \'What\');\n -> \'Quadratic\'\nmysql> SELECT INSERT(\'Quadratic\', 3, 100, \'What\');\n -> \'QuWhat\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (193,4,'CRC32','Syntax:\nCRC32(expr)\n\nComputes a cyclic redundancy check value and returns a 32-bit unsigned\nvalue. The result is NULL if the argument is NULL. The argument is\nexpected to be a string and (if possible) is treated as one if it is\nnot.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CRC32(\'MySQL\');\n -> 3259397556\nmysql> SELECT CRC32(\'mysql\');\n -> 2501908538\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (194,13,'XOR','Syntax:\nXOR\n\nLogical XOR. Returns NULL if either operand is NULL. For non-NULL\noperands, evaluates to 1 if an odd number of operands is nonzero,\notherwise 0 is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 XOR 1;\n -> 0\nmysql> SELECT 1 XOR 0;\n -> 1\nmysql> SELECT 1 XOR NULL;\n -> NULL\nmysql> SELECT 1 XOR 1 XOR 1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (195,12,'STARTPOINT','StartPoint(ls)\n\nReturns the Point that is the start point of the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(StartPoint(GeomFromText(@ls)));\n+---------------------------------------+\n| AsText(StartPoint(GeomFromText(@ls))) |\n+---------------------------------------+\n| POINT(1 1) |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (196,22,'DECLARE VARIABLE','Syntax:\nDECLARE var_name [, var_name] ... type [DEFAULT value]\n\nThis statement is used to declare local variables within stored\nprograms. To provide a default value for the variable, include a\nDEFAULT clause. The value can be specified as an expression; it need\nnot be a constant. If the DEFAULT clause is missing, the initial value\nis NULL.\n\nLocal variables are treated like stored routine parameters with respect\nto data type and overflow checking. See [HELP CREATE PROCEDURE].\n\nLocal variable names are not case sensitive.\n\nThe scope of a local variable is within the BEGIN ... END block where\nit is declared. The variable can be referred to in blocks nested within\nthe declaring block, except those blocks that declare a variable with\nthe same name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-local-variable.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-local-variable.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (197,9,'GRANT','Syntax:\nGRANT\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n TO user [IDENTIFIED BY [PASSWORD] \'password\']\n [, user [IDENTIFIED BY [PASSWORD] \'password\']] ...\n [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]\n [WITH with_option [with_option] ...]\n\nobject_type:\n TABLE\n | FUNCTION\n | PROCEDURE\n\npriv_level:\n *\n | *.*\n | db_name.*\n | db_name.tbl_name\n | tbl_name\n | db_name.routine_name\n\nwith_option:\n GRANT OPTION\n | MAX_QUERIES_PER_HOUR count\n | MAX_UPDATES_PER_HOUR count\n | MAX_CONNECTIONS_PER_HOUR count\n | MAX_USER_CONNECTIONS count\n\nssl_option:\n SSL\n | X509\n | CIPHER \'cipher\'\n | ISSUER \'issuer\'\n | SUBJECT \'subject\'\n\nThe GRANT statement enables system administrators to create MySQL user\naccounts and to grant rights to accounts. To use GRANT, you must have\nthe GRANT OPTION privilege, and you must have the privileges that you\nare granting. The REVOKE statement is related and enables\nadministrators to remove account privileges. To determine what\nprivileges an account has, use SHOW GRANTS. See [HELP REVOKE], and\n[HELP SHOW GRANTS].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/grant.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/grant.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (198,3,'MPOLYFROMTEXT','MPolyFromText(wkt[,srid]), MultiPolygonFromText(wkt[,srid])\n\nConstructs a MULTIPOLYGON value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (199,6,'MBRINTERSECTS','MBRIntersects(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 intersect.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (200,16,'BIT_OR','Syntax:\nBIT_OR(expr)\n\nReturns the bitwise OR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (201,30,'YEARWEEK','Syntax:\nYEARWEEK(date), YEARWEEK(date,mode)\n\nReturns year and week for a date. The mode argument works exactly like\nthe mode argument to WEEK(). The year in the result may be different\nfrom the year in the date argument for the first and the last week of\nthe year.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT YEARWEEK(\'1987-01-01\');\n -> 198653\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (202,17,'NOT BETWEEN','Syntax:\nexpr NOT BETWEEN min AND max\n\nThis is the same as NOT (expr BETWEEN min AND max).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (203,17,'IS NOT','Syntax:\nIS NOT boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;\n -> 1, 1, 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (204,4,'LOG10','Syntax:\nLOG10(X)\n\nReturns the base-10 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG10(2);\n -> 0.30102999566398\nmysql> SELECT LOG10(100);\n -> 2\nmysql> SELECT LOG10(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (205,4,'SQRT','Syntax:\nSQRT(X)\n\nReturns the square root of a nonnegative number X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT SQRT(4);\n -> 2\nmysql> SELECT SQRT(20);\n -> 4.4721359549996\nmysql> SELECT SQRT(-16);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (206,20,'DECIMAL','DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nA packed "exact" fixed-point number. M is the total number of digits\n(the precision) and D is the number of digits after the decimal point\n(the scale). The decimal point and (for negative numbers) the "-" sign\nare not counted in M. If D is 0, values have no decimal point or\nfractional part. The maximum number of digits (M) for DECIMAL is 65.\nThe maximum number of supported decimals (D) is 30. If D is omitted,\nthe default is 0. If M is omitted, the default is 10.\n\nUNSIGNED, if specified, disallows negative values.\n\nAll basic calculations (+, -, *, /) with DECIMAL columns are done with\na precision of 65 digits.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (207,37,'CREATE INDEX','Syntax:\nCREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name\n [index_type]\n ON tbl_name (index_col_name,...)\n [index_option] ...\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n\nCREATE INDEX is mapped to an ALTER TABLE statement to create indexes.\nSee [HELP ALTER TABLE]. CREATE INDEX cannot be used to create a PRIMARY\nKEY; use ALTER TABLE instead. For more information about indexes, see\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-index.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (208,37,'CREATE FUNCTION','The CREATE FUNCTION statement is used to create stored functions and\nuser-defined functions (UDFs):\n\no For information about creating stored functions, see [HELP CREATE\n PROCEDURE].\n\no For information about creating user-defined functions, see [HELP\n CREATE FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-function.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (209,37,'ALTER DATABASE','Syntax:\nALTER {DATABASE | SCHEMA} [db_name]\n alter_specification ...\nALTER {DATABASE | SCHEMA} db_name\n UPGRADE DATA DIRECTORY NAME\n\nalter_specification:\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n\nALTER DATABASE enables you to change the overall characteristics of a\ndatabase. These characteristics are stored in the db.opt file in the\ndatabase directory. To use ALTER DATABASE, you need the ALTER privilege\non the database. ALTER SCHEMA is a synonym for ALTER DATABASE.\n\nThe CHARACTER SET clause changes the default database character set.\nThe COLLATE clause changes the default database collation.\nhttp://dev.mysql.com/doc/refman/5.1/en/charset.html, discusses\ncharacter set and collation names.\n\nYou can see what character sets and collations are available using,\nrespectively, the SHOW CHARACTER SET and SHOW COLLATION statements. See\n[HELP SHOW CHARACTER SET], and [HELP SHOW COLLATION], for more\ninformation.\n\nThe database name can be omitted from the first syntax, in which case\nthe statement applies to the default database.\n\nThe syntax that includes the UPGRADE DATA DIRECTORY NAME clause was\nadded in MySQL 5.1.23. It updates the name of the directory associated\nwith the database to use the encoding implemented in MySQL 5.1 for\nmapping database names to database directory names (see\nhttp://dev.mysql.com/doc/refman/5.1/en/identifier-mapping.html) This\nclause is for use under these conditions:\n\no It is intended when upgrading MySQL to 5.1 or later from older\n versions.\n\no It is intended to update a database directory name to the current\n encoding format if the name contains special characters that need\n encoding.\n\no The statement is used by mysqlcheck (as invoked by mysql_upgrade).\n\nFor example,if a database in MySQL 5.0 has a name of a-b-c, the name\ncontains instance of the `-\' character. In 5.0, the database directory\nis also named a-b-c, which is not necessarily safe for all file\nsystems. In MySQL 5.1 and up, the same database name is encoded as\na@002db@002dc to produce a file system-neutral directory name.\n\nWhen a MySQL installation is upgraded to MySQL 5.1 or later from an\nolder version,the server displays a name such as a-b-c (which is in the\nold format) as #mysql50#a-b-c, and you must refer to the name using the\n#mysql50# prefix. Use UPGRADE DATA DIRECTORY NAME in this case to\nexplicitly tell the server to re-encode the database directory name to\nthe current encoding format:\n\nALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;\n\nAfter executing this statement, you can refer to the database as a-b-c\nwithout the special #mysql50# prefix.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-database.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-database.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (210,24,'GEOMETRYN','GeometryN(gc,N)\n\nReturns the N-th geometry in the GeometryCollection value gc.\nGeometries are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT AsText(GeometryN(GeomFromText(@gc),1));\n+----------------------------------------+\n| AsText(GeometryN(GeomFromText(@gc),1)) |\n+----------------------------------------+\n| POINT(1 1) |\n+----------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#geo…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (211,18,'<<','Syntax:\n<<\n\nShifts a longlong (BIGINT) number to the left.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 1 << 2;\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (212,25,'SHOW TABLE STATUS','Syntax:\nSHOW TABLE STATUS [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLE STATUS works likes SHOW TABLES, but provides a lot of\ninformation about each non-TEMPORARY table. You can also get this list\nusing the mysqlshow --status db_name command. The LIKE clause, if\npresent, indicates which table names to match. The WHERE clause can be\ngiven to select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (213,11,'MD5','Syntax:\nMD5(str)\n\nCalculates an MD5 128-bit checksum for the string. The value is\nreturned as a binary string of 32 hex digits, or NULL if the argument\nwas NULL. The return value can, for example, be used as a hash key.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT MD5(\'testing\');\n -> \'ae2b1fca515949e5d54fb22b8ed95575\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (214,17,'<','Syntax:\n<\n\nLess than:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 < 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (215,30,'UNIX_TIMESTAMP','Syntax:\nUNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)\n\nIf called with no argument, returns a Unix timestamp (seconds since\n\'1970-01-01 00:00:00\' UTC) as an unsigned integer. If UNIX_TIMESTAMP()\nis called with a date argument, it returns the value of the argument as\nseconds since \'1970-01-01 00:00:00\' UTC. date may be a DATE string, a\nDATETIME string, a TIMESTAMP, or a number in the format YYMMDD or\nYYYYMMDD. The server interprets date as a value in the current time\nzone and converts it to an internal value in UTC. Clients can set their\ntime zone as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UNIX_TIMESTAMP();\n -> 1196440210\nmysql> SELECT UNIX_TIMESTAMP(\'2007-11-30 10:30:19\');\n -> 1196440219\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (216,30,'DAYOFMONTH','Syntax:\nDAYOFMONTH(date)\n\nReturns the day of the month for date, in the range 1 to 31, or 0 for\ndates such as \'0000-00-00\' or \'2008-00-00\' that have a zero day part.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFMONTH(\'2007-02-03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (217,35,'ASCII','Syntax:\nASCII(str)\n\nReturns the numeric value of the leftmost character of the string str.\nReturns 0 if str is the empty string. Returns NULL if str is NULL.\nASCII() works for 8-bit characters.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ASCII(\'2\');\n -> 50\nmysql> SELECT ASCII(2);\n -> 50\nmysql> SELECT ASCII(\'dx\');\n -> 100\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (218,4,'DIV','Syntax:\nDIV\n\nInteger division. Similar to FLOOR(), but is safe with BIGINT values.\nIncorrect results may occur for noninteger operands that exceed BIGINT\nrange.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 5 DIV 2;\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (219,9,'RENAME USER','Syntax:\nRENAME USER old_user TO new_user\n [, old_user TO new_user] ...\n\nThe RENAME USER statement renames existing MySQL accounts. To use it,\nyou must have the global CREATE USER privilege or the UPDATE privilege\nfor the mysql database. An error occurs if any old account does not\nexist or any new account exists. Each account is named using the same\nformat as for the GRANT statement; for example, \'jeffrey\'@\'localhost\'.\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used. For additional information about specifying\naccount names, see [HELP GRANT].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/rename-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/rename-user.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (220,25,'SHOW SLAVE STATUS','Syntax:\nSHOW SLAVE STATUS\n\nThis statement provides status information on essential parameters of\nthe slave threads. It requires either the SUPER or REPLICATION CLIENT\nprivilege.\n\nIf you issue this statement using the mysql client, you can use a \\G\nstatement terminator rather than a semicolon to obtain a more readable\nvertical layout:\n\nmysql> SHOW SLAVE STATUS\\G\n*************************** 1. row ***************************\n Slave_IO_State: Waiting for master to send event\n Master_Host: localhost\n Master_User: root\n Master_Port: 3306\n Connect_Retry: 3\n Master_Log_File: gbichot-bin.005\n Read_Master_Log_Pos: 79\n Relay_Log_File: gbichot-relay-bin.005\n Relay_Log_Pos: 548\n Relay_Master_Log_File: gbichot-bin.005\n Slave_IO_Running: Yes\n Slave_SQL_Running: Yes\n Replicate_Do_DB:\n Replicate_Ignore_DB:\n Last_Errno: 0\n Last_Error:\n Skip_Counter: 0\n Exec_Master_Log_Pos: 79\n Relay_Log_Space: 552\n Until_Condition: None\n Until_Log_File:\n Until_Log_Pos: 0\n Master_SSL_Allowed: No\n Master_SSL_CA_File:\n Master_SSL_CA_Path:\n Master_SSL_Cert:\n Master_SSL_Cipher:\n Master_SSL_Key:\n Seconds_Behind_Master: 8\nMaster_SSL_Verify_Server_Cert: No\n Last_IO_Errno: 0\n Last_IO_Error:\n Last_SQL_Errno: 0\n Last_SQL_Error:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-slave-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-slave-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (221,32,'GEOMETRY','MySQL provides a standard way of creating spatial columns for geometry\ntypes, for example, with CREATE TABLE or ALTER TABLE. Currently,\nspatial columns are supported for MyISAM, InnoDB, NDB, and ARCHIVE\ntables. See also the annotations about spatial indexes under [HELP\nSPATIAL].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-columns.html\n\n','CREATE TABLE geom (g GEOMETRY);\n','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-columns.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (222,12,'NUMPOINTS','NumPoints(ls)\n\nReturns the number of Point objects in the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT NumPoints(GeomFromText(@ls));\n+------------------------------+\n| NumPoints(GeomFromText(@ls)) |\n+------------------------------+\n| 3 |\n+------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (223,37,'ALTER LOGFILE GROUP','Syntax:\nALTER LOGFILE GROUP logfile_group\n ADD UNDOFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement adds an UNDO file named \'file_name\' to an existing log\nfile group logfile_group. An ALTER LOGFILE GROUP statement has one and\nonly one ADD UNDOFILE clause. No DROP UNDOFILE clause is currently\nsupported.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an undo log file with the same name, or an undo\nlog file and a data file with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for undo log files could not be longer than 128 characters.\n(Bug#31769 (http://bugs.mysql.com/31769))\n\nThe optional INITIAL_SIZE parameter sets the UNDO file\'s initial size\nin bytes; if not specified, the initial size default to 128M (128\nmegabytes). You may optionally follow size with a one-letter\nabbreviation for an order of magnitude, similar to those used in\nmy.cnf. Generally, this is one of the letters M (for megabytes) or G\n(for gigabytes).\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nBeginning with MySQL Cluster NDB 2.1.18, 6.3.24, and 7.0.4, the minimum\nallowed value for INITIAL_SIZE is 1M. (Bug#29574\n(http://bugs.mysql.com/29574))\n\n*Note*: WAIT is parsed but otherwise ignored, and so has no effect in\nMySQL 5.1 and MySQL Cluster NDB 6.x. It is intended for future\nexpansion.\n\nThe ENGINE parameter (required) determines the storage engine which is\nused by this log file group, with engine_name being the name of the\nstorage engine. In MySQL 5.1 and MySQL Cluster NDB 6.x, the only\naccepted values for engine_name are "NDBCLUSTER" and "NDB". The two\nvalues are equivalent.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-logfile-group.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-logfile-group.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (224,18,'&','Syntax:\n&\n\nBitwise AND:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 29 & 15;\n -> 13\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (225,30,'LOCALTIMESTAMP','Syntax:\nLOCALTIMESTAMP, LOCALTIMESTAMP()\n\nLOCALTIMESTAMP and LOCALTIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (226,35,'CONVERT','Syntax:\nCONVERT(expr,type), CONVERT(expr USING transcoding_name)\n\nThe CONVERT() and CAST() functions take a value of one type and produce\na value of another type.\n\nThe type can be one of the following values:\n\no BINARY[(N)]\n\no CHAR[(N)]\n\no DATE\n\no DATETIME\n\no DECIMAL[(M[,D])]\n\no SIGNED [INTEGER]\n\no TIME\n\no UNSIGNED [INTEGER]\n\nBINARY produces a string with the BINARY data type. See\nhttp://dev.mysql.com/doc/refman/5.1/en/binary-varbinary.html for a\ndescription of how this affects comparisons. If the optional length N\nis given, BINARY(N) causes the cast to use no more than N bytes of the\nargument. Values shorter than N bytes are padded with 0x00 bytes to a\nlength of N.\n\nCHAR(N) causes the cast to use no more than N characters of the\nargument.\n\nCAST() and CONVERT(... USING ...) are standard SQL syntax. The\nnon-USING form of CONVERT() is ODBC syntax.\n\nCONVERT() with USING is used to convert data between different\ncharacter sets. In MySQL, transcoding names are the same as the\ncorresponding character set names. For example, this statement converts\nthe string \'abc\' in the default character set to the corresponding\nstring in the utf8 character set:\n\nSELECT CONVERT(\'abc\' USING utf8);\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','SELECT enum_col FROM tbl_name ORDER BY CAST(enum_col AS CHAR);\n','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (227,30,'ADDDATE','Syntax:\nADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, ADDDATE()\nis a synonym for DATE_ADD(). The related function SUBDATE() is a\nsynonym for DATE_SUB(). For information on the INTERVAL unit argument,\nsee the discussion for DATE_ADD().\n\nmysql> SELECT DATE_ADD(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\nmysql> SELECT ADDDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\n\nWhen invoked with the days form of the second argument, MySQL treats it\nas an integer number of days to be added to expr.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT ADDDATE(\'2008-01-02\', 31);\n -> \'2008-02-02\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (228,22,'REPEAT LOOP','Syntax:\n[begin_label:] REPEAT\n statement_list\nUNTIL search_condition\nEND REPEAT [end_label]\n\nThe statement list within a REPEAT statement is repeated until the\nsearch_condition is true. Thus, a REPEAT always enters the loop at\nleast once. statement_list consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter.\n\nA REPEAT statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/repeat-statement.html\n\n','mysql> delimiter //\n\nmysql> CREATE PROCEDURE dorepeat(p1 INT)\n -> BEGIN\n -> SET @x = 0;\n -> REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;\n -> END\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL dorepeat(1000)//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n+------+\n| @x |\n+------+\n| 1001 |\n+------+\n1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/repeat-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (229,37,'ALTER FUNCTION','Syntax:\nALTER FUNCTION func_name [characteristic ...]\n\ncharacteristic:\n { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nThis statement can be used to change the characteristics of a stored\nfunction. More than one change may be specified in an ALTER FUNCTION\nstatement. However, you cannot change the parameters or body of a\nstored function using this statement; to make such changes, you must\ndrop and re-create the function using DROP FUNCTION and CREATE\nFUNCTION.\n\nYou must have the ALTER ROUTINE privilege for the function. (That\nprivilege is granted automatically to the function creator.) If binary\nlogging is enabled, the ALTER FUNCTION statement might also require the\nSUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html.\n\…: http://dev.mysql.com/doc/refman/5.1/en/alter-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-function.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (230,20,'SMALLINT','SMALLINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA small integer. The signed range is -32768 to 32767. The unsigned\nrange is 0 to 65535.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (231,20,'DOUBLE PRECISION','DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED]\n[ZEROFILL]\n\nThese types are synonyms for DOUBLE. Exception: If the REAL_AS_FLOAT\nSQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (232,35,'ORD','Syntax:\nORD(str)\n\nIf the leftmost character of the string str is a multi-byte character,\nreturns the code for that character, calculated from the numeric values\nof its constituent bytes using this formula:\n\n (1st byte code)\n+ (2nd byte code x 256)\n+ (3rd byte code x 2562) ...\n\nIf the leftmost character is not a multi-byte character, ORD() returns\nthe same value as the ASCII() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT ORD(\'2\');\n -> 50\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (233,25,'DEALLOCATE PREPARE','Syntax:\n{DEALLOCATE | DROP} PREPARE stmt_name\n\nTo deallocate a prepared statement produced with PREPARE, use a\nDEALLOCATE PREPARE statement that refers to the prepared statement\nname. Attempting to execute a prepared statement after deallocating it\nresults in an error.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/deallocate-prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/deallocate-prepare.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (234,34,'ENVELOPE','Envelope(g)\n\nReturns the Minimum Bounding Rectangle (MBR) for the geometry value g.\nThe result is returned as a Polygon value.\n\nThe polygon is defined by the corner points of the bounding box:\n\nPOLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\')));\n+-------------------------------------------------------+\n| AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\'))) |\n+-------------------------------------------------------+\n| POLYGON((1 1,2 1,2 2,1 2,1 1)) |\n+-------------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (235,14,'IS_FREE_LOCK','Syntax:\nIS_FREE_LOCK(str)\n\nChecks whether the lock named str is free to use (that is, not locked).\nReturns 1 if the lock is free (no one is using the lock), 0 if the lock\nis in use, and NULL if an error occurs (such as an incorrect argument).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (236,29,'TOUCHES','Touches(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially touches g2. Two\ngeometries spatially touch if the interiors of the geometries do not\nintersect, but the boundary of one of the geometries intersects either\nthe boundary or the interior of the other.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (237,14,'INET_ATON','Syntax:\nINET_ATON(expr)\n\nGiven the dotted-quad representation of a network address as a string,\nreturns an integer that represents the numeric value of the address.\nAddresses may be 4- or 8-byte addresses.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_ATON(\'209.207.224.40\');\n -> 3520061480\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (238,11,'UNCOMPRESS','Syntax:\nUNCOMPRESS(string_to_uncompress)\n\nUncompresses a string compressed by the COMPRESS() function. If the\nargument is not a compressed value, the result is NULL. This function\nrequires MySQL to have been compiled with a compression library such as\nzlib. Otherwise, the return value is always NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESS(COMPRESS(\'any string\'));\n -> \'any string\'\nmysql> SELECT UNCOMPRESS(\'any string\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (239,20,'AUTO_INCREMENT','The AUTO_INCREMENT attribute can be used to generate a unique identity\nfor new rows:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html\n\n','CREATE TABLE animals (\n id MEDIUMINT NOT NULL AUTO_INCREMENT,\n name CHAR(30) NOT NULL,\n PRIMARY KEY (id)\n );\n\nINSERT INTO animals (name) VALUES\n (\'dog\'),(\'cat\'),(\'penguin\'),\n (\'lax\'),(\'whale\'),(\'ostrich\');\n\nSELECT * FROM animals;\n','http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (240,34,'ISSIMPLE','IsSimple(g)\n\nCurrently, this function is a placeholder and should not be used. If\nimplemented, its behavior will be as described in the next paragraph.\n\nReturns 1 if the geometry value g has no anomalous geometric points,\nsuch as self-intersection or self-tangency. IsSimple() returns 0 if the\nargument is not simple, and -1 if it is NULL.\n\nThe description of each instantiable geometric class given earlier in\nthe chapter includes the specific conditions that cause an instance of\nthat class to be classified as not simple. (See [HELP Geometry\nhierarchy].)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (241,4,'- BINARY','Syntax:\n-\n\nSubtraction:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3-5;\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (242,3,'GEOMCOLLFROMTEXT','GeomCollFromText(wkt[,srid]), GeometryCollectionFromText(wkt[,srid])\n\nConstructs a GEOMETRYCOLLECTION value using its WKT representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (243,3,'WKT DEFINITION','The Well-Known Text (WKT) representation of Geometry is designed to\nexchange geometry data in ASCII form.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/gis-wkt-format.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/gis-wkt-format.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (244,30,'CURRENT_TIME','Syntax:\nCURRENT_TIME, CURRENT_TIME()\n\nCURRENT_TIME and CURRENT_TIME() are synonyms for CURTIME().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (245,9,'REVOKE','Syntax:\nREVOKE\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n FROM user [, user] ...\n\nREVOKE ALL PRIVILEGES, GRANT OPTION\n FROM user [, user] ...\n\nThe REVOKE statement enables system administrators to revoke privileges\nfrom MySQL accounts. Each account is named using the same format as for\nthe GRANT statement; for example, \'jeffrey\'@\'localhost\'. If you specify\nonly the user name part of the account name, a host name part of \'%\' is\nused. For details on the levels at which privileges exist, the\nallowable priv_type and priv_level values, and the syntax for\nspecifying users and passwords, see [HELP GRANT]\n\nTo use the first REVOKE syntax, you must have the GRANT OPTION\nprivilege, and you must have the privileges that you are revoking.\n\nTo revoke all privileges, use the second syntax, which drops all\nglobal, database, table, column, and routine privileges for the named\nuser or users:\n\nREVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...\n\nTo use this REVOKE syntax, you must have the global CREATE USER\nprivilege or the UPDATE privilege for the mysql database.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/revoke.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/revoke.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (246,15,'LAST_INSERT_ID','Syntax:\nLAST_INSERT_ID(), LAST_INSERT_ID(expr)\n\nFor MySQL 5.1.12 and later, LAST_INSERT_ID() (no arguments) returns the\nfirst automatically generated value successfully inserted for an\nAUTO_INCREMENT column as a result of the most recently executed INSERT\nstatement. The value of LAST_INSERT_ID() remains unchanged if no rows\nare successfully inserted.\n\nFor example, after inserting a row that generates an AUTO_INCREMENT\nvalue, you can get the value like this:\n\nmysql> SELECT LAST_INSERT_ID();\n -> 195\n\nIn MySQL 5.1.11 and earlier, LAST_INSERT_ID() (no arguments) returns\nthe first automatically generated value if any rows were successfully\ninserted or updated. This means that the returned value could be a\nvalue that was not successfully inserted into the table. If no rows\nwere successfully inserted, LAST_INSERT_ID() returns 0.\n\nThe value of LAST_INSERT_ID() will be consistent across all versions if\nall rows in the INSERT or UPDATE statement were successful.\n\nif a table contains an AUTO_INCREMENT column and INSERT ... ON\nDUPLICATE KEY UPDATE updates (rather than inserts) a row, the value of\nLAST_INSERT_ID() is not meaningful prior to MySQL 5.1.12. For a\nworkaround, see\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html.\n\nThe currently executing statement does not affect the value of\nLAST_INSERT_ID(). Suppose that you generate an AUTO_INCREMENT value\nwith one statement, and then refer to LAST_INSERT_ID() in a\nmultiple-row INSERT statement that inserts rows into a table with its\nown AUTO_INCREMENT column. The value of LAST_INSERT_ID() will remain\nstable in the second statement; its value for the second and later rows\nis not affected by the earlier row insertions. (However, if you mix\nreferences to LAST_INSERT_ID() and LAST_INSERT_ID(expr), the effect is\nundefined.)\n\nIf the previous statement returned an error, the value of\nLAST_INSERT_ID() is undefined. For transactional tables, if the\nstatement is rolled back due to an error, the value of LAST_INSERT_ID()\nis left undefined. For manual ROLLBACK, the value of LAST_INSERT_ID()\nis not restored to that before the transaction; it remains as it was at\nthe point of the ROLLBACK.\n\nWithin the body of a stored routine (procedure or function) or a\ntrigger, the value of LAST_INSERT_ID() changes the same way as for\nstatements executed outside the body of these kinds of objects. The\neffect of a stored routine or trigger upon the value of\nLAST_INSERT_ID() that is seen by following statements depends on the\nkind of routine:\n\no If a stored procedure executes statements that change the value of\n LAST_INSERT_ID(), the changed value will be seen by statements that\n follow the procedure call.\n\no For stored functions and triggers that change the value, the value is\n restored when the function or trigger ends, so following statements\n will not see a changed value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (247,30,'LAST_DAY','Syntax:\nLAST_DAY(date)\n\nTakes a date or datetime value and returns the corresponding value for\nthe last day of the month. Returns NULL if the argument is invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT LAST_DAY(\'2003-02-05\');\n -> \'2003-02-28\'\nmysql> SELECT LAST_DAY(\'2004-02-05\');\n -> \'2004-02-29\'\nmysql> SELECT LAST_DAY(\'2004-01-01 01:01:01\');\n -> \'2004-01-31\'\nmysql> SELECT LAST_DAY(\'2003-03-32\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (248,20,'MEDIUMINT','MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA medium-sized integer. The signed range is -8388608 to 8388607. The\nunsigned range is 0 to 16777215.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (249,4,'FLOOR','Syntax:\nFLOOR(X)\n\nReturns the largest integer value not greater than X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT FLOOR(1.23);\n -> 1\nmysql> SELECT FLOOR(-1.23);\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (250,35,'RTRIM','Syntax:\nRTRIM(str)\n\nReturns the string str with trailing space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RTRIM(\'barbar \');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (251,27,'EXPLAIN','Syntax:\nEXPLAIN tbl_name\n\nOr:\n\nEXPLAIN [EXTENDED | PARTITIONS] SELECT select_options\n\nThe EXPLAIN statement can be used either as a synonym for DESCRIBE or\nas a way to obtain information about how MySQL executes a SELECT\nstatement:\n\no EXPLAIN tbl_name is synonymous with DESCRIBE tbl_name or SHOW COLUMNS\n FROM tbl_name.\n\n For a description of the DESCRIBE and SHOW COLUMNS statements, see\n [HELP DESCRIBE], and [HELP SHOW COLUMNS].\n\no When you precede a SELECT statement with the keyword EXPLAIN, MySQL\n displays information from the optimizer about the query execution\n plan. That is, MySQL explains how it would process the SELECT,\n including information about how tables are joined and in which order.\n EXPLAIN EXTENDED can be used to provide additional information.\n\n For information regarding the use of EXPLAIN and EXPLAIN EXTENDED for\n obtaining query execution plan information, see\n http://dev.mysql.com/doc/refman/5.1/en/using-explain.html.\n\no EXPLAIN PARTITIONS is available beginning with MySQL 5.1.5. It is\n useful only when examining queries involving partitioned tables.\n\n For details, see\n http://dev.mysql.com/doc/refman/5.1/en/partitioning-info.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/explain.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/explain.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (252,4,'DEGREES','Syntax:\nDEGREES(X)\n\nReturns the argument X, converted from radians to degrees.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT DEGREES(PI());\n -> 180\nmysql> SELECT DEGREES(PI() / 2);\n -> 90\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (253,20,'VARCHAR','[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA variable-length string. M represents the maximum column length in\ncharacters. The range of M is 0 to 65,535. The effective maximum length\nof a VARCHAR is subject to the maximum row size (65,535 bytes, which is\nshared among all columns) and the character set used. For example, utf8\ncharacters can require up to three bytes per character, so a VARCHAR\ncolumn that uses the utf8 character set can be declared to be a maximum\nof 21,844 characters.\n\nMySQL stores VARCHAR values as a one-byte or two-byte length prefix\nplus data. The length prefix indicates the number of bytes in the\nvalue. A VARCHAR column uses one length byte if values require no more\nthan 255 bytes, two length bytes if values may require more than 255\nbytes.\n\n*Note*: MySQL 5.1 follows the standard SQL specification, and does not\nremove trailing spaces from VARCHAR values.\n\nVARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the\nstandard SQL way to define that a VARCHAR column should use some\npredefined character set. MySQL 4.1 and up uses utf8 as this predefined\ncharacter set.\nhttp://dev.mysql.com/doc/refman/5.1/en/charset-national.html. NVARCHAR\nis shorthand for NATIONAL VARCHAR.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (254,35,'UNHEX','Syntax:\n\nUNHEX(str)\n\nPerforms the inverse operation of HEX(str). That is, it interprets each\npair of hexadecimal digits in the argument as a number and converts it\nto the character represented by the number. The resulting characters\nare returned as a binary string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT UNHEX(\'4D7953514C\');\n -> \'MySQL\'\nmysql> SELECT 0x4D7953514C;\n -> \'MySQL\'\nmysql> SELECT UNHEX(HEX(\'string\'));\n -> \'string\'\nmysql> SELECT HEX(UNHEX(\'1267\'));\n -> \'1267\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (255,4,'- UNARY','Syntax:\n-\n\nUnary minus. This operator changes the sign of the argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT - 2;\n -> -2\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (256,22,'SELECT INTO','Syntax:\nSELECT col_name [, col_name] ...\n INTO var_name [, var_name] ...\n table_expr\n\nSELECT ... INTO syntax enables selected columns to be stored directly\ninto variables. The query should return a single row. If the query\nreturns no rows, a warning with error code 1329 occurs (No data), and\nthe variable values remain unchanged. If the query returns multiple\nrows, error 1172 occurs (Result consisted of more than one row). If it\nis possible that the statement may retrieve multiple rows, you can use\nLIMIT 1 to limit the result set to a single row.\n\nIn the context of such statements that occur as part of events executed\nby the Event Scheduler, diagnostics messages (not only errors, but also\nwarnings) are written to the error log, and, on Windows, to the\napplication event log. For additional information, see\nhttp://dev.mysql.com/doc/refman/5.1/en/events-status-info.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select-into-statement.html\n\n','SELECT id,data INTO x,y FROM test.t1 LIMIT 1;\n','http://dev.mysql.com/doc/refman/5.1/en/select-into-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (257,16,'STD','Syntax:\nSTD(expr)\n\nReturns the population standard deviation of expr. This is an extension\nto standard SQL. The standard SQL function STDDEV_POP() can be used\ninstead.\n\nThis function returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (258,4,'COS','Syntax:\nCOS(X)\n\nReturns the cosine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT COS(PI());\n -> -1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (259,30,'DATE FUNCTION','Syntax:\nDATE(expr)\n\nExtracts the date part of the date or datetime expression expr.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE(\'2003-12-31 01:02:03\');\n -> \'2003-12-31\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (260,37,'DROP TRIGGER','Syntax:\nDROP TRIGGER [IF EXISTS] [schema_name.]trigger_name\n\nThis statement drops a trigger. The schema (database) name is optional.\nIf the schema is omitted, the trigger is dropped from the default\nschema. DROP TRIGGER was added in MySQL 5.0.2. Its use requires the\nTRIGGER privilege for the table associated with the trigger. (This\nstatement requires the SUPER privilege prior to MySQL 5.1.6.)\n\nUse IF EXISTS to prevent an error from occurring for a trigger that\ndoes not exist. A NOTE is generated for a nonexistent trigger when\nusing IF EXISTS. See [HELP SHOW WARNINGS]. The IF EXISTS clause was\nadded in MySQL 5.1.14.\n\nTriggers for a table are also dropped if you drop the table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-trigger.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (261,25,'RESET MASTER','Syntax:\nRESET MASTER\n\nDeletes all binary logs listed in the index file, resets the binary log\nindex file to be empty, and creates a new binary log file. It is\nintended to be used only when the master is started for the first time.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/reset-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/reset-master.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (262,4,'TAN','Syntax:\nTAN(X)\n\nReturns the tangent of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT TAN(PI());\n -> -1.2246063538224e-16\nmysql> SELECT TAN(PI()+1);\n -> 1.5574077246549\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (263,4,'PI','Syntax:\nPI()\n\nReturns the value of π (pi). The default number of decimal places\ndisplayed is seven, but MySQL uses the full double-precision value\ninternally.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT PI();\n -> 3.141593\nmysql> SELECT PI()+0.000000000000000000;\n -> 3.141592653589793116\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (264,30,'WEEKOFYEAR','Syntax:\nWEEKOFYEAR(date)\n\nReturns the calendar week of the date as a number in the range from 1\nto 53. WEEKOFYEAR() is a compatibility function that is equivalent to\nWEEK(date,3).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKOFYEAR(\'2008-02-20\');\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (265,4,'/','Syntax:\n/\n\nDivision:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3/5;\n -> 0.60\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (266,25,'PURGE BINARY LOGS','Syntax:\nPURGE { BINARY | MASTER } LOGS\n { TO \'log_name\' | BEFORE datetime_expr }\n\nThe binary log is a set of files that contain information about data\nmodifications made by the MySQL server. The log consists of a set of\nbinary log files, plus an index file.\n\nThe PURGE BINARY LOGS statement deletes all the binary log files listed\nin the log index file prior to the specified log file name or date. The\nlog files also are removed from the list recorded in the index file, so\nthat the given log file becomes the first.\n\nThis statement has no effect if the --log-bin option has not been\nenabled.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/purge-binary-logs.html\n\n','PURGE BINARY LOGS TO \'mysql-bin.010\';\nPURGE BINARY LOGS BEFORE \'2008-04-02 22:46:26\';\n','http://dev.mysql.com/doc/refman/5.1/en/purge-binary-logs.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (267,16,'STDDEV_SAMP','Syntax:\nSTDDEV_SAMP(expr)\n\nReturns the sample standard deviation of expr (the square root of\nVAR_SAMP().\n\nSTDDEV_SAMP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (268,15,'SCHEMA','Syntax:\nSCHEMA()\n\nThis function is a synonym for DATABASE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (269,31,'MLINEFROMWKB','MLineFromWKB(wkb[,srid]), MultiLineStringFromWKB(wkb[,srid])\n\nConstructs a MULTILINESTRING value using its WKB representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (270,4,'LOG2','Syntax:\nLOG2(X)\n\nReturns the base-2 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG2(65536);\n -> 16\nmysql> SELECT LOG2(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (271,30,'SUBTIME','Syntax:\nSUBTIME(expr1,expr2)\n\nSUBTIME() returns expr1 - expr2 expressed as a value in the same format\nas expr1. expr1 is a time or datetime expression, and expr2 is a time\nexpression.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SUBTIME(\'2007-12-31 23:59:59.999999\',\'1 1:1:1.000002\');\n -> \'2007-12-30 22:58:58.999997\'\nmysql> SELECT SUBTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'-00:59:59.999999\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (272,11,'UNCOMPRESSED_LENGTH','Syntax:\nUNCOMPRESSED_LENGTH(compressed_string)\n\nReturns the length that the compressed string had before being\ncompressed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT(\'a\',30)));\n -> 30\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (273,37,'DROP TABLE','Syntax:\nDROP [TEMPORARY] TABLE [IF EXISTS]\n tbl_name [, tbl_name] ...\n [RESTRICT | CASCADE]\n\nDROP TABLE removes one or more tables. You must have the DROP privilege\nfor each table. All table data and the table definition are removed, so\nbe careful with this statement! If any of the tables named in the\nargument list do not exist, MySQL returns an error indicating by name\nwhich nonexisting tables it was unable to drop, but it also drops all\nof the tables in the list that do exist.\n\n*Important*: When a table is dropped, user privileges on the table are\nnot automatically dropped. See [HELP GRANT].\n\nNote that for a partitioned table, DROP TABLE permanently removes the\ntable definition, all of its partitions, and all of the data which was\nstored in those partitions. It also removes the partitioning definition\n(.par) file associated with the dropped table.\n\nUse IF EXISTS to prevent an error from occurring for tables that do not\nexist. A NOTE is generated for each nonexistent table when using IF\nEXISTS. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE are allowed to make porting easier. In MySQL 5.1,\nthey do nothing.\n\n*Note*: DROP TABLE automatically commits the current active\ntransaction, unless you use the TEMPORARY keyword.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (274,4,'POW','Syntax:\nPOW(X,Y)\n\nReturns the value of X raised to the power of Y.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT POW(2,2);\n -> 4\nmysql> SELECT POW(2,-2);\n -> 0.25\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (275,25,'SHOW CREATE TABLE','Syntax:\nSHOW CREATE TABLE tbl_name\n\nShows the CREATE TABLE statement that creates the given table. The\nstatement requires the SELECT privilege for the table. This statement\nalso works with views.\nSHOW CREATE TABLE quotes table and column names according to the value\nof the sql_quote_show_create option. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-session-variables.html.\…: http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html\n\n','mysql> SHOW CREATE TABLE t\\G\n*************************** 1. row ***************************\n Table: t\nCreate Table: CREATE TABLE t (\n id INT(11) default NULL auto_increment,\n s char(60) default NULL,\n PRIMARY KEY (id)\n) ENGINE=MyISAM\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (276,26,'DUAL','You are allowed to specify DUAL as a dummy table name in situations\nwhere no tables are referenced:\n\nmysql> SELECT 1 + 1 FROM DUAL;\n -> 2\n\nDUAL is purely for the convenience of people who require that all\nSELECT statements should have FROM and possibly other clauses. MySQL\nmay ignore the clauses. MySQL does not require FROM DUAL if no tables\nare referenced.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/select.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (277,35,'INSTR','Syntax:\nINSTR(str,substr)\n\nReturns the position of the first occurrence of substring substr in\nstring str. This is the same as the two-argument form of LOCATE(),\nexcept that the order of the arguments is reversed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT INSTR(\'foobarbar\', \'bar\');\n -> 4\nmysql> SELECT INSTR(\'xbar\', \'foobar\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (278,30,'NOW','Syntax:\nNOW()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context. The value is expressed in the\ncurrent time zone.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT NOW();\n -> \'2007-12-15 23:50:26\'\nmysql> SELECT NOW() + 0;\n -> 20071215235026.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (279,25,'SHOW ENGINES','Syntax:\nSHOW [STORAGE] ENGINES\n\nSHOW ENGINES displays status information about the server\'s storage\nengines. This is particularly useful for checking whether a storage\nengine is supported, or to see what the default engine is. SHOW TABLE\nTYPES is a deprecated synonym.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-engines.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-engines.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (280,17,'>=','Syntax:\n>=\n\nGreater than or equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 >= 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (281,4,'EXP','Syntax:\nEXP(X)\n\nReturns the value of e (the base of natural logarithms) raised to the\npower of X. The inverse of this function is LOG() (using a single\nargument only) or LN().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT EXP(2);\n -> 7.3890560989307\nmysql> SELECT EXP(-2);\n -> 0.13533528323661\nmysql> SELECT EXP(0);\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (282,20,'LONGBLOB','LONGBLOB\n\nA BLOB column with a maximum length of 4,294,967,295 or 4GB (232 - 1)\nbytes. The effective maximum length of LONGBLOB columns depends on the\nconfigured maximum packet size in the client/server protocol and\navailable memory. Each LONGBLOB value is stored using a four-byte\nlength prefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (283,12,'POINTN','PointN(ls,N)\n\nReturns the N-th Point in the Linestring value ls. Points are numbered\nbeginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(PointN(GeomFromText(@ls),2));\n+-------------------------------------+\n| AsText(PointN(GeomFromText(@ls),2)) |\n+-------------------------------------+\n| POINT(2 2) |\n+-------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (284,20,'YEAR DATA TYPE','YEAR[(2|4)]\n\nA year in two-digit or four-digit format. The default is four-digit\nformat. In four-digit format, the allowable values are 1901 to 2155,\nand 0000. In two-digit format, the allowable values are 70 to 69,\nrepresenting years from 1970 to 2069. MySQL displays YEAR values in\nYYYY format, but allows you to assign values to YEAR columns using\neither strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (285,16,'SUM','Syntax:\nSUM([DISTINCT] expr)\n\nReturns the sum of expr. If the return set has no rows, SUM() returns\nNULL. The DISTINCT keyword can be used in MySQL 5.1 to sum only the\ndistinct values of expr.\n\nSUM() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (286,4,'OCT','Syntax:\nOCT(N)\n\nReturns a string representation of the octal value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,8). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT OCT(12);\n -> \'14\'\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (287,30,'SYSDATE','Syntax:\nSYSDATE()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context.\n\nSYSDATE() returns the time at which it executes. This differs from the\nbehavior for NOW(), which returns a constant time that indicates the\ntime at which the statement began to execute. (Within a stored function\nor trigger, NOW() returns the time at which the function or triggering\nstatement began to execute.)\n\nmysql> SELECT NOW(), SLEEP(2), NOW();\n+---------------------+----------+---------------------+\n| NOW() | SLEEP(2) | NOW() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |\n+---------------------+----------+---------------------+\n\nmysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();\n+---------------------+----------+---------------------+\n| SYSDATE() | SLEEP(2) | SYSDATE() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |\n+---------------------+----------+---------------------+\n\nIn addition, the SET TIMESTAMP statement affects the value returned by\nNOW() but not by SYSDATE(). This means that timestamp settings in the\nbinary log have no effect on invocations of SYSDATE().\n\nBecause SYSDATE() can return different values even within the same\nstatement, and is not affected by SET TIMESTAMP, it is nondeterministic\nand therefore unsafe for replication if statement-based binary logging\nis used. If that is a problem, you can use row-based logging, or start\nthe server with the --sysdate-is-now option to cause SYSDATE() to be an\nalias for NOW(). The nondeterministic nature of SYSDATE() also means\nthat indexes cannot be used for evaluating expressions that refer to\nit.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (288,5,'UNINSTALL PLUGIN','Syntax:\nUNINSTALL PLUGIN plugin_name\n\nThis statement removes an installed plugin. You cannot uninstall a\nplugin if any table that uses it is open.\n\nplugin_name must be the name of some plugin that is listed in the\nmysql.plugin table. The server executes the plugin\'s deinitialization\nfunction and removes the row for the plugin from the mysql.plugin\ntable, so that subsequent server restarts will not load and initialize\nthe plugin. UNINSTALL PLUGIN does not remove the plugin\'s shared\nlibrary file.\n\nTo use UNINSTALL PLUGIN, you must have the DELETE privilege for the\nmysql.plugin table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/uninstall-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/uninstall-plugin.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (289,31,'ASBINARY','AsBinary(g), AsWKB(g)\n\nConverts a value in internal geometry format to its WKB representation\nand returns the binary result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…','SELECT AsBinary(g) FROM geom;\n','http://dev.mysql.com/doc/refman/5.1/en/functions-to-convert-geometries-betw…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (290,35,'REPEAT FUNCTION','Syntax:\nREPEAT(str,count)\n\nReturns a string consisting of the string str repeated count times. If\ncount is less than 1, returns an empty string. Returns NULL if str or\ncount are NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT REPEAT(\'MySQL\', 3);\n -> \'MySQLMySQLMySQL\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (291,25,'SHOW TABLES','Syntax:\nSHOW [FULL] TABLES [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLES lists the non-TEMPORARY tables in a given database. You can\nalso get this list using the mysqlshow db_name command. The LIKE\nclause, if present, indicates which table names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nThis statement also lists any views in the database. The FULL modifier\nis supported such that SHOW FULL TABLES displays a second output\ncolumn. Values for the second column are BASE TABLE for a table and\nVIEW for a view.\n\nIf you have no privileges for a base table or view, it does not show up\nin the output from SHOW TABLES or mysqlshow db_name.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-tables.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (292,30,'MAKEDATE','Syntax:\nMAKEDATE(year,dayofyear)\n\nReturns a date, given year and day-of-year values. dayofyear must be\ngreater than 0 or the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);\n -> \'2011-01-31\', \'2011-02-01\'\nmysql> SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);\n -> \'2011-12-31\', \'2014-12-31\'\nmysql> SELECT MAKEDATE(2011,0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (293,35,'BINARY OPERATOR','Syntax:\nBINARY\n\nThe BINARY operator casts the string following it to a binary string.\nThis is an easy way to force a column comparison to be done byte by\nbyte rather than character by character. This causes the comparison to\nbe case sensitive even if the column isn\'t defined as BINARY or BLOB.\nBINARY also causes trailing spaces to be significant.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','mysql> SELECT \'a\' = \'A\';\n -> 1\nmysql> SELECT BINARY \'a\' = \'A\';\n -> 0\nmysql> SELECT \'a\' = \'a \';\n -> 1\nmysql> SELECT BINARY \'a\' = \'a \';\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (294,6,'MBROVERLAPS','MBROverlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 overlap. The term spatially overlaps is\nused if two geometries intersect and their intersection results in a\ngeometry of the same dimension but not equal to either of the given\ngeometries.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (295,35,'SOUNDEX','Syntax:\nSOUNDEX(str)\n\nReturns a soundex string from str. Two strings that sound almost the\nsame should have identical soundex strings. A standard soundex string\nis four characters long, but the SOUNDEX() function returns an\narbitrarily long string. You can use SUBSTRING() on the result to get a\nstandard soundex string. All nonalphabetic characters in str are\nignored. All international alphabetic characters outside the A-Z range\nare treated as vowels.\n\n*Important*: When using SOUNDEX(), you should be aware of the following\nlimitations:\n\no This function, as currently implemented, is intended to work well\n with strings that are in the English language only. Strings in other\n languages may not produce reliable results.\n\no This function is not guaranteed to provide consistent results with\n strings that use multi-byte character sets, including utf-8.\n\n We hope to remove these limitations in a future release. See\n Bug#22638 (http://bugs.mysql.com/22638) for more information.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SOUNDEX(\'Hello\');\n -> \'H400\'\nmysql> SELECT SOUNDEX(\'Quadratically\');\n -> \'Q36324\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (296,6,'MBRTOUCHES','MBRTouches(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 touch. Two geometries spatially touch if\nthe interiors of the geometries do not intersect, but the boundary of\none of the geometries intersects either the boundary or the interior of\nthe other.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (297,37,'DROP EVENT','Syntax:\nDROP EVENT [IF EXISTS] event_name\n\nThis statement drops the event named event_name. The event immediately\nceases being active, and is deleted completely from the server.\n\nIf the event does not exist, the error ERROR 1517 (HY000): Unknown\nevent \'event_name\' results. You can override this and cause the\nstatement to generate a warning for nonexistent events instead using IF\nEXISTS.\n\nBeginning with MySQL 5.1.12, this statement requires the EVENT\nprivilege for the schema to which the event to be dropped belongs. (In\nMySQL 5.1.11 and earlier, an event could be dropped only by its\ndefiner, or by a user having the SUPER privilege.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-event.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (298,26,'INSERT SELECT','Syntax:\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n SELECT ...\n [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]\n\nWith INSERT ... SELECT, you can quickly insert many rows into a table\nfrom one or many tables. For example:\n\nINSERT INTO tbl_temp2 (fld_id)\n SELECT tbl_temp1.fld_order_id\n FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert-select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert-select.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (299,37,'CREATE PROCEDURE','Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n PROCEDURE sp_name ([proc_parameter[,...]])\n [characteristic ...] routine_body\n\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n FUNCTION sp_name ([func_parameter[,...]])\n RETURNS type\n [characteristic ...] routine_body\n\nproc_parameter:\n [ IN | OUT | INOUT ] param_name type\n\nfunc_parameter:\n param_name type\n\ntype:\n Any valid MySQL data type\n\ncharacteristic:\n LANGUAGE SQL\n | [NOT] DETERMINISTIC\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nroutine_body:\n Valid SQL procedure statement\n\nThese statements create stored routines. By default, a routine is\nassociated with the default database. To associate the routine\nexplicitly with a given database, specify the name as db_name.sp_name\nwhen you create it.\n\nThe CREATE FUNCTION statement is also used in MySQL to support UDFs\n(user-defined functions). See\nhttp://dev.mysql.com/doc/refman/5.1/en/adding-functions.html. A UDF can\nbe regarded as an external stored function. However, do note that\nstored functions share their namespace with UDFs. See\nhttp://dev.mysql.com/doc/refman/5.1/en/function-resolution.html, for\nthe rules describing how the server interprets references to different\nkinds of functions.\n\nTo invoke a stored procedure, use the CALL statement (see [HELP CALL]).\nTo invoke a stored function, refer to it in an expression. The function\nreturns a value during expression evaluation.\n\nTo execute the CREATE PROCEDURE or CREATE FUNCTION statement, it is\nnecessary to have the CREATE ROUTINE privilege. By default, MySQL\nautomatically grants the ALTER ROUTINE and EXECUTE privileges to the\nroutine creator. This behavior can be changed by disabling the\nautomatic_sp_privileges system variable. See\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-routines-privileges.html… binary logging is enabled, the CREATE FUNCTION statement might also\nrequire the SUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-logging.html.\n\… DEFINER and SQL SECURITY clauses specify the security context to be\nused when checking access privileges at routine execution time, as\ndescribed later.\n\nIf the routine name is the same as the name of a built-in SQL function,\na syntax error occurs unless you use a space between the name and the\nfollowing parenthesis when defining the routine or invoking it later.\nFor this reason, avoid using the names of existing SQL functions for\nyour own stored routines.\n\nThe IGNORE_SPACE SQL mode applies to built-in functions, not to stored\nroutines. It is always allowable to have spaces after a stored routine\nname, regardless of whether IGNORE_SPACE is enabled.\n\nThe parameter list enclosed within parentheses must always be present.\nIf there are no parameters, an empty parameter list of () should be\nused. Parameter names are not case sensitive.\n\nEach parameter is an IN parameter by default. To specify otherwise for\na parameter, use the keyword OUT or INOUT before the parameter name.\n\n*Note*: Specifying a parameter as IN, OUT, or INOUT is valid only for a\nPROCEDURE. (FUNCTION parameters are always regarded as IN parameters.)\n\nAn IN parameter passes a value into a procedure. The procedure might\nmodify the value, but the modification is not visible to the caller\nwhen the procedure returns. An OUT parameter passes a value from the\nprocedure back to the caller. Its initial value is NULL within the\nprocedure, and its value is visible to the caller when the procedure\nreturns. An INOUT parameter is initialized by the caller, can be\nmodified by the procedure, and any change made by the procedure is\nvisible to the caller when the procedure returns.\n\nFor each OUT or INOUT parameter, pass a user-defined variable in the\nCALL statement that invokes the procedure so that you can obtain its\nvalue when the procedure returns. If you are calling the procedure from\nwithin another stored procedure or function, you can also pass a\nroutine parameter or local routine variable as an IN or INOUT\nparameter.\n\nThe following example shows a simple stored procedure that uses an OUT\nparameter:\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE simpleproc (OUT param1 INT)\n -> BEGIN\n -> SELECT COUNT(*) INTO param1 FROM t;\n -> END//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter ;\n\nmysql> CALL simpleproc(@a);\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @a;\n+------+\n| @a |\n+------+\n| 3 |\n+------+\n1 row in set (0.00 sec)\n\nThe example uses the mysql client delimiter command to change the\nstatement delimiter from ; to // while the procedure is being defined.\nThis allows the ; delimiter used in the procedure body to be passed\nthrough to the server rather than being interpreted by mysql itself.\nSee\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-defini… RETURNS clause may be specified only for a FUNCTION, for which it\nis mandatory. It indicates the return type of the function, and the\nfunction body must contain a RETURN value statement. If the RETURN\nstatement returns a value of a different type, the value is coerced to\nthe proper type. For example, if a function specifies an ENUM or SET\nvalue in the RETURNS clause, but the RETURN statement returns an\ninteger, the value returned from the function is the string for the\ncorresponding ENUM member of set of SET members.\n\nThe following example function takes a parameter, performs an operation\nusing an SQL function, and returns the result. In this case, it is\nunnecessary to use delimiter because the function definition contains\nno internal ; statement delimiters:\n\nmysql> CREATE FUNCTION hello (s CHAR(20))\nmysql> RETURNS CHAR(50) DETERMINISTIC\n -> RETURN CONCAT(\'Hello, \',s,\'!\');\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT hello(\'world\');\n+----------------+\n| hello(\'world\') |\n+----------------+\n| Hello, world! |\n+----------------+\n1 row in set (0.00 sec)\n\nParameter types and function return types can be declared to use any\nvalid data type, except that the COLLATE attribute cannot be used.\n\nThe routine_body consists of a valid SQL procedure statement. This can\nbe a simple statement such as SELECT or INSERT, or it can be a compound\nstatement written using BEGIN and END. Compound statements can contain\ndeclarations, loops, and other control structure statements. The syntax\nfor these statements is described in\nhttp://dev.mysql.com/doc/refman/5.1/en/sql-syntax-compound-statements.h… allows routines to contain DDL statements, such as CREATE and\nDROP. MySQL also allows stored procedures (but not stored functions) to\ncontain SQL transaction statements such as COMMIT. Stored functions may\nnot contain statements that perform explicit or implicit commit or\nrollback. Support for these statements is not required by the SQL\nstandard, which states that each DBMS vendor may decide whether to\nallow them.\n\nStatements that return a result set can be used within a stored\nprocedcure but not within a stored function. This prohibition includes\nSELECT statements that do not have an INTO var_list clause and other\nstatements such as SHOW, EXPLAIN, and CHECK TABLE. For statements that\ncan be determined at function definition time to return a result set, a\nNot allowed to return a result set from a function error occurs\n(ER_SP_NO_RETSET). For statements that can be determined only at\nruntime to return a result set, a PROCEDURE %s can\'t return a result\nset in the given context error occurs (ER_SP_BADSELECT).\n\nUSE statements within stored routines are disallowed. When a routine is\ninvoked, an implicit USE db_name is performed (and undone when the\nroutine terminates). The causes the routine to have the given default\ndatabase while it executes. References to objects in databases other\nthan the routine default database should be qualified with the\nappropriate database name.\n\nFor additional information about statements that are not allowed in\nstored routines, see\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.htm… information about invoking stored procedures from within programs\nwritten in a language that has a MySQL interface, see [HELP CALL].\n\nMySQL stores the sql_mode system variable setting that is in effect at\nthe time a routine is created, and always executes the routine with\nthis setting in force, regardless of the server SQL mode in effect when\nthe routine is invoked.\n\nThe switch from the SQL mode of the invoker to that of the routine\noccurs after evaluation of arguments and assignment of the resulting\nvalues to routine parameters. If you define a routine in strict SQL\nmode but invoke it in nonstrict mode, assignment of arguments to\nroutine parameters does not take place in strict mode. If you require\nthat expressions passed to a routine be assigned in strict SQL mode,\nyou should invoke the routine with strict mode in effect.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (300,20,'VARBINARY','VARBINARY(M)\n\nThe VARBINARY type is similar to the VARCHAR type, but stores binary\nbyte strings rather than nonbinary character strings. M represents the\nmaximum column length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (301,25,'LOAD INDEX','Syntax:\nLOAD INDEX INTO CACHE\n tbl_index_list [, tbl_index_list] ...\n\ntbl_index_list:\n tbl_name\n [[INDEX|KEY] (index_name[, index_name] ...)]\n [IGNORE LEAVES]\n\nThe LOAD INDEX INTO CACHE statement preloads a table index into the key\ncache to which it has been assigned by an explicit CACHE INDEX\nstatement, or into the default key cache otherwise. LOAD INDEX INTO\nCACHE is used only for MyISAM tables. It is not supported for tables\nhaving user-defined partitioning (see\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations.html.)… IGNORE LEAVES modifier causes only blocks for the nonleaf nodes of\nthe index to be preloaded.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-index.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (302,26,'UNION','Syntax:\nSELECT ...\nUNION [ALL | DISTINCT] SELECT ...\n[UNION [ALL | DISTINCT] SELECT ...]\n\nUNION is used to combine the result from multiple SELECT statements\ninto a single result set.\n\nThe column names from the first SELECT statement are used as the column\nnames for the results returned. Selected columns listed in\ncorresponding positions of each SELECT statement should have the same\ndata type. (For example, the first column selected by the first\nstatement should have the same type as the first column selected by the\nother statements.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/union.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/union.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (303,30,'TO_DAYS','Syntax:\nTO_DAYS(date)\n\nGiven a date date, returns a day number (the number of days since year\n0).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TO_DAYS(950501);\n -> 728779\nmysql> SELECT TO_DAYS(\'2007-10-07\');\n -> 733321\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (304,35,'NOT REGEXP','Syntax:\nexpr NOT REGEXP pat, expr NOT RLIKE pat\n\nThis is the same as NOT (expr REGEXP pat).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/regexp.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/regexp.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (305,25,'SHOW INDEX','Syntax:\nSHOW {INDEX | INDEXES | KEYS}\n {FROM | IN} tbl_name\n [{FROM | IN} db_name]\n\nSHOW INDEX returns table index information. The format resembles that\nof the SQLStatistics call in ODBC.\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. These two statements are equivalent:\n\nSHOW INDEX FROM mytable FROM mydb;\nSHOW INDEX FROM mydb.mytable;\n\nYou can also list a table\'s indexes with the mysqlshow -k db_name\ntbl_name command.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-index.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-index.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (306,25,'SHOW CREATE DATABASE','Syntax:\nSHOW CREATE {DATABASE | SCHEMA} db_name\n\nShows the CREATE DATABASE statement that creates the given database.\nSHOW CREATE SCHEMA is a synonym for SHOW CREATE DATABASE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-database.html\n\n','mysql> SHOW CREATE DATABASE test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n\nmysql> SHOW CREATE SCHEMA test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-database.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (307,22,'LEAVE','Syntax:\nLEAVE label\n\nThis statement is used to exit the flow control construct that has the\ngiven label. It can be used within BEGIN ... END or loop constructs\n(LOOP, REPEAT, WHILE).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/leave-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/leave-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (308,17,'NOT IN','Syntax:\nexpr NOT IN (value,...)\n\nThis is the same as NOT (expr IN (value,...)).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (309,13,'!','Syntax:\nNOT, !\n\nLogical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is\nnonzero, and NOT NULL returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT NOT 10;\n -> 0\nmysql> SELECT NOT 0;\n -> 1\nmysql> SELECT NOT NULL;\n -> NULL\nmysql> SELECT ! (1+1);\n -> 0\nmysql> SELECT ! 1+1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (310,22,'DECLARE HANDLER','Syntax:\nDECLARE handler_type HANDLER\n FOR condition_value [, condition_value] ...\n statement\n\nhandler_type:\n CONTINUE\n | EXIT\n | UNDO\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | condition_name\n | SQLWARNING\n | NOT FOUND\n | SQLEXCEPTION\n | mysql_error_code\n\nThe DECLARE ... HANDLER statement specifies handlers that each may deal\nwith one or more conditions. If one of these conditions occurs, the\nspecified statement is executed. statement can be a simple statement\n(for example, SET var_name = value), or it can be a compound statement\nwritten using BEGIN and END (see [HELP BEGIN END]).\n\nFor a CONTINUE handler, execution of the current program continues\nafter execution of the handler statement. For an EXIT handler,\nexecution terminates for the BEGIN ... END compound statement in which\nthe handler is declared. (This is true even if the condition occurs in\nan inner block.) The UNDO handler type statement is not supported.\n\nIf a condition occurs for which no handler has been declared, the\ndefault action is EXIT.\n\nA condition_value for DECLARE ... HANDLER can be any of the following\nvalues:\n\no An SQLSTATE value (a 5-character string literal) or a MySQL error\n code (a number). You should not use SQLSTATE value \'00000\' or MySQL\n error code 0, because those indicate sucess rather than an error\n condition. For a list of SQLSTATE values and MySQL error codes, see\n http://dev.mysql.com/doc/refman/5.1/en/error-messages-server.html.\n\no A condition name previously specified with DECLARE ... CONDITION. See\n [HELP DECLARE CONDITION].\n\no SQLWARNING is shorthand for the class of SQLSTATE values that begin\n with \'01\'.\n\no NOT FOUND is shorthand for the class of SQLSTATE values that begin\n with \'02\'. This is relevant only the context of cursors and is used\n to control what happens when a cursor reaches the end of a data set.\n If no more rows are available, a No Data condition occurs with\n SQLSTATE value 02000. To detect this condition, you can set up a\n handler for it (or for a NOT FOUND condition). An example is shown in\n http://dev.mysql.com/doc/refman/5.1/en/cursors.html. This condition\n also occurs for SELECT ... INTO var_list statements that retrieve no\n rows.\n\no SQLEXCEPTION is shorthand for the class of SQLSTATE values that do\n not begin with \'00\', \'01\', or \'02\'.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html\n\n','mysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1));\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE handlerdemo ()\n -> BEGIN\n -> DECLARE CONTINUE HANDLER FOR SQLSTATE \'23000\' SET @x2 = 1;\n -> SET @x = 1;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 2;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 3;\n -> END;\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL handlerdemo()//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n +------+\n | @x |\n +------+\n | 3 |\n +------+\n 1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (311,20,'DOUBLE','DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA normal-size (double-precision) floating-point number. Allowable\nvalues are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and\n2.2250738585072014E-308 to 1.7976931348623157E+308. These are the\ntheoretical limits, based on the IEEE standard. The actual range might\nbe slightly smaller depending on your hardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits allowed by the hardware. A double-precision floating-point\nnumber is accurate to approximately 15 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (312,20,'TIME','TIME\n\nA time. The range is \'-838:59:59\' to \'838:59:59\'. MySQL displays TIME\nvalues in \'HH:MM:SS\' format, but allows assignment of values to TIME\ncolumns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (313,13,'&&','Syntax:\nAND, &&\n\nLogical AND. Evaluates to 1 if all operands are nonzero and not NULL,\nto 0 if one or more operands are 0, otherwise NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html\n\n','mysql> SELECT 1 && 1;\n -> 1\nmysql> SELECT 1 && 0;\n -> 0\nmysql> SELECT 1 && NULL;\n -> NULL\nmysql> SELECT 0 && NULL;\n -> 0\nmysql> SELECT NULL && 0;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (314,10,'X','X(p)\n\nReturns the X-coordinate value for the point p as a double-precision\nnumber.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…','mysql> SET @pt = \'Point(56.7 53.34)\';\nmysql> SELECT X(GeomFromText(@pt));\n+----------------------+\n| X(GeomFromText(@pt)) |\n+----------------------+\n| 56.7 |\n+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (315,15,'FOUND_ROWS','Syntax:\nFOUND_ROWS()\n\nA SELECT statement may include a LIMIT clause to restrict the number of\nrows the server returns to the client. In some cases, it is desirable\nto know how many rows the statement would have returned without the\nLIMIT, but without running the statement again. To obtain this row\ncount, include a SQL_CALC_FOUND_ROWS option in the SELECT statement,\nand then invoke FOUND_ROWS() afterward:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name\n -> WHERE id > 100 LIMIT 10;\nmysql> SELECT FOUND_ROWS();\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (316,15,'SYSTEM_USER','Syntax:\nSYSTEM_USER()\n\nSYSTEM_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (317,29,'CROSSES','Crosses(g1,g2)\n\nReturns 1 if g1 spatially crosses g2. Returns NULL if g1 is a Polygon\nor a MultiPolygon, or if g2 is a Point or a MultiPoint. Otherwise,\nreturns 0.\n\nThe term spatially crosses denotes a spatial relation between two given\ngeometries that has the following properties:\n\no The two geometries intersect\n\no Their intersection results in a geometry that has a dimension that is\n one less than the maximum dimension of the two given geometries\n\no Their intersection is not equal to either of the two given geometries\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (318,26,'TRUNCATE TABLE','Syntax:\nTRUNCATE [TABLE] tbl_name\n\nTRUNCATE TABLE empties a table completely. Logically, this is\nequivalent to a DELETE statement that deletes all rows, but there are\npractical differences under some circumstances.\n\nFor an InnoDB table, InnoDB processes TRUNCATE TABLE by deleting rows\none by one if there are any FOREIGN KEY constraints that reference the\ntable. If there are no FOREIGN KEY constraints, InnoDB performs fast\ntruncation by dropping the original table and creating an empty one\nwith the same definition, which is much faster than deleting rows one\nby one. The AUTO_INCREMENT counter is reset by TRUNCATE TABLE,\nregardless of whether there is a FOREIGN KEY constraint.\n\nIn the case that FOREIGN KEY constraints reference the table, InnoDB\ndeletes rows one by one and processes the constraints on each one. If\nthe FOREIGN KEY constraint specifies DELETE CASCADE, rows from the\nchild (referenced) table are deleted, and the truncated table becomes\nempty. If the FOREIGN KEY constraint does not specify CASCADE, the\nTRUNCATE statement deletes rows one by one and stops if it encounters a\nparent row that is referenced by the child, returning this error:\n\nERROR 1451 (23000): Cannot delete or update a parent row: a foreign\nkey constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1`\nFOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))\n\nThis is the same as a DELETE statement with no WHERE clause.\n\nBeginning with MySQL 5.1.32, TRUNCATE is treated for purposes of binary\nlogging and replication as DROP TABLE followed by CREATE TABLE --- that\nis, as DDL rather than DML. This is due to the fact that, when using\nInnoDB and other transactional storage engines where the transaction\nisolation level does not allow for statement-based logging (READ\nCOMMITTED or READ UNCOMMITTED), the statement was not logged and\nreplicated when using STATEMENT or MIXED logging mode. (Bug#36763\n(http://bugs.mysql.com/36763)) However, it is still applied on\nreplication slaves using InnoDB in the manner described previously.\n\nThe count of rows affected by TRUNCATE TABLE is accurate only when it\nis mapped to a DELETE statement.\n\nFor other storage engines, TRUNCATE TABLE differs from DELETE in the\nfollowing ways in MySQL 5.1:\n\no Truncate operations drop and re-create the table, which is much\n faster than deleting rows one by one, particularly for large tables.\n\no Truncate operations cause an implicit commit.\n\no Truncation operations cannot be performed if the session holds an\n active table lock.\n\no Truncation operations do not return a meaningful value for the number\n of deleted rows. The usual result is "0 rows affected," which should\n be interpreted as "no information."\n\no As long as the table format file tbl_name.frm is valid, the table can\n be re-created as an empty table with TRUNCATE TABLE, even if the data\n or index files have become corrupted.\n\no The table handler does not remember the last used AUTO_INCREMENT\n value, but starts counting from the beginning. This is true even for\n MyISAM and InnoDB, which normally do not reuse sequence values.\n\no When used with partitioned tables, TRUNCATE TABLE preserves the\n partitioning; that is, the data and index files are dropped and\n re-created, while the partition definitions (.par) file is\n unaffected.\n\no Since truncation of a table does not make any use of DELETE, the\n TRUNCATE statement does not invoke ON DELETE triggers.\n\nTRUNCATE TABLE requires the DROP privilege as of MySQL 5.1.16. (Before\n5.1.16, it requires the DELETE privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/truncate.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/truncate.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (319,16,'BIT_XOR','Syntax:\nBIT_XOR(expr)\n\nReturns the bitwise XOR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (320,30,'CURRENT_DATE','Syntax:\nCURRENT_DATE, CURRENT_DATE()\n\nCURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (321,25,'START SLAVE','Syntax:\nSTART SLAVE [thread_type [, thread_type] ... ]\nSTART SLAVE [SQL_THREAD] UNTIL\n MASTER_LOG_FILE = \'log_name\', MASTER_LOG_POS = log_pos\nSTART SLAVE [SQL_THREAD] UNTIL\n RELAY_LOG_FILE = \'log_name\', RELAY_LOG_POS = log_pos\n\nthread_type: IO_THREAD | SQL_THREAD\n\nSTART SLAVE with no thread_type options starts both of the slave\nthreads. The I/O thread reads queries from the master server and stores\nthem in the relay log. The SQL thread reads the relay log and executes\nthe queries. START SLAVE requires the SUPER privilege.\n\nIf START SLAVE succeeds in starting the slave threads, it returns\nwithout any error. However, even in that case, it might be that the\nslave threads start and then later stop (for example, because they do\nnot manage to connect to the master or read its binary logs, or some\nother problem). START SLAVE does not warn you about this. You must\ncheck the slave\'s error log for error messages generated by the slave\nthreads, or check that they are running satisfactorily with SHOW SLAVE\nSTATUS.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/start-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/start-slave.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (322,2,'AREA','Area(poly)\n\nReturns as a double-precision number the area of the Polygon value\npoly, as measured in its spatial reference system.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly = \'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))\';\nmysql> SELECT Area(GeomFromText(@poly));\n+---------------------------+\n| Area(GeomFromText(@poly)) |\n+---------------------------+\n| 4 |\n+---------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (323,22,'BEGIN END','Syntax:\n[begin_label:] BEGIN\n [statement_list]\nEND [end_label]\n\nBEGIN ... END syntax is used for writing compound statements, which can\nappear within stored programs. A compound statement can contain\nmultiple statements, enclosed by the BEGIN and END keywords.\nstatement_list represents a list of one or more statements, each\nterminated by a semicolon (;) statement delimiter. statement_list is\noptional, which means that the empty compound statement (BEGIN END) is\nlegal.\n\nUse of multiple statements requires that a client is able to send\nstatement strings containing the ; statement delimiter. This is handled\nin the mysql command-line client with the delimiter command. Changing\nthe ; end-of-statement delimiter (for example, to //) allows ; to be\nused in a program body. For an example, see\nhttp://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html.\… compound statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/begin-end.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/begin-end.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (324,25,'FLUSH','Syntax:\nFLUSH [NO_WRITE_TO_BINLOG | LOCAL]\n flush_option [, flush_option] ...\n\nThe FLUSH statement clears or reloads various internal caches used by\nMySQL. To execute FLUSH, you must have the RELOAD privilege.\n\nThe RESET statement is similar to FLUSH. See [HELP RESET].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/flush.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/flush.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (325,25,'SHOW PROCEDURE STATUS','Syntax:\nSHOW PROCEDURE STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is a MySQL extension. It returns characteristics of a\nstored procedure, such as the database, name, type, creator, creation\nand modification dates, and character set information. A similar\nstatement, SHOW FUNCTION STATUS, displays information about stored\nfunctions (see [HELP SHOW FUNCTION STATUS]).\n\nThe LIKE clause, if present, indicates which procedure or function\nnames to match. The WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-procedure-status.html\n\n','mysql> SHOW PROCEDURE STATUS LIKE \'sp1\'\\G\n*************************** 1. row ***************************\n Db: test\n Name: sp1\n Type: PROCEDURE\n Definer: testuser@localhost\n Modified: 2004-08-03 15:29:37\n Created: 2004-08-03 15:29:37\n Security_type: DEFINER\n Comment:\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-procedure-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (326,25,'SHOW WARNINGS','Syntax:\nSHOW WARNINGS [LIMIT [offset,] row_count]\nSHOW COUNT(*) WARNINGS\n\nSHOW WARNINGS shows the error, warning, and note messages that resulted\nfrom the last statement that generated messages in the current session.\nIt shows nothing if the last statement used a table and generated no\nmessages. (That is, a statement that uses a table but generates no\nmessages clears the message list.) Statements that do not use tables\nand do not generate messages have no effect on the message list.\n\nWarnings are generated for DML statements such as INSERT, UPDATE, and\nLOAD DATA INFILE as well as DDL statements such as CREATE TABLE and\nALTER TABLE.\n\nA related statement, SHOW ERRORS, shows only the errors. See [HELP SHOW\nERRORS].\n\nThe SHOW COUNT(*) WARNINGS statement displays the total number of\nerrors, warnings, and notes. You can also retrieve this number from the\nwarning_count variable:\n\nSHOW COUNT(*) WARNINGS;\nSELECT @@warning_count;\n\nThe value of warning_count might be greater than the number of messages\ndisplayed by SHOW WARNINGS if the max_error_count system variable is\nset so low that not all messages are stored. An example shown later in\nthis section demonstrates how this can happen.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-warnings.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-warnings.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (327,27,'DESCRIBE','Syntax:\n{DESCRIBE | DESC} tbl_name [col_name | wild]\n\nDESCRIBE provides information about the columns in a table. It is a\nshortcut for SHOW COLUMNS FROM. These statements also display\ninformation for views. (See [HELP SHOW COLUMNS].)\n\ncol_name can be a column name, or a string containing the SQL "%" and\n"_" wildcard characters to obtain output only for the columns with\nnames matching the string. There is no need to enclose the string\nwithin quotes unless it contains spaces or other special characters.\n\nmysql> DESCRIBE City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n5 rows in set (0.00 sec)\n\nThe description for SHOW COLUMNS provides more information about the\noutput columns (see [HELP SHOW COLUMNS]).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/describe.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/describe.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (328,9,'DROP USER','Syntax:\nDROP USER user [, user] ...\n\nThe DROP USER statement removes one or more MySQL accounts. It removes\nprivilege rows for the account from all grant tables. To use this\nstatement, you must have the global CREATE USER privilege or the DELETE\nprivilege for the mysql database. Each account is named using the same\nformat as for the GRANT statement; for example, \'jeffrey\'@\'localhost\'.\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used. For additional information about specifying\naccount names, see [HELP GRANT].\n\nWith DROP USER, you can remove an account and its privileges as\nfollows:\n\nDROP USER user;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-user.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-user.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (329,16,'STDDEV_POP','Syntax:\nSTDDEV_POP(expr)\n\nReturns the population standard deviation of expr (the square root of\nVAR_POP()). You can also use STD() or STDDEV(), which are equivalent\nbut not standard SQL.\n\nSTDDEV_POP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (330,25,'SHOW CHARACTER SET','Syntax:\nSHOW CHARACTER SET\n [LIKE \'pattern\' | WHERE expr]\n\nThe SHOW CHARACTER SET statement shows all available character sets.\nThe LIKE clause, if present, indicates which character set names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. For example:\n\nmysql> SHOW CHARACTER SET LIKE \'latin%\';\n+---------+-----------------------------+-------------------+--------+\n| Charset | Description | Default collation | Maxlen |\n+---------+-----------------------------+-------------------+--------+\n| latin1 | cp1252 West European | latin1_swedish_ci | 1 |\n| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |\n| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |\n| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |\n+---------+-----------------------------+-------------------+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-character-set.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-character-set.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (331,35,'SUBSTRING','Syntax:\nSUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len),\nSUBSTRING(str FROM pos FOR len)\n\nThe forms without a len argument return a substring from string str\nstarting at position pos. The forms with a len argument return a\nsubstring len characters long from string str, starting at position\npos. The forms that use FROM are standard SQL syntax. It is also\npossible to use a negative value for pos. In this case, the beginning\nof the substring is pos characters from the end of the string, rather\nthan the beginning. A negative value may be used for pos in any of the\nforms of this function.\n\nFor all forms of SUBSTRING(), the position of the first character in\nthe string from which the substring is to be extracted is reckoned as\n1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SUBSTRING(\'Quadratically\',5);\n -> \'ratically\'\nmysql> SELECT SUBSTRING(\'foobarbar\' FROM 4);\n -> \'barbar\'\nmysql> SELECT SUBSTRING(\'Quadratically\',5,6);\n -> \'ratica\'\nmysql> SELECT SUBSTRING(\'Sakila\', -3);\n -> \'ila\'\nmysql> SELECT SUBSTRING(\'Sakila\', -5, 3);\n -> \'aki\'\nmysql> SELECT SUBSTRING(\'Sakila\' FROM -4 FOR 2);\n -> \'ki\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (332,34,'ISEMPTY','IsEmpty(g)\n\nReturns 1 if the geometry value g is the empty geometry, 0 if it is not\nempty, and -1 if the argument is NULL. If the geometry is empty, it\nrepresents the empty point set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (333,25,'SHOW FUNCTION STATUS','Syntax:\nSHOW FUNCTION STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is similar to SHOW PROCEDURE STATUS but for stored\nfunctions. See [HELP SHOW PROCEDURE STATUS].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-function-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-function-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (334,35,'LTRIM','Syntax:\nLTRIM(str)\n\nReturns the string str with leading space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LTRIM(\' barbar\');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (335,29,'INTERSECTS','Intersects(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially intersects g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (336,26,'CALL','Syntax:\nCALL sp_name([parameter[,...]])\nCALL sp_name[()]\n\nThe CALL statement invokes a stored procedure that was defined\npreviously with CREATE PROCEDURE.\n\nAs of MySQL 5.1.13, stored procedures that take no arguments can be\ninvoked without parentheses. That is, CALL p() and CALL p are\nequivalent.\n\nCALL can pass back values to its caller using parameters that are\ndeclared as OUT or INOUT parameters. When the procedure returns, a\nclient program can also obtain the number of rows affected for the\nfinal statement executed within the routine: At the SQL level, call the\nROW_COUNT() function; from the C API, call the mysql_affected_rows()\nfunction.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/call.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/call.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (337,6,'MBRDISJOINT','MBRDisjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangles of\nthe two geometries g1 and g2 are disjoint (do not intersect).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (338,14,'VALUES','Syntax:\nVALUES(col_name)\n\nIn an INSERT ... ON DUPLICATE KEY UPDATE statement, you can use the\nVALUES(col_name) function in the UPDATE clause to refer to column\nvalues from the INSERT portion of the statement. In other words,\nVALUES(col_name) in the UPDATE clause refers to the value of col_name\nthat would be inserted, had no duplicate-key conflict occurred. This\nfunction is especially useful in multiple-row inserts. The VALUES()\nfunction is meaningful only in INSERT ... ON DUPLICATE KEY UPDATE\nstatements and returns NULL otherwise.\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html…: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)\n -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (339,35,'SUBSTRING_INDEX','Syntax:\nSUBSTRING_INDEX(str,delim,count)\n\nReturns the substring from string str before count occurrences of the\ndelimiter delim. If count is positive, everything to the left of the\nfinal delimiter (counting from the left) is returned. If count is\nnegative, everything to the right of the final delimiter (counting from\nthe right) is returned. SUBSTRING_INDEX() performs a case-sensitive\nmatch when searching for delim.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', 2);\n -> \'www.mysql\'\nmysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', -2);\n -> \'mysql.com\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (340,11,'ENCODE','Syntax:\nENCODE(str,pass_str)\n\nEncrypt str using pass_str as the password. To decrypt the result, use\nDECODE().\n\nThe result is a binary string of the same length as str.\n\nThe strength of the encryption is based on how good the random\ngenerator is. It should suffice for short strings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (341,22,'LOOP','Syntax:\n[begin_label:] LOOP\n statement_list\nEND LOOP [end_label]\n\nLOOP implements a simple loop construct, enabling repeated execution of\nthe statement list, which consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter. The statements\nwithin the loop are repeated until the loop is exited; usually this is\naccomplished with a LEAVE statement.\n\nA LOOP statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/loop-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/loop-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (342,4,'TRUNCATE','Syntax:\nTRUNCATE(X,D)\n\nReturns the number X, truncated to D decimal places. If D is 0, the\nresult has no decimal point or fractional part. D can be negative to\ncause D digits left of the decimal point of the value X to become zero.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT TRUNCATE(1.223,1);\n -> 1.2\nmysql> SELECT TRUNCATE(1.999,1);\n -> 1.9\nmysql> SELECT TRUNCATE(1.999,0);\n -> 1\nmysql> SELECT TRUNCATE(-1.999,1);\n -> -1.9\nmysql> SELECT TRUNCATE(122,-2);\n -> 100\nmysql> SELECT TRUNCATE(10.28*100,0);\n -> 1028\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (343,30,'TIMESTAMPADD','Syntax:\nTIMESTAMPADD(unit,interval,datetime_expr)\n\nAdds the integer expression interval to the date or datetime expression\ndatetime_expr. The unit for interval is given by the unit argument,\nwhich should be one of the following values: FRAC_SECOND\n(microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or\nYEAR.\n\nBeginning with MySQL 5.1.24, it is possible to use MICROSECOND in place\nof FRAC_SECOND with this function, and FRAC_SECOND is deprecated.\n\nThe unit value may be specified using one of keywords as shown, or with\na prefix of SQL_TSI_. For example, DAY and SQL_TSI_DAY both are legal.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPADD(MINUTE,1,\'2003-01-02\');\n -> \'2003-01-02 00:01:00\'\nmysql> SELECT TIMESTAMPADD(WEEK,1,\'2003-01-02\');\n -> \'2003-01-09\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (344,25,'SHOW','SHOW has many forms that provide information about databases, tables,\ncolumns, or status information about the server. This section describes\nthose following:\n\nSHOW AUTHORS\nSHOW CHARACTER SET [like_or_where]\nSHOW COLLATION [like_or_where]\nSHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]\nSHOW CONTRIBUTORS\nSHOW CREATE DATABASE db_name\nSHOW CREATE EVENT event_name\nSHOW CREATE FUNCTION func_name\nSHOW CREATE PROCEDURE proc_name\nSHOW CREATE TABLE tbl_name\nSHOW CREATE TRIGGER trigger_name\nSHOW CREATE VIEW view_name\nSHOW DATABASES [like_or_where]\nSHOW ENGINE engine_name {STATUS | MUTEX}\nSHOW [STORAGE] ENGINES\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW [FULL] EVENTS\nSHOW FUNCTION CODE func_name\nSHOW FUNCTION STATUS [like_or_where]\nSHOW GRANTS FOR user\nSHOW INDEX FROM tbl_name [FROM db_name]\nSHOW INNODB STATUS\nSHOW OPEN TABLES [FROM db_name] [like_or_where]\nSHOW PLUGINS\nSHOW PROCEDURE CODE proc_name\nSHOW PROCEDURE STATUS [like_or_where]\nSHOW PRIVILEGES\nSHOW [FULL] PROCESSLIST\nSHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]\nSHOW PROFILES\nSHOW SCHEDULER STATUS\nSHOW [GLOBAL | SESSION] STATUS [like_or_where]\nSHOW TABLE STATUS [FROM db_name] [like_or_where]\nSHOW TABLES [FROM db_name] [like_or_where]\nSHOW TRIGGERS [FROM db_name] [like_or_where]\nSHOW [GLOBAL | SESSION] VARIABLES [like_or_where]\nSHOW WARNINGS [LIMIT [offset,] row_count]\n\nlike_or_where:\n LIKE \'pattern\'\n | WHERE expr\n\nIf the syntax for a given SHOW statement includes a LIKE \'pattern\'\npart, \'pattern\' is a string that can contain the SQL "%" and "_"\nwildcard characters. The pattern is useful for restricting statement\noutput to matching values.\n\nSeveral SHOW statements also accept a WHERE clause that provides more\nflexibility in specifying which rows to display. See\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (345,17,'GREATEST','Syntax:\nGREATEST(value1,value2,...)\n\nWith two or more arguments, returns the largest (maximum-valued)\nargument. The arguments are compared using the same rules as for\nLEAST().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT GREATEST(2,0);\n -> 2\nmysql> SELECT GREATEST(34.0,3.0,5.0,767.0);\n -> 767.0\nmysql> SELECT GREATEST(\'B\',\'A\',\'C\');\n -> \'C\'\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (346,25,'SHOW VARIABLES','Syntax:\nSHOW [GLOBAL | SESSION] VARIABLES\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW VARIABLES shows the values of MySQL system variables. This\ninformation also can be obtained using the mysqladmin variables\ncommand. The LIKE clause, if present, indicates which variable names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. This\nstatement does not require any privilege. It requires only the ability\nto connect to the server.\n\nWith the GLOBAL modifier, SHOW VARIABLES displays the values that are\nused for new connections to MySQL. With SESSION, it displays the values\nthat are in effect for the current connection. If no modifier is\npresent, the default is SESSION. LOCAL is a synonym for SESSION.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern. To obtain the row for a\nspecific variable, use a LIKE clause as shown:\n\nSHOW VARIABLES LIKE \'max_join_size\';\nSHOW SESSION VARIABLES LIKE \'max_join_size\';\n\nTo get a list of variables whose name match a pattern, use the "%"\nwildcard character in a LIKE clause:\n\nSHOW VARIABLES LIKE \'%size%\';\nSHOW GLOBAL VARIABLES LIKE \'%size%\';\n\nWildcard characters can be used in any position within the pattern to\nbe matched. Strictly speaking, because "_" is a wildcard that matches\nany single character, you should escape it as "\\_" to match it\nliterally. In practice, this is rarely necessary.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-variables.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-variables.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (347,25,'BINLOG','Syntax:\nBINLOG \'str\'\n\nBINLOG is an internal-use statement. It is generated by the mysqlbinlog\nprogram as the printable representation of certain events in binary log\nfiles. (See http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html.)\nThe \'str\' value is a base 64-encoded string the that server decodes to\ndetermine the data change indicated by the corresponding event. This\nstatement requires the SUPER privilege. It was added in MySQL 5.1.5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/binlog.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/binlog.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (348,16,'BIT_AND','Syntax:\nBIT_AND(expr)\n\nReturns the bitwise AND of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (349,30,'SECOND','Syntax:\nSECOND(time)\n\nReturns the second for time, in the range 0 to 59.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT SECOND(\'10:05:03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (350,4,'ATAN2','Syntax:\nATAN(Y,X), ATAN2(Y,X)\n\nReturns the arc tangent of the two variables X and Y. It is similar to\ncalculating the arc tangent of Y / X, except that the signs of both\narguments are used to determine the quadrant of the result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(-2,2);\n -> -0.78539816339745\nmysql> SELECT ATAN2(PI(),0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (351,6,'MBRCONTAINS','MBRContains(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1\ncontains the Minimum Bounding Rectangle of g2. This tests the opposite\nrelationship as MBRWithin().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Point(1 1)\');\nmysql> SELECT MBRContains(@g1,@g2), MBRContains(@g2,@g1);\n----------------------+----------------------+\n| MBRContains(@g1,@g2) | MBRContains(@g2,@g1) |\n+----------------------+----------------------+\n| 1 | 0 |\n+----------------------+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (352,30,'HOUR','Syntax:\nHOUR(time)\n\nReturns the hour for time. The range of the return value is 0 to 23 for\ntime-of-day values. However, the range of TIME values actually is much\nlarger, so HOUR can return values greater than 23.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT HOUR(\'10:05:03\');\n -> 10\nmysql> SELECT HOUR(\'272:59:59\');\n -> 272\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (353,26,'SELECT','Syntax:\nSELECT\n [ALL | DISTINCT | DISTINCTROW ]\n [HIGH_PRIORITY]\n [STRAIGHT_JOIN]\n [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]\n [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]\n select_expr [, select_expr ...]\n [FROM table_references\n [WHERE where_condition]\n [GROUP BY {col_name | expr | position}\n [ASC | DESC], ... [WITH ROLLUP]]\n [HAVING where_condition]\n [ORDER BY {col_name | expr | position}\n [ASC | DESC], ...]\n [LIMIT {[offset,] row_count | row_count OFFSET offset}]\n [PROCEDURE procedure_name(argument_list)]\n [INTO OUTFILE \'file_name\' export_options\n | INTO DUMPFILE \'file_name\'\n | INTO var_name [, var_name]]\n [FOR UPDATE | LOCK IN SHARE MODE]]\n\nSELECT is used to retrieve rows selected from one or more tables, and\ncan include UNION statements and subqueries. See [HELP UNION], and\nhttp://dev.mysql.com/doc/refman/5.1/en/subqueries.html.\n\nThe most commonly used clauses of SELECT statements are these:\n\no Each select_expr indicates a column that you want to retrieve. There\n must be at least one select_expr.\n\no table_references indicates the table or tables from which to retrieve\n rows. Its syntax is described in [HELP JOIN].\n\no The WHERE clause, if given, indicates the condition or conditions\n that rows must satisfy to be selected. where_condition is an\n expression that evaluates to true for each row to be selected. The\n statement selects all rows if there is no WHERE clause.\n\n In the WHERE clause, you can use any of the functions and operators\n that MySQL supports, except for aggregate (summary) functions. See\n http://dev.mysql.com/doc/refman/5.1/en/functions.html.\n\nSELECT can also be used to retrieve rows computed without reference to\nany table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/select.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (354,4,'COT','Syntax:\nCOT(X)\n\nReturns the cotangent of X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT COT(12);\n -> -1.5726734063977\nmysql> SELECT COT(0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (355,25,'SHOW CREATE EVENT','Syntax:\nSHOW CREATE EVENT event_name\n\nThis statement displays the CREATE EVENT statement needed to re-create\na given event. For example (using the same event e_daily defined and\nthen altered in [HELP SHOW EVENTS]):\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-event.html\n\n','mysql> SHOW CREATE EVENT test.e_daily\\G\n*************************** 1. row ***************************\n Event: e_daily\n sql_mode:\n time_zone: SYSTEM\n Create Event: CREATE EVENT `e_daily`\n ON SCHEDULE EVERY 1 DAY\n STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR\n ON COMPLETION NOT PRESERVE\n ENABLE\n COMMENT \'Saves total number of sessions then\n clears the table each day\'\n DO BEGIN\n INSERT INTO site_activity.totals (time, total)\n SELECT CURRENT_TIMESTAMP, COUNT(*)\n FROM site_activity.sessions;\n DELETE FROM site_activity.sessions;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.1/en/show-create-event.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (356,19,'BACKUP TABLE','Syntax:\nBACKUP TABLE tbl_name [, tbl_name] ... TO \'/path/to/backup/directory\'\n\n*Note*: This statement is deprecated. We are working on a better\nreplacement for it that will provide online backup capabilities. In the\nmeantime, the mysqlhotcopy script can be used instead.\n\nBACKUP TABLE copies to the backup directory the minimum number of table\nfiles needed to restore the table, after flushing any buffered changes\nto disk. The statement works only for MyISAM tables. It copies the .frm\ndefinition and .MYD data files. The .MYI index file can be rebuilt from\nthose two files. The directory should be specified as a full path name.\nTo restore the table, use RESTORE TABLE.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/backup-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/backup-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (357,35,'LOAD_FILE','Syntax:\nLOAD_FILE(file_name)\n\nReads the file and returns the file contents as a string. To use this\nfunction, the file must be located on the server host, you must specify\nthe full path name to the file, and you must have the FILE privilege.\nThe file must be readable by all and its size less than\nmax_allowed_packet bytes. If the secure_file_priv system variable is\nset to a nonempty directory name, the file to be loaded must be located\nin that directory.\n\nIf the file does not exist or cannot be read because one of the\npreceding conditions is not satisfied, the function returns NULL.\n\nAs of MySQL 5.1.6, the character_set_filesystem system variable\ncontrols interpretation of file names that are given as literal\nstrings.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> UPDATE t\n SET blob_col=LOAD_FILE(\'/tmp/picture\')\n WHERE id=1;\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (358,25,'LOAD TABLE FROM MASTER','Syntax:\nLOAD TABLE tbl_name FROM MASTER\n\nThis feature is deprecated and should be avoided. It is subject to\nremoval in a future version of MySQL.\n\nSince the current implementation of LOAD DATA FROM MASTER and LOAD\nTABLE FROM MASTER is very limited, these statements are deprecated in\nversions 4.1 of MySQL and above. We will introduce a more advanced\ntechnique (called "online backup") in a future version. That technique\nwill have the additional advantage of working with more storage\nengines.\n\nFor MySQL 5.1 and earlier, the recommended alternative solution to\nusing LOAD DATA FROM MASTER or LOAD TABLE FROM MASTER is using\nmysqldump or mysqlhotcopy. The latter requires Perl and two Perl\nmodules (DBI and DBD:mysql) and works for MyISAM and ARCHIVE tables\nonly. With mysqldump, you can create SQL dumps on the master and pipe\n(or copy) these to a mysql client on the slave. This has the advantage\nof working for all storage engines, but can be quite slow, since it\nworks using SELECT.\n\nTransfers a copy of the table from the master to the slave. This\nstatement is implemented mainly debugging LOAD DATA FROM MASTER\noperations. To use LOAD TABLE, the account used for connecting to the\nmaster server must have the RELOAD and SUPER privileges on the master\nand the SELECT privilege for the master table to load. On the slave\nside, the user that issues LOAD TABLE FROM MASTER must have privileges\nfor dropping and creating the table.\n\nThe conditions for LOAD DATA FROM MASTER apply here as well. For\nexample, LOAD TABLE FROM MASTER works only for MyISAM tables. The\ntimeout notes for LOAD DATA FROM MASTER apply as well.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-table-from-master.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-table-from-master.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (359,3,'POINTFROMTEXT','PointFromText(wkt[,srid])\n\nConstructs a POINT value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (360,16,'GROUP_CONCAT','Syntax:\nGROUP_CONCAT(expr)\n\nThis function returns a string result with the concatenated non-NULL\nvalues from a group. It returns NULL if there are no non-NULL values.\nThe full syntax is as follows:\n\nGROUP_CONCAT([DISTINCT] expr [,expr ...]\n [ORDER BY {unsigned_integer | col_name | expr}\n [ASC | DESC] [,col_name ...]]\n [SEPARATOR str_val])\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name,\n -> GROUP_CONCAT(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (361,30,'DATE_FORMAT','Syntax:\nDATE_FORMAT(date,format)\n\nFormats the date value according to the format string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2009-10-04 22:23:00\', \'%W %M %Y\');\n -> \'Sunday October 2009\'\nmysql> SELECT DATE_FORMAT(\'2007-10-04 22:23:00\', \'%H:%i:%s\');\n -> \'22:23:00\'\nmysql> SELECT DATE_FORMAT(\'1900-10-04 22:23:00\',\n -> \'%D %y %a %d %m %b %j\');\n -> \'4th 00 Thu 04 10 Oct 277\'\nmysql> SELECT DATE_FORMAT(\'1997-10-04 22:23:00\',\n -> \'%H %k %I %r %T %S %w\');\n -> \'22 22 10 10:23:00 PM 22:23:00 00 6\'\nmysql> SELECT DATE_FORMAT(\'1999-01-01\', \'%X %V\');\n -> \'1998 52\'\nmysql> SELECT DATE_FORMAT(\'2006-06-00\', \'%d\');\n -> \'00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (362,15,'BENCHMARK','Syntax:\nBENCHMARK(count,expr)\n\nThe BENCHMARK() function executes the expression expr repeatedly count\ntimes. It may be used to time how quickly MySQL processes the\nexpression. The result value is always 0. The intended use is from\nwithin the mysql client, which reports query execution times:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\'));\n+----------------------------------------------+\n| BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\')) |\n+----------------------------------------------+\n| 0 |\n+----------------------------------------------+\n1 row in set (4.74 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (363,30,'YEAR','Syntax:\nYEAR(date)\n\nReturns the year for date, in the range 1000 to 9999, or 0 for the\n"zero" date.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT YEAR(\'1987-01-01\');\n -> 1987\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (364,25,'SHOW ENGINE','Syntax:\nSHOW ENGINE engine_name {STATUS | MUTEX}\n\nSHOW ENGINE displays operational information about a storage engine.\nThe following statements currently are supported:\n\nSHOW ENGINE INNODB STATUS\nSHOW ENGINE INNODB MUTEX\nSHOW ENGINE {NDB | NDBCLUSTER} STATUS\n\nOlder (and now deprecated) synonyms are SHOW INNODB STATUS for SHOW\nENGINE INNODB STATUS and SHOW MUTEX STATUS for SHOW ENGINE INNODB\nMUTEX.\n\nIn MySQL 5.0, SHOW ENGINE INNODB MUTEX is invoked as SHOW MUTEX STATUS.\nThe latter statement displays similar information but in a somewhat\ndifferent output format.\n\nSHOW ENGINE BDB LOGS formerly displayed status information about BDB\nlog files. As of MySQL 5.1.12, the BDB storage engine is not supported,\nand this statement produces a warning.\n\nSHOW ENGINE INNODB STATUS displays extensive information from the\nstandard InnoDB Monitor about the state of the InnoDB storage engine.\nFor information about the standard monitor and other InnoDB Monitors\nthat provide information about InnoDB processing, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-monitors.html.\n\nSHOW ENGINE INNODB MUTEX displays InnoDB mutex statistics. From MySQL\n5.1.2 to 5.1.14, the statement displays the following output fields:\n\no Type\n\n Always InnoDB.\n\no Name\n\n The mutex name and the source file where it is implemented. Example:\n &pool->mutex:mem0pool.c\n\n The mutex name indicates its purpose. For example, the log_sys mutex\n is used by the InnoDB logging subsystem and indicates how intensive\n logging activity is. The buf_pool mutex protects the InnoDB buffer\n pool.\n\no Status\n\n The mutex status. The fields contains several values:\n\n o count indicates how many times the mutex was requested.\n\n o spin_waits indicates how many times the spinlock had to run.\n\n o spin_rounds indicates the number of spinlock rounds. (spin_rounds\n divided by spin_waits provides the average round count.)\n\n o os_waits indicates the number of operating system waits. This\n occurs when the spinlock did not work (the mutex was not locked\n during the spinlock and it was necessary to yield to the operating\n system and wait).\n\n o os_yields indicates the number of times a the thread trying to lock\n a mutex gave up its timeslice and yielded to the operating system\n (on the presumption that allowing other threads to run will free\n the mutex so that it can be locked).\n\n o os_wait_times indicates the amount of time (in ms) spent in\n operating system waits, if the timed_mutexes system variable is 1\n (ON). If timed_mutexes is 0 (OFF), timing is disabled, so\n os_wait_times is 0. timed_mutexes is off by default.\n\nFrom MySQL 5.1.15 on, the statement displays the following output\nfields:\n\no Type\n\n Always InnoDB.\n\no Name\n\n The source file where the mutex is implemented, and the line number\n in the file where the mutex is created. The line number may change\n depending on your version of MySQL.\n\no Status\n\n This field displays the same values as previously described (count,\n spin_waits, spin_rounds, os_waits, os_yields, os_wait_times), but\n only if UNIV_DEBUG was defined at MySQL compilation time (for\n example, in include/univ.h in the InnoDB part of the MySQL source\n tree). If UNIV_DEBUG was not defined, the statement displays only the\n os_waits value. In the latter case (without UNIV_DEBUG), the\n information on which the output is based is insufficient to\n distinguish regular mutexes and mutexes that protect rw-locks (which\n allow multiple readers or a single writer). Consequently, the output\n may appear to contain multiple rows for the same mutex.\n\nInformation from this statement can be used to diagnose system\nproblems. For example, large values of spin_waits and spin_rounds may\nindicate scalability problems.\n\nIf the server has the NDBCLUSTER storage engine enabled, SHOW ENGINE\nNDB STATUS displays cluster status information such as the number of\nconnected data nodes, the cluster connectstring, and cluster binlog\nepochs, as well as counts of various Cluster API objects created by the\nMySQL Server when connected to the cluster. Sample output from this\nstatement is shown here:\n\nmysql> SHOW ENGINE NDB STATUS;\n+------------+-----------------------+--------------------------------------------------+\n| Type | Name | Status |\n+------------+-----------------------+--------------------------------------------------+\n| ndbcluster | connection | cluster_node_id=7,\n connected_host=192.168.0.103, connected_port=1186, number_of_data_nodes=4,\n number_of_ready_data_nodes=3, connect_count=0 |\n| ndbcluster | NdbTransaction | created=6, free=0, sizeof=212 |\n| ndbcluster | NdbOperation | created=8, free=8, sizeof=660 |\n| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744 |\n| ndbcluster | NdbIndexOperation | created=0, free=0, sizeof=664 |\n| ndbcluster | NdbRecAttr | created=1285, free=1285, sizeof=60 |\n| ndbcluster | NdbApiSignal | created=16, free=16, sizeof=136 |\n| ndbcluster | NdbLabel | created=0, free=0, sizeof=196 |\n| ndbcluster | NdbBranch | created=0, free=0, sizeof=24 |\n| ndbcluster | NdbSubroutine | created=0, free=0, sizeof=68 |\n| ndbcluster | NdbCall | created=0, free=0, sizeof=16 |\n| ndbcluster | NdbBlob | created=1, free=1, sizeof=264 |\n| ndbcluster | NdbReceiver | created=4, free=0, sizeof=68 |\n| ndbcluster | binlog | latest_epoch=155467, latest_trans_epoch=148126,\n latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0,\n latest_applied_binlog_epoch=0 |\n+------------+-----------------------+--------------------------------------------------+\n\nThe rows with connection and binlog in the Name column were added to\nthe output of this statement in MySQL 5.1. The Status column in each of\nthese rows provides information about the MySQL server\'s connection to\nthe cluster and about the cluster binary log\'s status, respectively.\nThe Status information is in the form of comma-delimited set of\nname/value pairs.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-engine.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-engine.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (365,14,'NAME_CONST','Syntax:\nNAME_CONST(name,value)\n\nReturns the given value. When used to produce a result set column,\nNAME_CONST() causes the column to have the given name. The arguments\nshould be constants.\n\nmysql> SELECT NAME_CONST(\'myname\', 14);\n+--------+\n| myname |\n+--------+\n| 14 |\n+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (366,14,'RELEASE_LOCK','Syntax:\nRELEASE_LOCK(str)\n\nReleases the lock named by the string str that was obtained with\nGET_LOCK(). Returns 1 if the lock was released, 0 if the lock was not\nestablished by this thread (in which case the lock is not released),\nand NULL if the named lock did not exist. The lock does not exist if it\nwas never obtained by a call to GET_LOCK() or if it has previously been\nreleased.\n\nThe DO statement is convenient to use with RELEASE_LOCK(). See [HELP\nDO].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (367,17,'IS NULL','Syntax:\nIS NULL\n\nTests whether a value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;\n -> 0, 0, 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (368,30,'CONVERT_TZ','Syntax:\nCONVERT_TZ(dt,from_tz,to_tz)\n\nCONVERT_TZ() converts a datetime value dt from the time zone given by\nfrom_tz to the time zone given by to_tz and returns the resulting\nvalue. Time zones are specified as described in\nhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html. This\nfunction returns NULL if the arguments are invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'GMT\',\'MET\');\n -> \'2004-01-01 13:00:00\'\nmysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'+00:00\',\'+10:00\');\n -> \'2004-01-01 22:00:00\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (369,30,'TIME_TO_SEC','Syntax:\nTIME_TO_SEC(time)\n\nReturns the time argument, converted to seconds.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_TO_SEC(\'22:23:00\');\n -> 80580\nmysql> SELECT TIME_TO_SEC(\'00:39:38\');\n -> 2378\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (370,30,'WEEKDAY','Syntax:\nWEEKDAY(date)\n\nReturns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 =\nSunday).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKDAY(\'2008-02-03 22:23:00\');\n -> 6\nmysql> SELECT WEEKDAY(\'2007-11-06\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (371,35,'EXPORT_SET','Syntax:\nEXPORT_SET(bits,on,off[,separator[,number_of_bits]])\n\nReturns a string such that for every bit set in the value bits, you get\nan on string and for every bit not set in the value, you get an off\nstring. Bits in bits are examined from right to left (from low-order to\nhigh-order bits). Strings are added to the result from left to right,\nseparated by the separator string (the default being the comma\ncharacter ","). The number of bits examined is given by number_of_bits\n(defaults to 64).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT EXPORT_SET(5,\'Y\',\'N\',\',\',4);\n -> \'Y,N,Y,N\'\nmysql> SELECT EXPORT_SET(6,\'1\',\'0\',\',\',10);\n -> \'0,1,1,0,0,0,0,0,0,0\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (372,37,'ALTER SERVER','Syntax:\nALTER SERVER server_name\n OPTIONS (option [, option] ...)\n\nAlters the server information for server_name, adjusting the specified\noptions as per the CREATE SERVER command. See [HELP CREATE SERVER]. The\ncorresponding fields in the mysql.servers table are updated\naccordingly. This statement requires the SUPER privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-server.html\n\n','ALTER SERVER s OPTIONS (USER \'sally\');\n','http://dev.mysql.com/doc/refman/5.1/en/alter-server.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (373,30,'TIME FUNCTION','Syntax:\nTIME(expr)\n\nExtracts the time part of the time or datetime expression expr and\nreturns it as a string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT TIME(\'2003-12-31 01:02:03\');\n -> \'01:02:03\'\nmysql> SELECT TIME(\'2003-12-31 01:02:03.000123\');\n -> \'01:02:03.000123\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (374,30,'DATE_ADD','Syntax:\nDATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)\n\nThese functions perform date arithmetic. The date argument specifies\nthe starting date or datetime value. expr is an expression specifying\nthe interval value to be added or subtracted from the starting date.\nexpr is a string; it may start with a "-" for negative intervals. unit\nis a keyword indicating the units in which the expression should be\ninterpreted.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT \'2008-12-31 23:59:59\' + INTERVAL 1 SECOND;\n -> \'2009-01-01 00:00:00\'\nmysql> SELECT INTERVAL 1 DAY + \'2008-12-31\';\n -> \'2009-01-01\'\nmysql> SELECT \'2005-01-01\' - INTERVAL 1 SECOND;\n -> \'2004-12-31 23:59:59\'\nmysql> SELECT DATE_ADD(\'2000-12-31 23:59:59\',\n -> INTERVAL 1 SECOND);\n -> \'2001-01-01 00:00:00\'\nmysql> SELECT DATE_ADD(\'2010-12-31 23:59:59\',\n -> INTERVAL 1 DAY);\n -> \'2011-01-01 23:59:59\'\nmysql> SELECT DATE_ADD(\'2100-12-31 23:59:59\',\n -> INTERVAL \'1:1\' MINUTE_SECOND);\n -> \'2101-01-01 00:01:00\'\nmysql> SELECT DATE_SUB(\'2005-01-01 00:00:00\',\n -> INTERVAL \'1 1:1:1\' DAY_SECOND);\n -> \'2004-12-30 22:58:59\'\nmysql> SELECT DATE_ADD(\'1900-01-01 00:00:00\',\n -> INTERVAL \'-1 10\' DAY_HOUR);\n -> \'1899-12-30 14:00:00\'\nmysql> SELECT DATE_SUB(\'1998-01-02\', INTERVAL 31 DAY);\n -> \'1997-12-02\'\nmysql> SELECT DATE_ADD(\'1992-12-31 23:59:59.000002\',\n -> INTERVAL \'1.999999\' SECOND_MICROSECOND);\n -> \'1993-01-01 00:00:01.000001\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (375,35,'CAST','Syntax:\nCAST(expr AS type)\n\nThe CAST() function takes a value of one type and produce a value of\nanother type, similar to CONVERT(). See the description of CONVERT()\nfor more information.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (376,35,'SOUNDS LIKE','Syntax:\nexpr1 SOUNDS LIKE expr2\n\nThis is the same as SOUNDEX(expr1) = SOUNDEX(expr2).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (377,30,'PERIOD_DIFF','Syntax:\nPERIOD_DIFF(P1,P2)\n\nReturns the number of months between periods P1 and P2. P1 and P2\nshould be in the format YYMM or YYYYMM. Note that the period arguments\nP1 and P2 are not date values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_DIFF(200802,200703);\n -> 11\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (378,35,'LIKE','Syntax:\nexpr LIKE pat [ESCAPE \'escape_char\']\n\nPattern matching using SQL simple regular expression comparison.\nReturns 1 (TRUE) or 0 (FALSE). If either expr or pat is NULL, the\nresult is NULL.\n\nThe pattern need not be a literal string. For example, it can be\nspecified as a string expression or table column.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','mysql> SELECT \'David!\' LIKE \'David_\';\n -> 1\nmysql> SELECT \'David!\' LIKE \'%D%v%\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (379,23,'MULTIPOINT','MultiPoint(pt1,pt2,...)\n\nConstructs a MultiPoint value using Point or WKB Point arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (380,18,'>>','Syntax:\n>>\n\nShifts a longlong (BIGINT) number to the right.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 4 >> 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (381,22,'FETCH','Syntax:\nFETCH cursor_name INTO var_name [, var_name] ...\n\nThis statement fetches the next row (if a row exists) using the\nspecified open cursor, and advances the cursor pointer.\n\nIf no more rows are available, a No Data condition occurs with SQLSTATE\nvalue 02000. To detect this condition, you can set up a handler for it\n(or for a NOT FOUND condition). An example is shown in\nhttp://dev.mysql.com/doc/refman/5.1/en/cursors.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/fetch.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/fetch.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (382,16,'AVG','Syntax:\nAVG([DISTINCT] expr)\n\nReturns the average value of expr. The DISTINCT option can be used to\nreturn the average of the distinct values of expr.\n\nAVG() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT student_name, AVG(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (383,28,'TRUE FALSE','The constants TRUE and FALSE evaluate to 1 and 0, respectively. The\nconstant names can be written in any lettercase.\n\nmysql> SELECT TRUE, true, FALSE, false;\n -> 1, 1, 0, 0\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/boolean-values.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/boolean-values.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (384,6,'MBRWITHIN','MBRWithin(g1,g2)\n\nReturns 1 or 0 to indicate whether the Minimum Bounding Rectangle of g1\nis within the Minimum Bounding Rectangle of g2. This tests the opposite\nrelationship as MBRContains().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Polygon((0 0,0 5,5 5,5 0,0 0))\');\nmysql> SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1);\n+--------------------+--------------------+\n| MBRWithin(@g1,@g2) | MBRWithin(@g2,@g1) |\n+--------------------+--------------------+\n| 1 | 0 |\n+--------------------+--------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/relations-on-geometry-mbr.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (385,17,'IN','Syntax:\nexpr IN (value,...)\n\nReturns 1 if expr is equal to any of the values in the IN list, else\nreturns 0. If all values are constants, they are evaluated according to\nthe type of expr and sorted. The search for the item then is done using\na binary search. This means IN is very quick if the IN value list\nconsists entirely of constants. Otherwise, type conversion takes place\naccording to the rules described in\nhttp://dev.mysql.com/doc/refman/5.1/en/type-conversion.html, but\napplied to all the arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 IN (0,3,5,7);\n -> 0\nmysql> SELECT \'wefwf\' IN (\'wee\',\'wefwf\',\'weg\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (386,35,'QUOTE','Syntax:\nQUOTE(str)\n\nQuotes a string to produce a result that can be used as a properly\nescaped data value in an SQL statement. The string is returned enclosed\nby single quotes and with each instance of single quote ("\'"),\nbackslash ("\\"), ASCII NUL, and Control-Z preceded by a backslash. If\nthe argument is NULL, the return value is the word "NULL" without\nenclosing single quotes.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT QUOTE(\'Don\\\'t!\');\n -> \'Don\\\'t!\'\nmysql> SELECT QUOTE(NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (387,15,'SESSION_USER','Syntax:\nSESSION_USER()\n\nSESSION_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (388,25,'HELP COMMAND','Syntax:\nmysql> help search_string\n\nIf you provide an argument to the help command, mysql uses it as a\nsearch string to access server-side help from the contents of the MySQL\nReference Manual. The proper operation of this command requires that\nthe help tables in the mysql database be initialized with help topic\ninformation (see\nhttp://dev.mysql.com/doc/refman/5.1/en/server-side-help-support.html).… there is no match for the search string, the search fails:\n\nmysql> help me\n\nNothing found\nPlease try to run \'help contents\' for a list of all accessible topics\n\nUse help contents to see a list of the help categories:\n\nmysql> help contents\nYou asked for help about help category: "Contents"\nFor more information, type \'help <item>\', where <item> is one of the\nfollowing categories:\n Account Management\n Administration\n Data Definition\n Data Manipulation\n Data Types\n Functions\n Functions and Modifiers for Use with GROUP BY\n Geographic Features\n Language Structure\n Plugins\n Storage Engines\n Stored Routines\n Table Maintenance\n Transactions\n Triggers\n\nIf the search string matches multiple items, mysql shows a list of\nmatching topics:\n\nmysql> help logs\nMany help items for your request exist.\nTo make a more specific request, please type \'help <item>\',\nwhere <item> is one of the following topics:\n SHOW\n SHOW BINARY LOGS\n SHOW ENGINE\n SHOW LOGS\n\nUse a topic as the search string to see the help entry for that topic:\n\nmysql> help show binary logs\nName: \'SHOW BINARY LOGS\'\nDescription:\nSyntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [purge-binary-logs], that shows how\nto determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mysql-server-side-help.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mysql-server-side-help.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (389,30,'QUARTER','Syntax:\nQUARTER(date)\n\nReturns the quarter of the year for date, in the range 1 to 4.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT QUARTER(\'2008-04-01\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (390,35,'POSITION','Syntax:\nPOSITION(substr IN str)\n\nPOSITION(substr IN str) is a synonym for LOCATE(substr,str).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (391,25,'SHOW CREATE FUNCTION','Syntax:\nSHOW CREATE FUNCTION func_name\n\nThis statement is similar to SHOW CREATE PROCEDURE but for stored\nfunctions. See [HELP SHOW CREATE PROCEDURE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-function.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (392,14,'IS_USED_LOCK','Syntax:\nIS_USED_LOCK(str)\n\nChecks whether the lock named str is in use (that is, locked). If so,\nit returns the connection identifier of the client that holds the lock.\nOtherwise, it returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (393,3,'POLYFROMTEXT','PolyFromText(wkt[,srid]), PolygonFromText(wkt[,srid])\n\nConstructs a POLYGON value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (394,11,'DES_ENCRYPT','Syntax:\nDES_ENCRYPT(str[,{key_num|key_str}])\n\nEncrypts the string with the given key using the Triple-DES algorithm.\n\nThis function works only if MySQL has been configured with SSL support.\nSee http://dev.mysql.com/doc/refman/5.1/en/secure-connections.html.\n\nThe encryption key to use is chosen based on the second argument to\nDES_ENCRYPT(), if one was given. With no argument, the first key from\nthe DES key file is used. With a key_num argument, the given key number\n(0-9) from the DES key file is used. With a key_str argument, the given\nkey string is used to encrypt str.\n\nThe key file can be specified with the --des-key-file server option.\n\nThe return string is a binary string where the first character is\nCHAR(128 | key_num). If an error occurs, DES_ENCRYPT() returns NULL.\n\nThe 128 is added to make it easier to recognize an encrypted key. If\nyou use a string key, key_num is 127.\n\nThe string length for the result is given by this formula:\n\nnew_len = orig_len + (8 - (orig_len % 8)) + 1\n\nEach line in the DES key file has the following format:\n\nkey_num des_key_str\n\nEach key_num value must be a number in the range from 0 to 9. Lines in\nthe file may be in any order. des_key_str is the string that is used to\nencrypt the message. There should be at least one space between the\nnumber and the key. The first key is the default key that is used if\nyou do not specify any key argument to DES_ENCRYPT().\n\nYou can tell MySQL to read new key values from the key file with the\nFLUSH DES_KEY_FILE statement. This requires the RELOAD privilege.\n\nOne benefit of having a set of default keys is that it gives\napplications a way to check for the existence of encrypted column\nvalues, without giving the end user the right to decrypt those values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT customer_address FROM customer_table \n > WHERE crypted_credit_card = DES_ENCRYPT(\'credit_card_number\');\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (395,4,'CEIL','Syntax:\nCEIL(X)\n\nCEIL() is a synonym for CEILING().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (396,35,'LENGTH','Syntax:\nLENGTH(str)\n\nReturns the length of the string str, measured in bytes. A multi-byte\ncharacter counts as multiple bytes. This means that for a string\ncontaining five two-byte characters, LENGTH() returns 10, whereas\nCHAR_LENGTH() returns 5.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT LENGTH(\'text\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (397,30,'STR_TO_DATE','Syntax:\nSTR_TO_DATE(str,format)\n\nThis is the inverse of the DATE_FORMAT() function. It takes a string\nstr and a format string format. STR_TO_DATE() returns a DATETIME value\nif the format string contains both date and time parts, or a DATE or\nTIME value if the string contains only date or time parts. If the date,\ntime, or datetime value extracted from str is illegal, STR_TO_DATE()\nreturns NULL and produces a warning.\n\nThe server scans str attempting to match format to it. The format\nstring can contain literal characters and format specifiers beginning\nwith %. Literal characters in format must match literally in str.\nFormat specifiers in format must match a date or time part in str. For\nthe specifiers that can be used in format, see the DATE_FORMAT()\nfunction description.\n\nmysql> SELECT STR_TO_DATE(\'01,5,2013\',\'%d,%m,%Y\');\n -> \'2013-05-01\'\nmysql> SELECT STR_TO_DATE(\'May 1, 2013\',\'%M %d,%Y\');\n -> \'2013-05-01\'\n\nScanning starts at the beginning of str and fails if format is found\nnot to match. Extra characters at the end of str are ignored.\n\nmysql> SELECT STR_TO_DATE(\'a09:30:17\',\'a%h:%i:%s\');\n -> \'09:30:17\'\nmysql> SELECT STR_TO_DATE(\'a09:30:17\',\'%h:%i:%s\');\n -> NULL\nmysql> SELECT STR_TO_DATE(\'09:30:17a\',\'%h:%i:%s\');\n -> \'09:30:17\'\n\nUnspecified date or time parts have a value of 0, so incompletely\nspecified values in str produce a result with some or all parts set to\n0:\n\nmysql> SELECT STR_TO_DATE(\'abc\',\'abc\');\n -> \'0000-00-00\'\nmysql> SELECT STR_TO_DATE(\'9\',\'%m\');\n -> \'0000-09-00\'\nmysql> SELECT STR_TO_DATE(\'9\',\'%s\');\n -> \'00:00:09\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (398,10,'Y','Y(p)\n\nReturns the Y-coordinate value for the point p as a double-precision\nnumber.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…','mysql> SET @pt = \'Point(56.7 53.34)\';\nmysql> SELECT Y(GeomFromText(@pt));\n+----------------------+\n| Y(GeomFromText(@pt)) |\n+----------------------+\n| 53.34 |\n+----------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#poi…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (399,25,'SHOW INNODB STATUS','Syntax:\nSHOW INNODB STATUS\n\nIn MySQL 5.1, this is a deprecated synonym for SHOW ENGINE INNODB\nSTATUS. See [HELP SHOW ENGINE].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-innodb-status.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-innodb-status.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (400,19,'CHECKSUM TABLE','Syntax:\nCHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]\n\nCHECKSUM TABLE reports a table checksum.\n\nWith QUICK, the live table checksum is reported if it is available, or\nNULL otherwise. This is very fast. A live checksum is enabled by\nspecifying the CHECKSUM=1 table option when you create the table;\ncurrently, this is supported only for MyISAM tables. See [HELP CREATE\nTABLE].\n\nWith EXTENDED, the entire table is read row by row and the checksum is\ncalculated. This can be very slow for large tables.\n\nIf neither QUICK nor EXTENDED is specified, MySQL returns a live\nchecksum if the table storage engine supports it and scans the table\notherwise.\n\nFor a nonexistent table, CHECKSUM TABLE returns NULL and generates a\nwarning.\n\nThe checksum value depends on the table row format. If the row format\nchanges, the checksum also changes. For example, the storage format for\nVARCHAR changed between MySQL 4.1 and 5.0, so if a 4.1 table is\nupgraded to MySQL 5.0, the checksum value may change.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/checksum-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/checksum-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (401,2,'NUMINTERIORRINGS','NumInteriorRings(poly)\n\nReturns the number of interior rings in the Polygon value poly.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT NumInteriorRings(GeomFromText(@poly));\n+---------------------------------------+\n| NumInteriorRings(GeomFromText(@poly)) |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (402,2,'INTERIORRINGN','InteriorRingN(poly,N)\n\nReturns the N-th interior ring for the Polygon value poly as a\nLineString. Rings are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT AsText(InteriorRingN(GeomFromText(@poly),1));\n+----------------------------------------------+\n| AsText(InteriorRingN(GeomFromText(@poly),1)) |\n+----------------------------------------------+\n| LINESTRING(1 1,1 2,2 2,2 1,1 1) |\n+----------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#pol…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (403,30,'UTC_TIME','Syntax:\nUTC_TIME, UTC_TIME()\n\nReturns the current UTC time as a value in \'HH:MM:SS\' or HHMMSS.uuuuuu\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIME(), UTC_TIME() + 0;\n -> \'18:07:53\', 180753.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (404,37,'DROP FUNCTION','The DROP FUNCTION statement is used to drop stored functions and\nuser-defined functions (UDFs):\n\no For information about dropping stored functions, see [HELP DROP\n PROCEDURE].\n\no For information about dropping user-defined functions, see [HELP DROP\n FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-function.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-function.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (405,37,'ALTER EVENT','Syntax:\nALTER\n [DEFINER = { user | CURRENT_USER }]\n EVENT event_name\n [ON SCHEDULE schedule]\n [ON COMPLETION [NOT] PRESERVE]\n [RENAME TO new_event_name]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n [DO sql_statement]\n\nThe ALTER EVENT statement is used to change one or more of the\ncharacteristics of an existing event without the need to drop and\nrecreate it. The syntax for each of the DEFINER, ON SCHEDULE, ON\nCOMPLETION, COMMENT, ENABLE / DISABLE, and DO clauses is exactly the\nsame as when used with CREATE EVENT. (See [HELP CREATE EVENT].)\n\nSupport for the DEFINER clause was added in MySQL 5.1.17.\n\nBeginning with MySQL 5.1.12, this statement requires the EVENT\nprivilege. When a user executes a successful ALTER EVENT statement,\nthat user becomes the definer for the affected event.\n\n(In MySQL 5.1.11 and earlier, an event could be altered only by its\ndefiner, or by a user having the SUPER privilege.)\n\nALTER EVENT works only with an existing event:\n\nmysql> ALTER EVENT no_such_event \n > ON SCHEDULE \n > EVERY \'2:3\' DAY_HOUR;\nERROR 1517 (HY000): Unknown event \'no_such_event\'\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-event.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-event.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (406,16,'STDDEV','Syntax:\nSTDDEV(expr)\n\nReturns the population standard deviation of expr. This function is\nprovided for compatibility with Oracle. The standard SQL function\nSTDDEV_POP() can be used instead.\n\nThis function returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (407,30,'DATE_SUB','Syntax:\nDATE_SUB(date,INTERVAL expr unit)\n\nSee the description for DATE_ADD().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (408,30,'PERIOD_ADD','Syntax:\nPERIOD_ADD(P,N)\n\nAdds N months to period P (in the format YYMM or YYYYMM). Returns a\nvalue in the format YYYYMM. Note that the period argument P is not a\ndate value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_ADD(200801,2);\n -> 200803\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (409,18,'|','Syntax:\n|\n\nBitwise OR:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT 29 | 15;\n -> 31\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (410,3,'GEOMFROMTEXT','GeomFromText(wkt[,srid]), GeometryFromText(wkt[,srid])\n\nConstructs a geometry value of any type using its WKT representation\nand SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (411,14,'UUID_SHORT','Syntax:\nUUID_SHORT()\n\nReturns a "short" universal identifier as a 64-bit unsigned integer\n(rather than a string-form 128-bit identifier as returned by the UUID()\nfunction).\n\nThe value of UUID_SHORT() is guaranteed to be unique if the following\nconditions hold:\n\no The server_id of the current host is unique among your set of master\n and slave servers\n\no server_id is between 0 and 255\n\no You don\'t set back your system time for your server between mysqld\n restarts\n\no You do not invoke UUID_SHORT() on average more than 16 million times\n per second between mysqld restarts\n\nThe UUID_SHORT() return value is constructed this way:\n\n (server_id & 255) << 56\n+ (server_startup_time_in_seconds << 24)\n+ incremented_variable++;\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID_SHORT();\n -> 92395783831158784\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (412,35,'RIGHT','Syntax:\nRIGHT(str,len)\n\nReturns the rightmost len characters from the string str, or NULL if\nany argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT RIGHT(\'foobarbar\', 4);\n -> \'rbar\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (413,30,'DATEDIFF','Syntax:\nDATEDIFF(expr1,expr2)\n\nDATEDIFF() returns expr1 - expr2 expressed as a value in days from one\ndate to the other. expr1 and expr2 are date or date-and-time\nexpressions. Only the date parts of the values are used in the\ncalculation.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATEDIFF(\'2007-12-31 23:59:59\',\'2007-12-30\');\n -> 1\nmysql> SELECT DATEDIFF(\'2010-11-30 23:59:59\',\'2010-12-31\');\n -> -31\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (414,37,'DROP TABLESPACE','Syntax:\nDROP TABLESPACE tablespace_name\n ENGINE [=] engine_name\n\nThis statement drops a tablespace that was previously created using\nCREATE TABLESPACE (see [HELP CREATE TABLESPACE]).\n\n*Important*: The tablespace to be dropped must not contain any data\nfiles; in other words, before you can drop a tablespace, you must first\ndrop each of its data files using ALTER TABLESPACE ... DROP DATAFILE\n(see [HELP ALTER TABLESPACE]).\n\nThe ENGINE clause (required) specifies the storage engine used by the\ntablespace. In MySQL 5.1, the only accepted values for engine_name are\nNDB and NDBCLUSTER.\n\nDROP TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/drop-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-tablespace.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (415,37,'DROP PROCEDURE','Syntax:\nDROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name\n\nThis statement is used to drop a stored procedure or function. That is,\nthe specified routine is removed from the server. You must have the\nALTER ROUTINE privilege for the routine. (That privilege is granted\nautomatically to the routine creator.)\n\nThe IF EXISTS clause is a MySQL extension. It prevents an error from\noccurring if the procedure or function does not exist. A warning is\nproduced that can be viewed with SHOW WARNINGS.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/drop-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/drop-procedure.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (416,19,'CHECK TABLE','Syntax:\nCHECK TABLE tbl_name [, tbl_name] ... [option] ...\n\noption = {FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED}\n\nCHECK TABLE checks a table or tables for errors. CHECK TABLE works for\nMyISAM, InnoDB, and ARCHIVE tables. Starting with MySQL 5.1.9, CHECK\nTABLE is also valid for CSV tables, see\nhttp://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html. For\nMyISAM tables, the key statistics are updated as well.\n\nCHECK TABLE can also check views for problems, such as tables that are\nreferenced in the view definition that no longer exist.\n\nBeginning with MySQL 5.1.27, CHECK TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... CHECK PARTITION to check one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/check-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/check-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (417,35,'BIN','Syntax:\nBIN(N)\n\nReturns a string representation of the binary value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,2). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT BIN(12);\n -> \'1100\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (418,5,'INSTALL PLUGIN','Syntax:\nINSTALL PLUGIN plugin_name SONAME \'plugin_library\'\n\nThis statement installs a plugin.\n\nplugin_name is the name of the plugin as defined in the plugin\ndeclaration structure contained in the library file. Plugin names are\nnot case sensitive. For maximal compatibility, plugin names should be\nlimited to ASCII letters, digits, and underscore, because they are used\nin C source files, shell command lines, M4 and Bourne shell scripts,\nand SQL environments.\n\nplugin_library is the name of the shared library that contains the\nplugin code. The name includes the file name extension (for example,\nlibmyplugin.so or libmyplugin.dylib).\n\nThe shared library must be located in the plugin directory (that is,\nthe directory named by the plugin_dir system variable). The library\nmust be in the plugin directory itself, not in a subdirectory. By\ndefault, plugin_dir is plugin directory under the directory named by\nthe pkglibdir configuration variable, but it can be changed by setting\nthe value of plugin_dir at server startup. For example, set its value\nin a my.cnf file:\n\n[mysqld]\nplugin_dir=/path/to/plugin/directory\n\nIf the value of plugin_dir is a relative path name, it is taken to be\nrelative to the MySQL base directory (the value of the basedir system\nvariable).\n\nINSTALL PLUGIN adds a line to the mysql.plugin table that describes the\nplugin. This table contains the plugin name and library file name.\n\nAs of MySQL 5.1.33, INSTALL PLUGIN causes the server to read option\n(my.cnf) files just as during server startup. This enables the plugin\nto pick up any relevant options from those files. It is possible to add\nplugin options to an option file even before loading a plugin (if the\nloose prefix is used). It is also possible to uninstall a plugin, edit\nmy.cnf, and install the plugin again. Restarting the plugin this way\nenables it to the new option values without a server restart.\n\nBefore MySQL 5.1.33, a plugin is started with each option set to its\ndefault value.\n\nINSTALL PLUGIN also loads and initializes the plugin code to make the\nplugin available for use. A plugin is initialized by executing its\ninitialization function, which handles any setup that the plugin must\nperform before it can be used.\n\nTo use INSTALL PLUGIN, you must have the INSERT privilege for the\nmysql.plugin table.\n\nAt server startup, the server loads and initializes any plugin that is\nlisted in the mysql.plugin table. This means that a plugin is installed\nwith INSTALL PLUGIN only once, not every time the server starts. Plugin\nloading at startup does not occur if the server is started with the\n--skip-grant-tables option.\n\nWhen the server shuts down, it executes the deinitialization function\nfor each plugin that is loaded so that the plugin has a change to\nperform any final cleanup.\n\nFor options that control individual plugin loading at server startup,\nsee http://dev.mysql.com/doc/refman/5.1/en/server-plugin-options.html.\nIf you need to load plugins for a single server startup when the\n--skip-grant-tables option is given (which tells the server not to read\nsystem tables), use the --plugin-load option. See\nhttp://dev.mysql.com/doc/refman/5.1/en/server-options.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/install-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/install-plugin.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (419,22,'DECLARE CURSOR','Syntax:\nDECLARE cursor_name CURSOR FOR select_statement\n\nThis statement declares a cursor. Multiple cursors may be declared in a\nstored program, but each cursor in a given block must have a unique\nname.\n\nThe SELECT statement cannot have an INTO clause.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/declare-cursor.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/declare-cursor.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (420,26,'LOAD DATA','Syntax:\nLOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE \'file_name\'\n [REPLACE | IGNORE]\n INTO TABLE tbl_name\n [CHARACTER SET charset_name]\n [{FIELDS | COLUMNS}\n [TERMINATED BY \'string\']\n [[OPTIONALLY] ENCLOSED BY \'char\']\n [ESCAPED BY \'char\']\n ]\n [LINES\n [STARTING BY \'string\']\n [TERMINATED BY \'string\']\n ]\n [IGNORE number LINES]\n [(col_name_or_user_var,...)]\n [SET col_name = expr,...]\n\nThe LOAD DATA INFILE statement reads rows from a text file into a table\nat a very high speed. The file name must be given as a literal string.\n\nLOAD DATA INFILE is the complement of SELECT ... INTO OUTFILE. (See\nhttp://dev.mysql.com/doc/refman/5.1/en/select.html.) To write data from\na table to a file, use SELECT ... INTO OUTFILE. To read the file back\ninto a table, use LOAD DATA INFILE. The syntax of the FIELDS and LINES\nclauses is the same for both statements. Both clauses are optional, but\nFIELDS must precede LINES if both are specified.\n\nFor more information about the efficiency of INSERT versus LOAD DATA\nINFILE and speeding up LOAD DATA INFILE, see\nhttp://dev.mysql.com/doc/refman/5.1/en/insert-speed.html.\n\nThe character set indicated by the character_set_database system\nvariable is used to interpret the information in the file. SET NAMES\nand the setting of character_set_client do not affect interpretation of\ninput. If the contents of the input file use a character set that\ndiffers from the default, it is usually preferable to specify the\ncharacter set of the file by using the CHARACTER SET clause, which is\navailable as of MySQL 5.1.17. A character set of binary specifies "no\nconversion."\n\nLOAD DATA INFILE interprets all fields in the file as having the same\ncharacter set, regardless of the data types of the columns into which\nfield values are loaded. For proper interpretation of file contents,\nyou must ensure that it was written with the correct character set. For\nexample, if you write a data file with mysqldump -T or by issuing a\nSELECT ... INTO OUTFILE statement in mysql, be sure to use a\n--default-character-set option with mysqldump or mysql so that output\nis written in the character set to be used when the file is loaded with\nLOAD DATA INFILE.\n\nNote that it is currently not possible to load data files that use the\nucs2, utf16, or utf32 character set.\n\nAs of MySQL 5.1.6, the character_set_filesystem system variable\ncontrols the interpretation of the file name.\n\nYou can also load data files by using the mysqlimport utility; it\noperates by sending a LOAD DATA INFILE statement to the server. The\n--local option causes mysqlimport to read data files from the client\nhost. You can specify the --compress option to get better performance\nover slow networks if the client and server support the compressed\nprotocol. See http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html.\n\nIf you use LOW_PRIORITY, execution of the LOAD DATA statement is\ndelayed until no other clients are reading from the table. This affects\nonly storage engines that use only table-level locking (MyISAM, MEMORY,\nMERGE).\n\nIf you specify CONCURRENT with a MyISAM table that satisfies the\ncondition for concurrent inserts (that is, it contains no free blocks\nin the middle), other threads can retrieve data from the table while\nLOAD DATA is executing. Using this option affects the performance of\nLOAD DATA a bit, even if no other thread is using the table at the same\ntime.\n\nCONCURRENT is not replicated when using statement-based replication;\nhowever, it is replicated when using row-based replication. See\nhttp://dev.mysql.com/doc/refman/5.1/en/replication-features-load-data.…, for more information.\n\n*Note*: Prior to MySQL 5.1.23, LOAD DATA performed very poorly when\nimporting into partitioned tables. The statement now uses buffering to\nimprove performance; however, the buffer uses 130 KB memory per\npartition to achieve this. (Bug#26527 (http://bugs.mysql.com/26527))\n\nThe LOCAL keyword, if specified, is interpreted with respect to the\nclient end of the connection:\n\no If LOCAL is specified, the file is read by the client program on the\n client host and sent to the server. The file can be given as a full\n path name to specify its exact location. If given as a relative path\n name, the name is interpreted relative to the directory in which the\n client program was started.\n\no If LOCAL is not specified, the file must be located on the server\n host and is read directly by the server. The server uses the\n following rules to locate the file:\n\n o If the file name is an absolute path name, the server uses it as\n given.\n\n o If the file name is a relative path name with one or more leading\n components, the server searches for the file relative to the\n server\'s data directory.\n\n o If a file name with no leading components is given, the server\n looks for the file in the database directory of the default\n database.\n\nNote that, in the non-LOCAL case, these rules mean that a file named as\n./myfile.txt is read from the server\'s data directory, whereas the file\nnamed as myfile.txt is read from the database directory of the default\ndatabase. For example, if db1 is the default database, the following\nLOAD DATA statement reads the file data.txt from the database directory\nfor db1, even though the statement explicitly loads the file into a\ntable in the db2 database:\n\nLOAD DATA INFILE \'data.txt\' INTO TABLE db2.my_table;\n\nWindows path names are specified using forward slashes rather than\nbackslashes. If you do use backslashes, you must double them.\n\nFor security reasons, when reading text files located on the server,\nthe files must either reside in the database directory or be readable\nby all. Also, to use LOAD DATA INFILE on server files, you must have\nthe FILE privilege. See\nhttp://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html. For\nnon-LOCAL load operations, if the secure_file_priv system variable is\nset to a nonempty directory name, the file to be loaded must be located\nin that directory.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/load-data.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/load-data.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (421,23,'MULTILINESTRING','MultiLineString(ls1,ls2,...)\n\nConstructs a MultiLineString value using LineString or WKB LineString\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-mys…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (422,30,'LOCALTIME','Syntax:\nLOCALTIME, LOCALTIME()\n\nLOCALTIME and LOCALTIME() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (423,3,'MPOINTFROMTEXT','MPointFromText(wkt[,srid]), MultiPointFromText(wkt[,srid])\n\nConstructs a MULTIPOINT value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkt…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (424,20,'BLOB','BLOB[(M)]\n\nA BLOB column with a maximum length of 65,535 (216 - 1) bytes. Each\nBLOB value is stored using a two-byte length prefix that indicates the\nnumber of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest BLOB type large enough to hold\nvalues M bytes long.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (425,11,'SHA1','Syntax:\nSHA1(str), SHA(str)\n\nCalculates an SHA-1 160-bit checksum for the string, as described in\nRFC 3174 (Secure Hash Algorithm). The value is returned as a binary\nstring of 40 hex digits, or NULL if the argument was NULL. One of the\npossible uses for this function is as a hash key. You can also use it\nas a cryptographic function for storing passwords. SHA() is synonymous\nwith SHA1().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT SHA1(\'abc\');\n -> \'a9993e364706816aba3e25717850c26c9cd0d89d\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (426,35,'SUBSTR','Syntax:\nSUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str\nFROM pos FOR len)\n\nSUBSTR() is a synonym for SUBSTRING().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (427,11,'PASSWORD','Syntax:\nPASSWORD(str)\n\nCalculates and returns a password string from the plaintext password\nstr and returns a binary string, or NULL if the argument was NULL. This\nis the function that is used for encrypting MySQL passwords for storage\nin the Password column of the user grant table.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','mysql> SELECT PASSWORD(\'badpwd\');\n -> \'*AAB3E285149C0135D51A520E1940DD3263DC008C\'\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (428,20,'CHAR','[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA fixed-length string that is always right-padded with spaces to the\nspecified length when stored. M represents the column length in\ncharacters. The range of M is 0 to 255. If M is omitted, the length is\n1.\n\n*Note*: Trailing spaces are removed when CHAR values are retrieved\nunless the PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (429,30,'UTC_DATE','Syntax:\nUTC_DATE, UTC_DATE()\n\nReturns the current UTC date as a value in \'YYYY-MM-DD\' or YYYYMMDD\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_DATE(), UTC_DATE() + 0;\n -> \'2003-08-14\', 20030814\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (430,34,'DIMENSION','Dimension(g)\n\nReturns the inherent dimension of the geometry value g. The result can\nbe -1, 0, 1, or 2. The meaning of these values is given in\nhttp://dev.mysql.com/doc/refman/5.1/en/gis-class-geometry.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT Dimension(GeomFromText(\'LineString(1 1,2 2)\'));\n+------------------------------------------------+\n| Dimension(GeomFromText(\'LineString(1 1,2 2)\')) |\n+------------------------------------------------+\n| 1 |\n+------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (431,16,'COUNT DISTINCT','Syntax:\nCOUNT(DISTINCT expr,[expr...])\n\nReturns a count of the number of different non-NULL values.\n\nCOUNT(DISTINCT) returns 0 if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html\n\n','mysql> SELECT COUNT(DISTINCT results) FROM student;\n','http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (432,20,'BIT','BIT[(M)]\n\nA bit-field type. M indicates the number of bits per value, from 1 to\n64. The default is 1 if M is omitted.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (433,29,'EQUALS','Equals(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially equal to g2.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…','','http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relation…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (434,25,'SHOW CREATE VIEW','Syntax:\nSHOW CREATE VIEW view_name\n\nThis statement shows a CREATE VIEW statement that creates the given\nview.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (435,17,'INTERVAL','Syntax:\nINTERVAL(N,N1,N2,N3,...)\n\nReturns 0 if N < N1, 1 if N < N2 and so on or -1 if N is NULL. All\narguments are treated as integers. It is required that N1 < N2 < N3 <\n... < Nn for this function to work correctly. This is because a binary\nsearch is used (very fast).\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);\n -> 3\nmysql> SELECT INTERVAL(10, 1, 10, 100, 1000);\n -> 2\nmysql> SELECT INTERVAL(22, 23, 30, 44, 200);\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (436,30,'FROM_DAYS','Syntax:\nFROM_DAYS(N)\n\nGiven a day number N, returns a DATE value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_DAYS(730669);\n -> \'2007-07-03\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (437,37,'ALTER PROCEDURE','Syntax:\nALTER PROCEDURE proc_name [characteristic ...]\n\ncharacteristic:\n { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n | COMMENT \'string\'\n\nThis statement can be used to change the characteristics of a stored\nprocedure. More than one change may be specified in an ALTER PROCEDURE\nstatement. However, you cannot change the parameters or body of a\nstored procedure using this statement; to make such changes, you must\ndrop and re-create the procedure using DROP PROCEDURE and CREATE\nPROCEDURE.\n\nYou must have the ALTER ROUTINE privilege for the procedure. (That\nprivilege is granted automatically to the procedure creator.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-procedure.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (438,18,'BIT_COUNT','Syntax:\nBIT_COUNT(N)\n\nReturns the number of bits that are set in the argument N.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html\n\n','mysql> SELECT BIT_COUNT(29), BIT_COUNT(b\'101010\');\n -> 4, 3\n','http://dev.mysql.com/doc/refman/5.1/en/bit-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (439,35,'OCTET_LENGTH','Syntax:\nOCTET_LENGTH(str)\n\nOCTET_LENGTH() is a synonym for LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (440,30,'UTC_TIMESTAMP','Syntax:\nUTC_TIMESTAMP, UTC_TIMESTAMP()\n\nReturns the current UTC date and time as a value in \'YYYY-MM-DD\nHH:MM:SS\' or YYYYMMDDHHMMSS.uuuuuu format, depending on whether the\nfunction is used in a string or numeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;\n -> \'2003-08-14 18:08:04\', 20030814180804.000000\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (441,11,'AES_ENCRYPT','Syntax:\nAES_ENCRYPT(str,key_str)\n\nAES_ENCRYPT() and AES_DECRYPT() allow encryption and decryption of data\nusing the official AES (Advanced Encryption Standard) algorithm,\npreviously known as "Rijndael." Encoding with a 128-bit key length is\nused, but you can extend it up to 256 bits by modifying the source. We\nchose 128 bits because it is much faster and it is secure enough for\nmost purposes.\n\nAES_ENCRYPT() encrypts a string and returns a binary string.\nAES_DECRYPT() decrypts the encrypted string and returns the original\nstring. The input arguments may be any length. If either argument is\nNULL, the result of this function is also NULL.\n\nBecause AES is a block-level algorithm, padding is used to encode\nuneven length strings and so the result string length may be calculated\nusing this formula:\n\n16 x (trunc(string_length / 16) + 1)\n\nIf AES_DECRYPT() detects invalid data or incorrect padding, it returns\nNULL. However, it is possible for AES_DECRYPT() to return a non-NULL\nvalue (possibly garbage) if the input data or the key is invalid.\n\nYou can use the AES functions to store data in an encrypted form by\nmodifying your queries:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','INSERT INTO t VALUES (1,AES_ENCRYPT(\'text\',\'password\'));\n','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (442,4,'+','Syntax:\n+\n\nAddition:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html\n\n','mysql> SELECT 3+5;\n -> 8\n','http://dev.mysql.com/doc/refman/5.1/en/arithmetic-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (443,14,'INET_NTOA','Syntax:\nINET_NTOA(expr)\n\nGiven a numeric network address in network byte order (4 or 8 byte),\nreturns the dotted-quad representation of the address as a string.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_NTOA(3520061480);\n -> \'209.207.224.40\'\n','http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (444,4,'ACOS','Syntax:\nACOS(X)\n\nReturns the arc cosine of X, that is, the value whose cosine is X.\nReturns NULL if X is not in the range -1 to 1.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ACOS(1);\n -> 0\nmysql> SELECT ACOS(1.0001);\n -> NULL\nmysql> SELECT ACOS(0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (445,8,'ISOLATION','Syntax:\nSET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL\n {\n READ UNCOMMITTED\n | READ COMMITTED\n | REPEATABLE READ\n | SERIALIZABLE\n }\n\nThis statement sets the transaction isolation level globally, for the\ncurrent session, or for the next transaction:\n\no With the GLOBAL keyword, the statement sets the default transaction\n level globally for all subsequent sessions. Existing sessions are\n unaffected.\n\no With the SESSION keyword, the statement sets the default transaction\n level for all subsequent transactions performed within the current\n session.\n\no Without any SESSION or GLOBAL keyword, the statement sets the\n isolation level for the next (not started) transaction performed\n within the current session.\n\nA change to the global default isolation level requires the SUPER\nprivilege. Any session is free to change its session isolation level\n(even in the middle of a transaction), or the isolation level for its\nnext transaction.\n\nTo set the global default isolation level at server startup, use the\n--transaction-isolation=level option to mysqld on the command line or\nin an option file. Values of level for this option use dashes rather\nthan spaces, so the allowable values are READ-UNCOMMITTED,\nREAD-COMMITTED, REPEATABLE-READ, or SERIALIZABLE. For example, to set\nthe default isolation level to REPEATABLE READ, use these lines in the\n[mysqld] section of an option file:\n\n[mysqld]\ntransaction-isolation = REPEATABLE-READ\n\nTo determine the global and session transaction isolation levels at\nruntime, check the value of the tx_isolation system variable:\n\nSELECT @@GLOBAL.tx_isolation, @@tx_isolation;\n\nInnoDB supports each of the translation isolation levels described here\nusing different locking strategies. The default level is REPEATABLE\nREAD. For additional information about InnoDB record-level locks and\nhow it uses them to execute various types of statements, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-record-level-locks.html,… http://dev.mysql.com/doc/refman/5.1/en/innodb-locks-set.html.\n\nThe following list describes how MySQL supports the different\ntransaction levels:\n\no READ UNCOMMITTED\n\n SELECT statements are performed in a nonlocking fashion, but a\n possible earlier version of a row might be used. Thus, using this\n isolation level, such reads are not consistent. This is also called a\n "dirty read." Otherwise, this isolation level works like READ\n COMMITTED.\n\no READ COMMITTED\n\n A somewhat Oracle-like isolation level with respect to consistent\n (nonlocking) reads: Each consistent read, even within the same\n transaction, sets and reads its own fresh snapshot. See\n http://dev.mysql.com/doc/refman/5.1/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n InnoDB locks only index records, not the gaps before them, and thus\n allows the free insertion of new records next to locked records. For\n UPDATE and DELETE statements, locking depends on whether the\n statement uses a unique index with a unique search condition (such as\n WHERE id = 100), or a range-type search condition (such as WHERE id >\n 100). For a unique index with a unique search condition, InnoDB locks\n only the index record found, not the gap before it. For range-type\n searches, InnoDB locks the index range scanned, using gap locks or\n next-key (gap plus index-record) locks to block insertions by other\n sessions into the gaps covered by the range. This is necessary\n because "phantom rows" must be blocked for MySQL replication and\n recovery to work.\n\n *Note*: In MySQL 5.1, if the READ COMMITTED isolation level is used\n or the innodb_locks_unsafe_for_binlog system variable is enabled,\n there is no InnoDB gap locking except for foreign-key constraint\n checking and duplicate-key checking. Also, record locks for\n nonmatching rows are released after MySQL has evaluated the WHERE\n condition. As of MySQL 5.1, if you use READ COMMITTED or enable\n innodb_locks_unsafe_for_binlog, you must use row-based binary\n logging.\n\no REPEATABLE READ\n\n This is the default isolation level for InnoDB. For consistent reads,\n there is an important difference from the READ COMMITTED isolation\n level: All consistent reads within the same transaction read the\n snapshot established by the first read. This convention means that if\n you issue several plain (nonlocking) SELECT statements within the\n same transaction, these SELECT statements are consistent also with\n respect to each other. See\n http://dev.mysql.com/doc/refman/5.1/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n UPDATE, and DELETE statements, locking depends on whether the\n statement uses a unique index with a unique search condition, or a\n range-type search condition. For a unique index with a unique search\n condition, InnoDB locks only the index record found, not the gap\n before it. For other search conditions, InnoDB locks the index range\n scanned, using gap locks or next-key (gap plus index-record) locks to\n block insertions by other sessions into the gaps covered by the\n range.\n\no SERIALIZABLE\n\n This level is like REPEATABLE READ, but InnoDB implicitly converts\n all plain SELECT statements to SELECT ... LOCK IN SHARE MODE if\n autocommit is disabled. If autocommit is enabled, the SELECT is its\n own transaction. It therefore is known to be read only and can be\n serialized if performed as a consistent (nonlocking) read and need\n not block for other transactions. (This means that to force a plain\n SELECT to block if other transactions have modified the selected\n rows, you should disable autocommit.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (446,4,'CEILING','Syntax:\nCEILING(X)\n\nReturns the smallest integer value not less than X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT CEILING(1.23);\n -> 2\nmysql> SELECT CEILING(-1.23);\n -> -1\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (447,4,'SIN','Syntax:\nSIN(X)\n\nReturns the sine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT SIN(PI());\n -> 1.2246063538224e-16\nmysql> SELECT ROUND(SIN(PI()));\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (448,30,'DAYOFWEEK','Syntax:\nDAYOFWEEK(date)\n\nReturns the weekday index for date (1 = Sunday, 2 = Monday, ..., 7 =\nSaturday). These index values correspond to the ODBC standard.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFWEEK(\'2007-02-03\');\n -> 7\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (449,25,'SHOW PROCESSLIST','Syntax:\nSHOW [FULL] PROCESSLIST\n\nSHOW PROCESSLIST shows you which threads are running. You can also get\nthis information from the INFORMATION_SCHEMA PROCESSLIST table or the\nmysqladmin processlist command. If you have the PROCESS privilege, you\ncan see all threads. Otherwise, you can see only your own threads (that\nis, threads associated with the MySQL account that you are using). If\nyou do not use the FULL keyword, only the first 100 characters of each\nstatement are shown in the Info field.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (450,31,'LINEFROMWKB','LineFromWKB(wkb[,srid]), LineStringFromWKB(wkb[,srid])\n\nConstructs a LINESTRING value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (451,34,'GEOMETRYTYPE','GeometryType(g)\n\nReturns as a string the name of the geometry type of which the geometry\ninstance g is a member. The name corresponds to one of the instantiable\nGeometry subclasses.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…','mysql> SELECT GeometryType(GeomFromText(\'POINT(1 1)\'));\n+------------------------------------------+\n| GeometryType(GeomFromText(\'POINT(1 1)\')) |\n+------------------------------------------+\n| POINT |\n+------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#gen…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (452,37,'CREATE VIEW','Syntax:\nCREATE\n [OR REPLACE]\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = { user | CURRENT_USER }]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThe CREATE VIEW statement creates a new view, or replaces an existing\none if the OR REPLACE clause is given. If the view does not exist,\nCREATE OR REPLACE VIEW is the same as CREATE VIEW. If the view does\nexist, CREATE OR REPLACE VIEW is the same as ALTER VIEW.\n\nThe select_statement is a SELECT statement that provides the definition\nof the view. (When you select from the view, you select in effect using\nthe SELECT statement.) select_statement can select from base tables or\nother views.\n\nThe view definition is "frozen" at creation time, so changes to the\nunderlying tables afterward do not affect the view definition. For\nexample, if a view is defined as SELECT * on a table, new columns added\nto the table later do not become part of the view.\n\nThe ALGORITHM clause affects how MySQL processes the view. The DEFINER\nand SQL SECURITY clauses specify the security context to be used when\nchecking access privileges at view invocation time. The WITH CHECK\nOPTION clause can be given to constrain inserts or updates to rows in\ntables referenced by the view. These clauses are described later in\nthis section.\n\nThe CREATE VIEW statement requires the CREATE VIEW privilege for the\nview, and some privilege for each column selected by the SELECT\nstatement. For columns used elsewhere in the SELECT statement you must\nhave the SELECT privilege. If the OR REPLACE clause is present, you\nmust also have the DROP privilege for the view.\n\nA view belongs to a database. By default, a new view is created in the\ndefault database. To create the view explicitly in a given database,\nspecify the name as db_name.view_name when you create it.\n\nmysql> CREATE VIEW test.v AS SELECT * FROM t;\n\nBase tables and views share the same namespace within a database, so a\ndatabase cannot contain a base table and a view that have the same\nname.\n\nViews must have unique column names with no duplicates, just like base\ntables. By default, the names of the columns retrieved by the SELECT\nstatement are used for the view column names. To define explicit names\nfor the view columns, the optional column_list clause can be given as a\nlist of comma-separated identifiers. The number of names in column_list\nmust be the same as the number of columns retrieved by the SELECT\nstatement.\n\n*Note*: Prior to MySQL 5.1.29, when you modify an existing view, the\ncurrent view definition is backed up and saved. It is stored in that\ntable\'s database directory, in a subdirectory named arc. The backup\nfile for a view v is named v.frm-00001. If you alter the view again,\nthe next backup is named v.frm-00002. The three latest view backup\ndefinitions are stored. Backed up view definitions are not preserved by\nmysqldump, or any other such programs, but you can retain them using a\nfile copy operation. However, they are not needed for anything but to\nprovide you with a backup of your previous view definition. It is safe\nto remove these backup definitions, but only while mysqld is not\nrunning. If you delete the arc subdirectory or its files while mysqld\nis running, you will receive an error the next time you try to alter\nthe view: mysql> ALTER VIEW v AS SELECT * FROM t; ERROR 6 (HY000):\nError on delete of \'.\\test\\arc/v.frm-0004\' (Errcode: 2)\n\nColumns retrieved by the SELECT statement can be simple references to\ntable columns. They can also be expressions that use functions,\nconstant values, operators, and so forth.\n\nUnqualified table or view names in the SELECT statement are interpreted\nwith respect to the default database. A view can refer to tables or\nviews in other databases by qualifying the table or view name with the\nproper database name.\n\nA view can be created from many kinds of SELECT statements. It can\nrefer to base tables or other views. It can use joins, UNION, and\nsubqueries. The SELECT need not even refer to any tables. The following\nexample defines a view that selects two columns from another table, as\nwell as an expression calculated from those columns:\n\nmysql> CREATE TABLE t (qty INT, price INT);\nmysql> INSERT INTO t VALUES(3, 50);\nmysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;\nmysql> SELECT * FROM v;\n+------+-------+-------+\n| qty | price | value |\n+------+-------+-------+\n| 3 | 50 | 150 |\n+------+-------+-------+\n\nA view definition is subject to the following restrictions:\n\no The SELECT statement cannot contain a subquery in the FROM clause.\n\no The SELECT statement cannot refer to system or user variables.\n\no Within a stored program, the definition cannot refer to program\n parameters or local variables.\n\no The SELECT statement cannot refer to prepared statement parameters.\n\no Any table or view referred to in the definition must exist. However,\n after a view has been created, it is possible to drop a table or view\n that the definition refers to. In this case, use of the view results\n in an error. To check a view definition for problems of this kind,\n use the CHECK TABLE statement.\n\no The definition cannot refer to a TEMPORARY table, and you cannot\n create a TEMPORARY view.\n\no Any tables named in the view definition must exist at definition\n time.\n\no You cannot associate a trigger with a view.\n\no As of MySQL 5.1.23, aliases for column names in the SELECT statement\n are checked against the maximum column length of 64 characters (not\n the maximum alias length of 256 characters).\n\nORDER BY is allowed in a view definition, but it is ignored if you\nselect from a view using a statement that has its own ORDER BY.\n\nFor other options or clauses in the definition, they are added to the\noptions or clauses of the statement that references the view, but the\neffect is undefined. For example, if a view definition includes a LIMIT\nclause, and you select from the view using a statement that has its own\nLIMIT clause, it is undefined which limit applies. This same principle\napplies to options such as ALL, DISTINCT, or SQL_SMALL_RESULT that\nfollow the SELECT keyword, and to clauses such as INTO, FOR UPDATE,\nLOCK IN SHARE MODE, and PROCEDURE.\n\nIf you create a view and then change the query processing environment\nby changing system variables, that may affect the results that you get\nfrom the view:\n\nmysql> CREATE VIEW v (mycol) AS SELECT \'abc\';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SET sql_mode = \'\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT "mycol" FROM v;\n+-------+\n| mycol |\n+-------+\n| mycol |\n+-------+\n1 row in set (0.01 sec)\n\nmysql> SET sql_mode = \'ANSI_QUOTES\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT "mycol" FROM v;\n+-------+\n| mycol |\n+-------+\n| abc |\n+-------+\n1 row in set (0.00 sec)\n\nThe DEFINER and SQL SECURITY clauses determine which MySQL account to\nuse when checking access privileges for the view when a statement is\nexecuted that references the view. They were addded in MySQL 5.1.2. The\nlegal SQL SECURITY characteristic values are DEFINER and INVOKER. These\nindicate that the required privileges must be held by the user who\ndefined or invoked the view, respectively. The default SQL SECURITY\nvalue is DEFINER.\n\nIf a user value is given for the DEFINER clause, it should be a MySQL\naccount in \'user_name\'@\'host_name\' format (the same format used in the\nGRANT statement). The user_name and host_name values both are required.\nThe definer can also be given as CURRENT_USER or CURRENT_USER(). The\ndefault DEFINER value is the user who executes the CREATE VIEW\nstatement. This is the same as specifying DEFINER = CURRENT_USER\nexplicitly.\n\nIf you specify the DEFINER clause, these rules determine the legal\nDEFINER user values:\n\no If you do not have the SUPER privilege, the only legal user value is\n your own account, either specified literally or by using\n CURRENT_USER. You cannot set the definer to some other account.\n\no If you have the SUPER privilege, you can specify any syntactically\n legal account name. If the account does not actually exist, a warning\n is generated.\n\no If the SQL SECURITY value is DEFINER but the definer account does not\n exist when the view is referenced, an error occurs.\n\nWithin a view definition, CURRENT_USER returns the view\'s DEFINER value\nby default as of MySQL 5.1.12. For older versions, and for views\ndefined with the SQL SECURITY INVOKER characteristic, CURRENT_USER\nreturns the account for the view\'s invoker. For information about user\nauditing within views, see\nhttp://dev.mysql.com/doc/refman/5.1/en/account-activity-auditing.html.… a stored routine that is defined with the SQL SECURITY DEFINER\ncharacteristic, CURRENT_USER returns the routine\'s DEFINER value. This\nalso affects a view defined within such a program, if the view\ndefinition contains a DEFINER value of CURRENT_USER.\n\nAs of MySQL 5.1.2 (when the DEFINER and SQL SECURITY clauses were\nimplemented), view privileges are checked like this:\n\no At view definition time, the view creator must have the privileges\n needed to use the top-level objects accessed by the view. For\n example, if the view definition refers to table columns, the creator\n must have privileges for the columns, as described previously. If the\n definition refers to a stored function, only the privileges needed to\n invoke the function can be checked. The privileges required when the\n function runs can be checked only as it executes: For different\n invocations of the function, different execution paths within the\n function might be taken.\n\no When a view is referenced, privileges for objects accessed by the\n view are checked against the privileges held by the view creator or\n invoker, depending on whether the SQL SECURITY characteristic is\n DEFINER or INVOKER, respectively.\n\no If reference to a view causes execution of a stored function,\n privilege checking for statements executed within the function depend\n on whether the function is defined with a SQL SECURITY characteristic\n of DEFINER or INVOKER. If the security characteristic is DEFINER, the\n function runs with the privileges of its creator. If the\n characteristic is INVOKER, the function runs with the privileges\n determined by the view\'s SQL SECURITY characteristic.\n\nPrior to MySQL 5.1.2 (before the DEFINER and SQL SECURITY clauses were\nimplemented), privileges required for objects used in a view are\nchecked at view creation time.\n\nExample: A view might depend on a stored function, and that function\nmight invoke other stored routines. For example, the following view\ninvokes a stored function f():\n\nCREATE VIEW v AS SELECT * FROM t WHERE t.id = f(t.name);\n\nSuppose that f() contains a statement such as this:\n\nIF name IS NULL then\n CALL p1();\nELSE\n CALL p2();\nEND IF;\n\nThe privileges required for executing statements within f() need to be\nchecked when f() executes. This might mean that privileges are needed\nfor p1() or p2(), depending on the execution path within f(). Those\nprivileges must be checked at runtime, and the user who must possess\nthe privileges is determined by the SQL SECURITY values of the view v\nand the function f().\n\nThe DEFINER and SQL SECURITY clauses for views are extensions to\nstandard SQL. In standard SQL, views are handled using the rules for\nSQL SECURITY INVOKER.\n\nIf you invoke a view that was created before MySQL 5.1.2, it is treated\nas though it was created with a SQL SECURITY DEFINER clause and with a\nDEFINER value that is the same as your account. However, because the\nactual definer is unknown, MySQL issues a warning. To make the warning\ngo away, it is sufficient to re-create the view so that the view\ndefinition includes a DEFINER clause.\n\nThe optional ALGORITHM clause is a MySQL extension to standard SQL. It\naffects how MySQL processes the view. ALGORITHM takes three values:\nMERGE, TEMPTABLE, or UNDEFINED. The default algorithm is UNDEFINED if\nno ALGORITHM clause is present. For more information, see\nhttp://dev.mysql.com/doc/refman/5.1/en/view-algorithms.html.\n\nSome views are updatable. That is, you can use them in statements such\nas UPDATE, DELETE, or INSERT to update the contents of the underlying\ntable. For a view to be updatable, there must be a one-to-one\nrelationship between the rows in the view and the rows in the\nunderlying table. There are also certain other constructs that make a\nview nonupdatable.\n\nThe WITH CHECK OPTION clause can be given for an updatable view to\nprevent inserts or updates to rows except those for which the WHERE\nclause in the select_statement is true.\n\nIn a WITH CHECK OPTION clause for an updatable view, the LOCAL and\nCASCADED keywords determine the scope of check testing when the view is\ndefined in terms of another view. The LOCAL keyword restricts the CHECK\nOPTION only to the view being defined. CASCADED causes the checks for\nunderlying views to be evaluated as well. When neither keyword is\ngiven, the default is CASCADED.\n\nFor more information about updatable views and the WITH CHECK OPTION\nclause, see\nhttp://dev.mysql.com/doc/refman/5.1/en/view-updatability.html.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-view.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (453,35,'TRIM','Syntax:\nTRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr\nFROM] str)\n\nReturns the string str with all remstr prefixes or suffixes removed. If\nnone of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is\nassumed. remstr is optional and, if not specified, spaces are removed.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT TRIM(\' bar \');\n -> \'bar\'\nmysql> SELECT TRIM(LEADING \'x\' FROM \'xxxbarxxx\');\n -> \'barxxx\'\nmysql> SELECT TRIM(BOTH \'x\' FROM \'xxxbarxxx\');\n -> \'bar\'\nmysql> SELECT TRIM(TRAILING \'xyz\' FROM \'barxxyz\');\n -> \'barx\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (454,17,'IS','Syntax:\nIS boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;\n -> 1, 1, 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (455,30,'GET_FORMAT','Syntax:\nGET_FORMAT({DATE|TIME|DATETIME}, {\'EUR\'|\'USA\'|\'JIS\'|\'ISO\'|\'INTERNAL\'})\n\nReturns a format string. This function is useful in combination with\nthe DATE_FORMAT() and the STR_TO_DATE() functions.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2003-10-03\',GET_FORMAT(DATE,\'EUR\'));\n -> \'03.10.2003\'\nmysql> SELECT STR_TO_DATE(\'10.31.2003\',GET_FORMAT(DATE,\'USA\'));\n -> \'2003-10-31\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (456,20,'TINYBLOB','TINYBLOB\n\nA BLOB column with a maximum length of 255 (28 - 1) bytes. Each\nTINYBLOB value is stored using a one-byte length prefix that indicates\nthe number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (457,8,'SAVEPOINT','Syntax:\nSAVEPOINT identifier\nROLLBACK [WORK] TO [SAVEPOINT] identifier\nRELEASE SAVEPOINT identifier\n\nInnoDB supports the SQL statements SAVEPOINT, ROLLBACK TO SAVEPOINT,\nRELEASE SAVEPOINT and the optional WORK keyword for ROLLBACK.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/savepoint.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/savepoint.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (458,15,'USER','Syntax:\nUSER()\n\nReturns the current MySQL user name and host name as a string in the\nutf8 character set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (459,37,'ALTER TABLE','Syntax:\nALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name\n alter_specification [, alter_specification] ...\n\nalter_specification:\n table_options\n | ADD [COLUMN] col_name column_definition\n [FIRST | AFTER col_name ]\n | ADD [COLUMN] (col_name column_definition,...)\n | ADD {INDEX|KEY} [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]] PRIMARY KEY\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n UNIQUE [INDEX|KEY] [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD FULLTEXT [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD SPATIAL [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n FOREIGN KEY [index_name] (index_col_name,...)\n reference_definition\n | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}\n | CHANGE [COLUMN] old_col_name new_col_name column_definition\n [FIRST|AFTER col_name]\n | MODIFY [COLUMN] col_name column_definition\n [FIRST | AFTER col_name]\n | DROP [COLUMN] col_name\n | DROP PRIMARY KEY\n | DROP {INDEX|KEY} index_name\n | DROP FOREIGN KEY fk_symbol\n | DISABLE KEYS\n | ENABLE KEYS\n | RENAME [TO] new_tbl_name\n | ORDER BY col_name [, col_name] ...\n | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]\n | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]\n | DISCARD TABLESPACE\n | IMPORT TABLESPACE\n | partition_options\n | ADD PARTITION (partition_definition)\n | DROP PARTITION partition_names\n | COALESCE PARTITION number\n | REORGANIZE PARTITION [partition_names INTO (partition_definitions)]\n | ANALYZE PARTITION partition_names\n | CHECK PARTITION partition_names\n | OPTIMIZE PARTITION partition_names\n | REBUILD PARTITION partition_names\n | REPAIR PARTITION partition_names\n | REMOVE PARTITIONING\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n\ntable_options:\n table_option [[,] table_option] ...\n\nALTER TABLE enables you to change the structure of an existing table.\nFor example, you can add or delete columns, create or destroy indexes,\nchange the type of existing columns, or rename columns or the table\nitself. You can also change the comment for the table and type of the\ntable.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (460,31,'MPOINTFROMWKB','MPointFromWKB(wkb[,srid]), MultiPointFromWKB(wkb[,srid])\n\nConstructs a MULTIPOINT value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (461,20,'CHAR BYTE','The CHAR BYTE data type is an alias for the BINARY data type. This is a\ncompatibility feature.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (462,19,'REPAIR TABLE','Syntax:\nREPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n [QUICK] [EXTENDED] [USE_FRM]\n\nREPAIR TABLE repairs a possibly corrupted table. By default, it has the\nsame effect as myisamchk --recover tbl_name. REPAIR TABLE works for\nMyISAM and for ARCHIVE tables. Starting with MySQL 5.1.9, REPAIR is\nalso valid for CSV tables. See\nhttp://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html, and\nhttp://dev.mysql.com/doc/refman/5.1/en/archive-storage-engine.html, and\nhttp://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, REPAIR TABLE is also supported for\npartitioned tables. However, the USE_FRM option cannot be used with\nthis statement on a partitioned table.\n\nAlso beginning with MySQL 5.1.27, you can use ALTER TABLE ... REPAIR\nPARTITION to repair one or more partitions; for more information, see\n[HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/repair-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/repair-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (463,37,'MERGE','The MERGE storage engine, also known as the MRG_MyISAM engine, is a\ncollection of identical MyISAM tables that can be used as one.\n"Identical" means that all tables have identical column and index\ninformation. You cannot merge MyISAM tables in which the columns are\nlisted in a different order, do not have exactly the same columns, or\nhave the indexes in different order. However, any or all of the MyISAM\ntables can be compressed with myisampack. See\nhttp://dev.mysql.com/doc/refman/5.1/en/myisampack.html. Differences in\ntable options such as AVG_ROW_LENGTH, MAX_ROWS, or PACK_KEYS do not\nmatter.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html\n\n','mysql> CREATE TABLE t1 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> CREATE TABLE t2 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> INSERT INTO t1 (message) VALUES (\'Testing\'),(\'table\'),(\'t1\');\nmysql> INSERT INTO t2 (message) VALUES (\'Testing\'),(\'table\'),(\'t2\');\nmysql> CREATE TABLE total (\n -> a INT NOT NULL AUTO_INCREMENT,\n -> message CHAR(20), INDEX(a))\n -> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;\n','http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (464,37,'CREATE TABLE','Syntax:\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n (create_definition,...)\n [table_options]\n [partition_options]\n\nOr:\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n [(create_definition,...)]\n [table_options]\n [partition_options]\n select_statement\n\nOr:\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n { LIKE old_tbl_name | (LIKE old_tbl_name) }\n\ncreate_definition:\n col_name column_definition\n | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)\n [index_option] ...\n | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]\n [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name,...) reference_definition\n | CHECK (expr)\n\ncolumn_definition:\n data_type [NOT NULL | NULL] [DEFAULT default_value]\n [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]\n [COMMENT \'string\']\n [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]\n [STORAGE {DISK|MEMORY|DEFAULT}]\n [reference_definition]\n\ndata_type:\n BIT[(length)]\n | TINYINT[(length)] [UNSIGNED] [ZEROFILL]\n | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]\n | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]\n | INT[(length)] [UNSIGNED] [ZEROFILL]\n | INTEGER[(length)] [UNSIGNED] [ZEROFILL]\n | BIGINT[(length)] [UNSIGNED] [ZEROFILL]\n | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | DATE\n | TIME\n | TIMESTAMP\n | DATETIME\n | YEAR\n | CHAR[(length)]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | VARCHAR(length)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | BINARY[(length)]\n | VARBINARY(length)\n | TINYBLOB\n | BLOB\n | MEDIUMBLOB\n | LONGBLOB\n | TINYTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | TEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | MEDIUMTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | LONGTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | ENUM(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | SET(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | spatial_type\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH | RTREE}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n\nreference_definition:\n REFERENCES tbl_name (index_col_name,...)\n [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\ntable_options:\n table_option [[,] table_option] ...\n\ntable_option:\n ENGINE [=] engine_name\n | AUTO_INCREMENT [=] value\n | AVG_ROW_LENGTH [=] value\n | [DEFAULT] CHARACTER SET [=] charset_name\n | CHECKSUM [=] {0 | 1}\n | [DEFAULT] COLLATE [=] collation_name\n | COMMENT [=] \'string\'\n | CONNECTION [=] \'connect_string\'\n | DATA DIRECTORY [=] \'absolute path to directory\'\n | DELAY_KEY_WRITE [=] {0 | 1}\n | INDEX DIRECTORY [=] \'absolute path to directory\'\n | INSERT_METHOD [=] { NO | FIRST | LAST }\n | KEY_BLOCK_SIZE [=] value\n | MAX_ROWS [=] value\n | MIN_ROWS [=] value\n | PACK_KEYS [=] {0 | 1 | DEFAULT}\n | PASSWORD [=] \'string\'\n | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}\n | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}]\n | UNION [=] (tbl_name[,tbl_name]...)\n\npartition_options:\n PARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY(column_list)\n | RANGE(expr)\n | LIST(expr) }\n [PARTITIONS num]\n [SUBPARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY(column_list) }\n [SUBPARTITIONS num]\n ]\n [(partition_definition [, partition_definition] ...)]\n\npartition_definition:\n PARTITION partition_name\n [VALUES {LESS THAN {(expr) | MAXVALUE} | IN (value_list)}]\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n [(subpartition_definition [, subpartition_definition] ...)]\n\nsubpartition_definition:\n SUBPARTITION logical_name\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n\nselect_statement:\n [IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)\n\nCREATE TABLE creates a table with the given name. You must have the\nCREATE privilege for the table.\n\nRules for allowable table names are given in\nhttp://dev.mysql.com/doc/refman/5.1/en/identifiers.html. By default,\nthe table is created in the default database. An error occurs if the\ntable exists, if there is no default database, or if the database does\nnot exist.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/create-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (465,17,'>','Syntax:\n>\n\nGreater than:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT 2 > 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (466,19,'ANALYZE TABLE','Syntax:\nANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n\nANALYZE TABLE analyzes and stores the key distribution for a table.\nDuring the analysis, the table is locked with a read lock for MyISAM.\nFor InnoDB the table is locked with a write lock. This statement works\nwith MyISAM, and InnoDB tables. For MyISAM tables, this statement is\nequivalent to using myisamchk --analyze.\n\nFor more information on how the analysis works within InnoDB, see\nhttp://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html.\n\nMy… uses the stored key distribution to decide the order in which\ntables should be joined when you perform a join on something other than\na constant. In addition, key distributions can be used when deciding\nwhich indexes to use for a specific table within a query.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nBeginning with MySQL 5.1.27, ANALYZE TABLE is also supported for\npartitioned tables. Also beginning with MySQL 5.1.27, you can use ALTER\nTABLE ... ANALYZE PARTITION to analyze one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-maintenance.html.\…: http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (467,30,'MICROSECOND','Syntax:\nMICROSECOND(expr)\n\nReturns the microseconds from the time or datetime expression expr as a\nnumber in the range from 0 to 999999.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MICROSECOND(\'12:00:00.123456\');\n -> 123456\nmysql> SELECT MICROSECOND(\'2009-12-31 23:59:59.000010\');\n -> 10\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (468,37,'CONSTRAINT','InnoDB supports foreign key constraints. The syntax for a foreign key\nconstraint definition in InnoDB looks like this:\n\n[CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name, ...)\n REFERENCES tbl_name (index_col_name,...)\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html\…','CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,\n price DECIMAL,\n PRIMARY KEY(category, id)) ENGINE=INNODB;\nCREATE TABLE customer (id INT NOT NULL,\n PRIMARY KEY (id)) ENGINE=INNODB;\nCREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,\n product_category INT NOT NULL,\n product_id INT NOT NULL,\n customer_id INT NOT NULL,\n PRIMARY KEY(no),\n INDEX (product_category, product_id),\n FOREIGN KEY (product_category, product_id)\n REFERENCES product(category, id)\n ON UPDATE CASCADE ON DELETE RESTRICT,\n INDEX (customer_id),\n FOREIGN KEY (customer_id)\n REFERENCES customer(id)) ENGINE=INNODB;\n','http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (469,37,'CREATE SERVER','Syntax:\nCREATE SERVER server_name\n FOREIGN DATA WRAPPER wrapper_name\n OPTIONS (option [, option] ...)\n\noption:\n { HOST character-literal\n | DATABASE character-literal\n | USER character-literal\n | PASSWORD character-literal\n | SOCKET character-literal\n | OWNER character-literal\n | PORT numeric-literal }\n\nThis statement creates the definition of a server for use with the\nFEDERATED storage engine. The CREATE SERVER statement creates a new row\nwithin the servers table within the mysql database. This statement\nrequires the SUPER privilege.\n\nThe server_name should be a unique reference to the server. Server\ndefinitions are global within the scope of the server, it is not\npossible to qualify the server definition to a specific database.\nserver_name has a maximum length of 64 characters (names longer than 64\ncharacters are silently truncated), and is case insensitive. You may\nspecify the name as a quoted string.\n\nThe wrapper_name should be mysql, and may be quoted with single quotes.\nOther values for wrapper_name are not currently supported.\n\nFor each option you must specify either a character literal or numeric\nliteral. Character literals are UTF-8, support a maximum length of 64\ncharacters and default to a blank (empty) string. String literals are\nsilently truncated to 64 characters. Numeric literals must be a number\nbetween 0 and 9999, default value is 0.\n\n*Note*: Note that the OWNER option is currently not applied, and has no\neffect on the ownership or operation of the server connection that is\ncreated.\n\nThe CREATE SERVER statement creates an entry in the mysql.server table\nthat can later be used with the CREATE TABLE statement when creating a\nFEDERATED table. The options that you specify will be used to populate\nthe columns in the mysql.server table. The table columns are\nServer_name, Host, Db, Username, Password, Port and Socket.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/create-server.html\n\n','CREATE SERVER s\nFOREIGN DATA WRAPPER mysql\nOPTIONS (USER \'Remote\', HOST \'192.168.1.106\', DATABASE \'test\');\n','http://dev.mysql.com/doc/refman/5.1/en/create-server.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (470,35,'FIELD','Syntax:\nFIELD(str,str1,str2,str3,...)\n\nReturns the index (position) of str in the str1, str2, str3, ... list.\nReturns 0 if str is not found.\n\nIf all arguments to FIELD() are strings, all arguments are compared as\nstrings. If all arguments are numbers, they are compared as numbers.\nOtherwise, the arguments are compared as double.\n\nIf str is NULL, the return value is 0 because NULL fails equality\ncomparison with any value. FIELD() is the complement of ELT().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FIELD(\'ej\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 2\nmysql> SELECT FIELD(\'fo\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (471,30,'MAKETIME','Syntax:\nMAKETIME(hour,minute,second)\n\nReturns a time value calculated from the hour, minute, and second\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT MAKETIME(12,15,30);\n -> \'12:15:30\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (472,30,'CURDATE','Syntax:\nCURDATE()\n\nReturns the current date as a value in \'YYYY-MM-DD\' or YYYYMMDD format,\ndepending on whether the function is used in a string or numeric\ncontext.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT CURDATE();\n -> \'2008-06-13\'\nmysql> SELECT CURDATE() + 0;\n -> 20080613\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (473,9,'SET PASSWORD','Syntax:\nSET PASSWORD [FOR user] =\n {\n PASSWORD(\'some password\')\n | OLD_PASSWORD(\'some password\')\n | \'encrypted password\'\n }\n\nThe SET PASSWORD statement assigns a password to an existing MySQL user\naccount.\n\nIf the password is specified using the PASSWORD() or OLD_PASSWORD()\nfunction, the literal text of the password should be given. If the\npassword is specified without using either function, the password\nshould be the already-encrypted password value as returned by\nPASSWORD().\n\nWith no FOR clause, this statement sets the password for the current\nuser. Any client that has connected to the server using a nonanonymous\naccount can change the password for that account.\n\nWith a FOR clause, this statement sets the password for a specific\naccount on the current server host. Only clients that have the UPDATE\nprivilege for the mysql database can do this. The user value should be\ngiven in user_name@host_name format, where user_name and host_name are\nexactly as they are listed in the User and Host columns of the\nmysql.user table entry. For example, if you had an entry with User and\nHost column values of \'bob\' and \'%.loc.gov\', you would write the\nstatement like this:\n\nSET PASSWORD FOR \'bob\'@\'%.loc.gov\' = PASSWORD(\'newpass\');\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-password.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-password.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (474,37,'ALTER TABLESPACE','Syntax:\nALTER TABLESPACE tablespace_name\n {ADD|DROP} DATAFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement can be used either to add a new data file, or to drop a\ndata file from a tablespace.\n\nThe ADD DATAFILE variant allows you to specify an initial size using an\nINITIAL_SIZE clause, where size is measured in bytes; the default value\nis 128M (128 megabytes). You may optionally follow this integer value\nwith a one-letter abbreviation for an order of magnitude, similar to\nthose used in my.cnf. Generally, this is one of the letters M (for\nmegabytes) or G (for gigabytes).\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an data file with the same name, or an undo log\nfile and a with the same name.\n\nPrior to MySQL Cluster NDB 6.2.17, 6.3.23, and 6.4.3, path and file\nnames for data files could not be longer than 128 characters.\n(Bug#31770 (http://bugs.mysql.com/31770))\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is 4G.\n(Bug#29186 (http://bugs.mysql.com/29186))\n\nOnce a data file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using additional ALTER\nTABLESPACE ... ADD DATAFILE statements.\n\nUsing DROP DATAFILE with ALTER TABLESPACE drops the data file\n\'file_name\' from the tablespace. This file must already have been added\nto the tablespace using CREATE TABLESPACE or ALTER TABLESPACE;\notherwise an error will result.\n\nBoth ALTER TABLESPACE ... ADD DATAFILE and ALTER TABLESPACE ... DROP\nDATAFILE require an ENGINE clause which specifies the storage engine\nused by the tablespace. In MySQL 5.1, the only accepted values for\nengine_name are NDB and NDBCLUSTER.\n\nWAIT is parsed but otherwise ignored, and so has no effect in MySQL\n5.1. It is intended for future expansion.\n\nWhen ALTER TABLESPACE ... ADD DATAFILE is used with ENGINE = NDB, a\ndata file is created on each Cluster data node. You can verify that the\ndata files were created and obtain information about them by querying\nthe INFORMATION_SCHEMA.FILES table. For example, the following query\nshows all data files belonging to the tablespace named newts:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA\n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+--------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+--------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=4 |\n+--------------------+--------------+----------------+\n2 rows in set (0.03 sec)\n\nSee http://dev.mysql.com/doc/refman/5.1/en/files-table.html.\n\nALTER TABLESPACE was added in MySQL 5.1.6. In MySQL 5.1, it is useful\nonly with Disk Data storage for MySQL Cluster. See\nhttp://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.\n…: http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/alter-tablespace.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (475,20,'ENUM','ENUM(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nAn enumeration. A string object that can have only one value, chosen\nfrom the list of values \'value1\', \'value2\', ..., NULL or the special \'\'\nerror value. An ENUM column can have a maximum of 65,535 distinct\nvalues. ENUM values are represented internally as integers.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (476,7,'IF FUNCTION','Syntax:\nIF(expr1,expr2,expr3)\n\nIf expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns\nexpr2; otherwise it returns expr3. IF() returns a numeric or string\nvalue, depending on the context in which it is used.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html\n\n','mysql> SELECT IF(1>2,2,3);\n -> 3\nmysql> SELECT IF(1<2,\'yes\',\'no\');\n -> \'yes\'\nmysql> SELECT IF(STRCMP(\'test\',\'test1\'),\'no\',\'yes\');\n -> \'no\'\n','http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (477,15,'DATABASE','Syntax:\nDATABASE()\n\nReturns the default (current) database name as a string in the utf8\ncharacter set. If there is no default database, DATABASE() returns\nNULL. Within a stored routine, the default database is the database\nthat the routine is associated with, which is not necessarily the same\nas the database that is the default in the calling context.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT DATABASE();\n -> \'test\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (478,31,'POINTFROMWKB','PointFromWKB(wkb[,srid])\n\nConstructs a POINT value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…','','http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-values.html#gis-wkb…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (479,4,'POWER','Syntax:\nPOWER(X,Y)\n\nThis is a synonym for POW().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (480,4,'ATAN','Syntax:\nATAN(X)\n\nReturns the arc tangent of X, that is, the value whose tangent is X.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(2);\n -> 1.1071487177941\nmysql> SELECT ATAN(-2);\n -> -1.1071487177941\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (481,35,'STRCMP','Syntax:\nSTRCMP(expr1,expr2)\n\nSTRCMP() returns 0 if the strings are the same, -1 if the first\nargument is smaller than the second according to the current sort\norder, and 1 otherwise.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html\n\n','mysql> SELECT STRCMP(\'text\', \'text2\');\n -> -1\nmysql> SELECT STRCMP(\'text2\', \'text\');\n -> 1\nmysql> SELECT STRCMP(\'text\', \'text\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (482,26,'INSERT DELAYED','Syntax:\nINSERT DELAYED ...\n\nThe DELAYED option for the INSERT statement is a MySQL extension to\nstandard SQL that is very useful if you have clients that cannot or\nneed not wait for the INSERT to complete. This is a common situation\nwhen you use MySQL for logging and you also periodically run SELECT and\nUPDATE statements that take a long time to complete.\n\nWhen a client uses INSERT DELAYED, it gets an okay from the server at\nonce, and the row is queued to be inserted when the table is not in use\nby any other thread.\n\nAnother major benefit of using INSERT DELAYED is that inserts from many\nclients are bundled together and written in one block. This is much\nfaster than performing many separate inserts.\n\nNote that INSERT DELAYED is slower than a normal INSERT if the table is\nnot otherwise in use. There is also the additional overhead for the\nserver to handle a separate thread for each table for which there are\ndelayed rows. This means that you should use INSERT DELAYED only when\nyou are really sure that you need it.\n\nThe queued rows are held only in memory until they are inserted into\nthe table. This means that if you terminate mysqld forcibly (for\nexample, with kill -9) or if mysqld dies unexpectedly, any queued rows\nthat have not been written to disk are lost.\n\nThere are some constraints on the use of DELAYED:\n\no INSERT DELAYED works only with MyISAM, MEMORY, ARCHIVE, and (as of\n MySQL 5.1.19) BLACKHOLE tables. For engines that do not support\n DELAYED, an error occurs.\n\no An error occurs for INSERT DELAYED if used with a table that has been\n locked with LOCK TABLES because the insert must be handled by a\n separate thread, not by the session that holds the lock.\n\no For MyISAM tables, if there are no free blocks in the middle of the\n data file, concurrent SELECT and INSERT statements are supported.\n Under these circumstances, you very seldom need to use INSERT DELAYED\n with MyISAM.\n\no INSERT DELAYED should be used only for INSERT statements that specify\n value lists. The server ignores DELAYED for INSERT ... SELECT or\n INSERT ... ON DUPLICATE KEY UPDATE statements.\n\no Because the INSERT DELAYED statement returns immediately, before the\n rows are inserted, you cannot use LAST_INSERT_ID() to get the\n AUTO_INCREMENT value that the statement might generate.\n\no DELAYED rows are not visible to SELECT statements until they actually\n have been inserted.\n\no INSERT DELAYED is treated as a normal INSERT if the statement inserts\n multiple rows and binary logging is enabled and the global logging\n format is to use statement-based logging (binlog_format is set to\n STATEMENT). This restriction does not apply to row-based binary\n logging.\n\no DELAYED is ignored on slave replication servers, so that INSERT\n DELAYED is treated as a normal INSERT on slaves. This is because\n DELAYED could cause the slave to have different data than the master.\n\no Pending INSERT DELAYED statements are lost if a table is write locked\n and ALTER TABLE is used to modify the table structure.\n\no INSERT DELAYED is not supported for views.\n\no INSERT DELAYED is not supported for partitioned tables.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (483,25,'SHOW PROFILE','Syntax:\nSHOW PROFILES\n\nThe SHOW PROFILE statement display profiling information that indicates\nresource usage for statements executed during the course of the current\nsession. It is used together with SHOW PROFILES; see [HELP SHOW\nPROFILES].\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-profile.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-profile.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (484,25,'SHOW PROCEDURE CODE','Syntax:\nSHOW PROCEDURE CODE proc_name\n\nThis statement is a MySQL extension that is available only for servers\nthat have been built with debugging support. It displays a\nrepresentation of the internal implementation of the named stored\nprocedure. A similar statement, SHOW FUNCTION CODE, displays\ninformation about stored functions (see [HELP SHOW FUNCTION CODE]).\n\nBoth statements require that you be the owner of the routine or have\nSELECT access to the mysql.proc table.\n\nIf the named routine is available, each statement produces a result\nset. Each row in the result set corresponds to one "instruction" in the\nroutine. The first column is Pos, which is an ordinal number beginning\nwith 0. The second column is Instruction, which contains an SQL\nstatement (usually changed from the original source), or a directive\nwhich has meaning only to the stored-routine handler.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-procedure-code.html\n\n','mysql> DELIMITER //\nmysql> CREATE PROCEDURE p1 ()\n -> BEGIN\n -> DECLARE fanta INT DEFAULT 55;\n -> DROP TABLE t2;\n -> LOOP\n -> INSERT INTO t3 VALUES (fanta);\n -> END LOOP;\n -> END//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SHOW PROCEDURE CODE p1//\n+-----+----------------------------------------+\n| Pos | Instruction |\n+-----+----------------------------------------+\n| 0 | set fanta@0 55 |\n| 1 | stmt 9 "DROP TABLE t2" |\n| 2 | stmt 5 "INSERT INTO t3 VALUES (fanta)" |\n| 3 | jump 2 |\n+-----+----------------------------------------+\n4 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.1/en/show-procedure-code.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (485,20,'MEDIUMTEXT','MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 16,777,215 (224 - 1) characters.\nThe effective maximum length is less if the value contains multi-byte\ncharacters. Each MEDIUMTEXT value is stored using a three-byte length\nprefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (486,4,'LN','Syntax:\nLN(X)\n\nReturns the natural logarithm of X; that is, the base-e logarithm of X.\nIf X is less than or equal to 0, then NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LN(2);\n -> 0.69314718055995\nmysql> SELECT LN(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (487,22,'RETURN','Syntax:\nRETURN expr\n\nThe RETURN statement terminates execution of a stored function and\nreturns the value expr to the function caller. There must be at least\none RETURN statement in a stored function. There may be more than one\nif the function has multiple exit points.\n\nThis statement is not used in stored procedures, triggers, or events.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/return.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/return.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (488,25,'SHOW COLLATION','Syntax:\nSHOW COLLATION\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement lists collations supported by the server. By default,\nthe output from SHOW COLLATION includes all available collations. The\nLIKE clause, if present, indicates which collation names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttp://dev.mysql.com/doc/refman/5.1/en/extended-show.html. For example:\n\nmysql> SHOW COLLATION LIKE \'latin1%\';\n+-------------------+---------+----+---------+----------+---------+\n| Collation | Charset | Id | Default | Compiled | Sortlen |\n+-------------------+---------+----+---------+----------+---------+\n| latin1_german1_ci | latin1 | 5 | | | 0 |\n| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 0 |\n| latin1_danish_ci | latin1 | 15 | | | 0 |\n| latin1_german2_ci | latin1 | 31 | | Yes | 2 |\n| latin1_bin | latin1 | 47 | | Yes | 0 |\n| latin1_general_ci | latin1 | 48 | | | 0 |\n| latin1_general_cs | latin1 | 49 | | | 0 |\n| latin1_spanish_ci | latin1 | 94 | | | 0 |\n+-------------------+---------+----+---------+----------+---------+\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/show-collation.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/show-collation.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (489,4,'LOG','Syntax:\nLOG(X), LOG(B,X)\n\nIf called with one parameter, this function returns the natural\nlogarithm of X. If X is less than or equal to 0, then NULL is returned.\n\nThe inverse of this function (when called with a single argument) is\nthe EXP() function.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT LOG(2);\n -> 0.69314718055995\nmysql> SELECT LOG(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (490,25,'SET SQL_LOG_BIN','Syntax:\nSET sql_log_bin = {0|1}\n\nDisables or enables binary logging for the current connection\n(sql_log_bin is a session variable) if the client has the SUPER\nprivilege. The statement is refused with an error if the client does\nnot have that privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/set-sql-log-bin.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/set-sql-log-bin.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (491,17,'!=','Syntax:\n<>, !=\n\nNot equal:\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT \'.01\' <> \'0.01\';\n -> 1\nmysql> SELECT .01 <> \'0.01\';\n -> 0\nmysql> SELECT \'zapp\' <> \'zappp\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (492,22,'WHILE','Syntax:\n[begin_label:] WHILE search_condition DO\n statement_list\nEND WHILE [end_label]\n\nThe statement list within a WHILE statement is repeated as long as the\nsearch_condition is true. statement_list consists of one or more\nstatements.\n\nA WHILE statement can be labeled. end_label cannot be given unless\nbegin_label also is present. If both are present, they must be the\nsame.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/while-statement.html\n\n','CREATE PROCEDURE dowhile()\nBEGIN\n DECLARE v1 INT DEFAULT 5;\n\n WHILE v1 > 0 DO\n ...\n SET v1 = v1 - 1;\n END WHILE;\nEND\n','http://dev.mysql.com/doc/refman/5.1/en/while-statement.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (493,11,'AES_DECRYPT','Syntax:\nAES_DECRYPT(crypt_str,key_str)\n\nThis function allows decryption of data using the official AES\n(Advanced Encryption Standard) algorithm. For more information, see the\ndescription of AES_ENCRYPT().\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (494,30,'DAYNAME','Syntax:\nDAYNAME(date)\n\nReturns the name of the weekday for date. As of MySQL 5.1.12, the\nlanguage used for the name is controlled by the value of the\nlc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.1/en/locale-support.html).\n\n…: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html\n\n','mysql> SELECT DAYNAME(\'2007-02-03\');\n -> \'Saturday\'\n','http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (495,15,'COERCIBILITY','Syntax:\nCOERCIBILITY(str)\n\nReturns the collation coercibility value of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT COERCIBILITY(\'abc\' COLLATE latin1_swedish_ci);\n -> 0\nmysql> SELECT COERCIBILITY(USER());\n -> 3\nmysql> SELECT COERCIBILITY(\'abc\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (496,20,'INT','INT[(M)] [UNSIGNED] [ZEROFILL]\n\nA normal-size integer. The signed range is -2147483648 to 2147483647.\nThe unsigned range is 0 to 4294967295.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (497,12,'GLENGTH','GLength(ls)\n\nReturns as a double-precision number the length of the LineString value\nls in its associated spatial reference.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT GLength(GeomFromText(@ls));\n+----------------------------+\n| GLength(GeomFromText(@ls)) |\n+----------------------------+\n| 2.8284271247462 |\n+----------------------------+\n','http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html#lin…');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (498,4,'RADIANS','Syntax:\nRADIANS(X)\n\nReturns the argument X, converted from degrees to radians. (Note that\nπ radians equals 180 degrees.)\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html\n\n','mysql> SELECT RADIANS(90);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (499,15,'COLLATION','Syntax:\nCOLLATION(str)\n\nReturns the collation of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT COLLATION(\'abc\');\n -> \'latin1_swedish_ci\'\nmysql> SELECT COLLATION(_utf8\'abc\');\n -> \'utf8_general_ci\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (500,17,'COALESCE','Syntax:\nCOALESCE(value,...)\n\nReturns the first non-NULL value in the list, or NULL if there are no\nnon-NULL values.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html\n\n','mysql> SELECT COALESCE(NULL,1);\n -> 1\nmysql> SELECT COALESCE(NULL,NULL,NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (501,15,'VERSION','Syntax:\nVERSION()\n\nReturns a string that indicates the MySQL server version. The string\nuses the utf8 character set.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html\n\n','mysql> SELECT VERSION();\n -> \'5.1.39-standard\'\n','http://dev.mysql.com/doc/refman/5.1/en/information-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (502,35,'MAKE_SET','Syntax:\nMAKE_SET(bits,str1,str2,...)\n\nReturns a set value (a string containing substrings separated by ","\ncharacters) consisting of the strings that have the corresponding bit\nin bits set. str1 corresponds to bit 0, str2 to bit 1, and so on. NULL\nvalues in str1, str2, ... are not appended to the result.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT MAKE_SET(1,\'a\',\'b\',\'c\');\n -> \'a\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',\'world\');\n -> \'hello,world\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',NULL,\'world\');\n -> \'hello\'\nmysql> SELECT MAKE_SET(0,\'a\',\'b\',\'c\');\n -> \'\'\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
+insert into help_topic (help_topic_id,help_category_id,name,description,example,url) values (503,35,'FIND_IN_SET','Syntax:\nFIND_IN_SET(str,strlist)\n\nReturns a value in the range of 1 to N if the string str is in the\nstring list strlist consisting of N substrings. A string list is a\nstring composed of substrings separated by "," characters. If the first\nargument is a constant string and the second is a column of type SET,\nthe FIND_IN_SET() function is optimized to use bit arithmetic. Returns\n0 if str is not in strlist or if strlist is the empty string. Returns\nNULL if either argument is NULL. This function does not work properly\nif the first argument contains a comma (",") character.\n\nURL: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html\n\n','mysql> SELECT FIND_IN_SET(\'b\',\'a,b,c,d\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.1/en/string-functions.html');
insert into help_keyword (help_keyword_id,name) values (0,'JOIN');
insert into help_keyword (help_keyword_id,name) values (1,'HOST');
@@ -1022,989 +1023,991 @@ insert into help_keyword (help_keyword_i
insert into help_keyword (help_keyword_id,name) values (449,'ROW_FORMAT');
insert into help_relation (help_topic_id,help_keyword_id) values (1,0);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,0);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,1);
-insert into help_relation (help_topic_id,help_keyword_id) values (227,2);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,3);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,0);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,1);
+insert into help_relation (help_topic_id,help_keyword_id) values (228,2);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,3);
insert into help_relation (help_topic_id,help_keyword_id) values (3,4);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,4);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,4);
insert into help_relation (help_topic_id,help_keyword_id) values (87,5);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,6);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,6);
insert into help_relation (help_topic_id,help_keyword_id) values (87,6);
insert into help_relation (help_topic_id,help_keyword_id) values (95,7);
insert into help_relation (help_topic_id,help_keyword_id) values (87,8);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,9);
-insert into help_relation (help_topic_id,help_keyword_id) values (427,10);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,11);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,9);
+insert into help_relation (help_topic_id,help_keyword_id) values (428,10);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,11);
insert into help_relation (help_topic_id,help_keyword_id) values (21,11);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,11);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,12);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,11);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,12);
insert into help_relation (help_topic_id,help_keyword_id) values (87,12);
insert into help_relation (help_topic_id,help_keyword_id) values (143,13);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,14);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,14);
insert into help_relation (help_topic_id,help_keyword_id) values (86,15);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,15);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,15);
insert into help_relation (help_topic_id,help_keyword_id) values (16,16);
insert into help_relation (help_topic_id,help_keyword_id) values (130,16);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,16);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,16);
insert into help_relation (help_topic_id,help_keyword_id) values (104,16);
-insert into help_relation (help_topic_id,help_keyword_id) values (495,17);
+insert into help_relation (help_topic_id,help_keyword_id) values (496,17);
insert into help_relation (help_topic_id,help_keyword_id) values (95,17);
-insert into help_relation (help_topic_id,help_keyword_id) values (377,18);
+insert into help_relation (help_topic_id,help_keyword_id) values (378,18);
insert into help_relation (help_topic_id,help_keyword_id) values (3,19);
insert into help_relation (help_topic_id,help_keyword_id) values (102,19);
-insert into help_relation (help_topic_id,help_keyword_id) values (238,19);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,20);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,21);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (239,19);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,20);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,21);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,22);
insert into help_relation (help_topic_id,help_keyword_id) values (34,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (232,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (296,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (233,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (297,22);
insert into help_relation (help_topic_id,help_keyword_id) values (9,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (413,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,22);
insert into help_relation (help_topic_id,help_keyword_id) values (414,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (415,22);
insert into help_relation (help_topic_id,help_keyword_id) values (30,22);
insert into help_relation (help_topic_id,help_keyword_id) values (85,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (259,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (403,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (327,22);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (260,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (404,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (328,22);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,22);
insert into help_relation (help_topic_id,help_keyword_id) values (106,23);
insert into help_relation (help_topic_id,help_keyword_id) values (120,24);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,25);
-insert into help_relation (help_topic_id,help_keyword_id) values (255,26);
+insert into help_relation (help_topic_id,help_keyword_id) values (167,24);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,25);
+insert into help_relation (help_topic_id,help_keyword_id) values (256,26);
insert into help_relation (help_topic_id,help_keyword_id) values (80,27);
insert into help_relation (help_topic_id,help_keyword_id) values (102,28);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,29);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,29);
insert into help_relation (help_topic_id,help_keyword_id) values (36,30);
-insert into help_relation (help_topic_id,help_keyword_id) values (398,31);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,31);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,31);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,32);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,33);
+insert into help_relation (help_topic_id,help_keyword_id) values (399,31);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,31);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,31);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,32);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,33);
insert into help_relation (help_topic_id,help_keyword_id) values (35,34);
-insert into help_relation (help_topic_id,help_keyword_id) values (232,34);
+insert into help_relation (help_topic_id,help_keyword_id) values (233,34);
insert into help_relation (help_topic_id,help_keyword_id) values (36,35);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,35);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,36);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,37);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,37);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,37);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,38);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,35);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,36);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,37);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,37);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,37);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,38);
insert into help_relation (help_topic_id,help_keyword_id) values (21,38);
-insert into help_relation (help_topic_id,help_keyword_id) values (290,38);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,38);
-insert into help_relation (help_topic_id,help_keyword_id) values (448,38);
-insert into help_relation (help_topic_id,help_keyword_id) values (495,39);
+insert into help_relation (help_topic_id,help_keyword_id) values (291,38);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,38);
+insert into help_relation (help_topic_id,help_keyword_id) values (449,38);
+insert into help_relation (help_topic_id,help_keyword_id) values (496,39);
insert into help_relation (help_topic_id,help_keyword_id) values (48,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,40);
insert into help_relation (help_topic_id,help_keyword_id) values (81,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,40);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,40);
insert into help_relation (help_topic_id,help_keyword_id) values (75,40);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,41);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,41);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,42);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,43);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,43);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,44);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,41);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,41);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,42);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,43);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,43);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,44);
insert into help_relation (help_topic_id,help_keyword_id) values (115,44);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,44);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,44);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,44);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,45);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,46);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,47);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,44);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,44);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,44);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,45);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,46);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,47);
insert into help_relation (help_topic_id,help_keyword_id) values (95,47);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,48);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,49);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,50);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,48);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,49);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,50);
insert into help_relation (help_topic_id,help_keyword_id) values (48,50);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,50);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,51);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,51);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,50);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,51);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,51);
insert into help_relation (help_topic_id,help_keyword_id) values (1,51);
insert into help_relation (help_topic_id,help_keyword_id) values (87,51);
-insert into help_relation (help_topic_id,help_keyword_id) values (172,52);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,52);
+insert into help_relation (help_topic_id,help_keyword_id) values (173,52);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,52);
insert into help_relation (help_topic_id,help_keyword_id) values (51,53);
insert into help_relation (help_topic_id,help_keyword_id) values (104,53);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,54);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,55);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,54);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,55);
insert into help_relation (help_topic_id,help_keyword_id) values (55,55);
insert into help_relation (help_topic_id,help_keyword_id) values (1,55);
insert into help_relation (help_topic_id,help_keyword_id) values (48,56);
insert into help_relation (help_topic_id,help_keyword_id) values (81,56);
insert into help_relation (help_topic_id,help_keyword_id) values (104,56);
-insert into help_relation (help_topic_id,help_keyword_id) values (189,57);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,57);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,57);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,58);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,58);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,59);
+insert into help_relation (help_topic_id,help_keyword_id) values (190,57);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,57);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,57);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,58);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,58);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,59);
insert into help_relation (help_topic_id,help_keyword_id) values (87,59);
-insert into help_relation (help_topic_id,help_keyword_id) values (296,59);
-insert into help_relation (help_topic_id,help_keyword_id) values (354,59);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,60);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,61);
+insert into help_relation (help_topic_id,help_keyword_id) values (297,59);
+insert into help_relation (help_topic_id,help_keyword_id) values (355,59);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,60);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,61);
insert into help_relation (help_topic_id,help_keyword_id) values (1,62);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,62);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,62);
insert into help_relation (help_topic_id,help_keyword_id) values (102,62);
insert into help_relation (help_topic_id,help_keyword_id) values (81,62);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,62);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,62);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,63);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,63);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,62);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,62);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,63);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,63);
insert into help_relation (help_topic_id,help_keyword_id) values (48,63);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,64);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,64);
insert into help_relation (help_topic_id,help_keyword_id) values (85,65);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,65);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,65);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,66);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,67);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,68);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,65);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,65);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,66);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,67);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,68);
insert into help_relation (help_topic_id,help_keyword_id) values (89,69);
-insert into help_relation (help_topic_id,help_keyword_id) values (477,69);
-insert into help_relation (help_topic_id,help_keyword_id) values (382,70);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,71);
+insert into help_relation (help_topic_id,help_keyword_id) values (478,69);
+insert into help_relation (help_topic_id,help_keyword_id) values (383,70);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,71);
insert into help_relation (help_topic_id,help_keyword_id) values (1,72);
insert into help_relation (help_topic_id,help_keyword_id) values (39,73);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,73);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,73);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,74);
-insert into help_relation (help_topic_id,help_keyword_id) values (456,74);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,74);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,75);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,75);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,76);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,73);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,73);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,74);
+insert into help_relation (help_topic_id,help_keyword_id) values (457,74);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,74);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,75);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,75);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,76);
insert into help_relation (help_topic_id,help_keyword_id) values (87,76);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,77);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,78);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,78);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,77);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,78);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,78);
insert into help_relation (help_topic_id,help_keyword_id) values (102,78);
insert into help_relation (help_topic_id,help_keyword_id) values (81,78);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,79);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,79);
insert into help_relation (help_topic_id,help_keyword_id) values (87,79);
-insert into help_relation (help_topic_id,help_keyword_id) values (300,80);
+insert into help_relation (help_topic_id,help_keyword_id) values (301,80);
insert into help_relation (help_topic_id,help_keyword_id) values (3,80);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,80);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,80);
insert into help_relation (help_topic_id,help_keyword_id) values (102,80);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,81);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,82);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,83);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,84);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,81);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,82);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,83);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,84);
insert into help_relation (help_topic_id,help_keyword_id) values (127,85);
insert into help_relation (help_topic_id,help_keyword_id) values (143,86);
-insert into help_relation (help_topic_id,help_keyword_id) values (456,86);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,87);
+insert into help_relation (help_topic_id,help_keyword_id) values (457,86);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,87);
insert into help_relation (help_topic_id,help_keyword_id) values (18,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (436,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (298,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (483,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (414,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (324,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (182,88);
-insert into help_relation (help_topic_id,help_keyword_id) values (186,89);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (437,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (299,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (484,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (415,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (325,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (183,88);
+insert into help_relation (help_topic_id,help_keyword_id) values (187,89);
insert into help_relation (help_topic_id,help_keyword_id) values (97,89);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,90);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,90);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,90);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,90);
insert into help_relation (help_topic_id,help_keyword_id) values (86,91);
-insert into help_relation (help_topic_id,help_keyword_id) values (399,92);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,92);
+insert into help_relation (help_topic_id,help_keyword_id) values (400,92);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,92);
insert into help_relation (help_topic_id,help_keyword_id) values (67,93);
-insert into help_relation (help_topic_id,help_keyword_id) values (430,93);
-insert into help_relation (help_topic_id,help_keyword_id) values (325,93);
-insert into help_relation (help_topic_id,help_keyword_id) values (281,94);
+insert into help_relation (help_topic_id,help_keyword_id) values (431,93);
+insert into help_relation (help_topic_id,help_keyword_id) values (326,93);
+insert into help_relation (help_topic_id,help_keyword_id) values (282,94);
insert into help_relation (help_topic_id,help_keyword_id) values (83,95);
insert into help_relation (help_topic_id,help_keyword_id) values (57,95);
insert into help_relation (help_topic_id,help_keyword_id) values (28,95);
-insert into help_relation (help_topic_id,help_keyword_id) values (191,96);
+insert into help_relation (help_topic_id,help_keyword_id) values (192,96);
insert into help_relation (help_topic_id,help_keyword_id) values (102,96);
-insert into help_relation (help_topic_id,help_keyword_id) values (481,96);
-insert into help_relation (help_topic_id,help_keyword_id) values (297,96);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,97);
-insert into help_relation (help_topic_id,help_keyword_id) values (278,97);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,98);
+insert into help_relation (help_topic_id,help_keyword_id) values (482,96);
+insert into help_relation (help_topic_id,help_keyword_id) values (298,96);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,97);
+insert into help_relation (help_topic_id,help_keyword_id) values (279,97);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,98);
insert into help_relation (help_topic_id,help_keyword_id) values (104,98);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,99);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,100);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,99);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,100);
insert into help_relation (help_topic_id,help_keyword_id) values (152,101);
insert into help_relation (help_topic_id,help_keyword_id) values (30,101);
insert into help_relation (help_topic_id,help_keyword_id) values (87,101);
-insert into help_relation (help_topic_id,help_keyword_id) values (296,101);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,101);
+insert into help_relation (help_topic_id,help_keyword_id) values (297,101);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,101);
insert into help_relation (help_topic_id,help_keyword_id) values (9,101);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,101);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,102);
-insert into help_relation (help_topic_id,help_keyword_id) values (363,102);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,101);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,102);
+insert into help_relation (help_topic_id,help_keyword_id) values (364,102);
insert into help_relation (help_topic_id,help_keyword_id) values (143,103);
-insert into help_relation (help_topic_id,help_keyword_id) values (456,103);
+insert into help_relation (help_topic_id,help_keyword_id) values (457,103);
insert into help_relation (help_topic_id,help_keyword_id) values (86,104);
insert into help_relation (help_topic_id,help_keyword_id) values (24,104);
insert into help_relation (help_topic_id,help_keyword_id) values (110,105);
-insert into help_relation (help_topic_id,help_keyword_id) values (171,105);
+insert into help_relation (help_topic_id,help_keyword_id) values (172,105);
insert into help_relation (help_topic_id,help_keyword_id) values (3,106);
insert into help_relation (help_topic_id,help_keyword_id) values (152,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (195,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (196,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,106);
insert into help_relation (help_topic_id,help_keyword_id) values (102,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (238,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,106);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,107);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,108);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,108);
+insert into help_relation (help_topic_id,help_keyword_id) values (239,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,106);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,107);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,108);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,108);
insert into help_relation (help_topic_id,help_keyword_id) values (112,108);
-insert into help_relation (help_topic_id,help_keyword_id) values (465,108);
+insert into help_relation (help_topic_id,help_keyword_id) values (466,108);
insert into help_relation (help_topic_id,help_keyword_id) values (112,109);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,109);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,109);
insert into help_relation (help_topic_id,help_keyword_id) values (38,110);
insert into help_relation (help_topic_id,help_keyword_id) values (116,110);
-insert into help_relation (help_topic_id,help_keyword_id) values (260,110);
+insert into help_relation (help_topic_id,help_keyword_id) values (261,110);
insert into help_relation (help_topic_id,help_keyword_id) values (148,110);
insert into help_relation (help_topic_id,help_keyword_id) values (122,111);
-insert into help_relation (help_topic_id,help_keyword_id) values (417,112);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,113);
+insert into help_relation (help_topic_id,help_keyword_id) values (418,112);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,113);
insert into help_relation (help_topic_id,help_keyword_id) values (87,113);
insert into help_relation (help_topic_id,help_keyword_id) values (123,113);
-insert into help_relation (help_topic_id,help_keyword_id) values (491,113);
-insert into help_relation (help_topic_id,help_keyword_id) values (217,114);
-insert into help_relation (help_topic_id,help_keyword_id) values (329,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (492,113);
+insert into help_relation (help_topic_id,help_keyword_id) values (218,114);
+insert into help_relation (help_topic_id,help_keyword_id) values (330,115);
insert into help_relation (help_topic_id,help_keyword_id) values (127,115);
insert into help_relation (help_topic_id,help_keyword_id) values (3,115);
insert into help_relation (help_topic_id,help_keyword_id) values (152,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (489,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (490,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,115);
insert into help_relation (help_topic_id,help_keyword_id) values (102,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,115);
insert into help_relation (help_topic_id,help_keyword_id) values (136,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,115);
insert into help_relation (help_topic_id,help_keyword_id) values (81,115);
insert into help_relation (help_topic_id,help_keyword_id) values (143,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (179,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (472,115);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,116);
-insert into help_relation (help_topic_id,help_keyword_id) values (258,117);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (180,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (473,115);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,116);
+insert into help_relation (help_topic_id,help_keyword_id) values (259,117);
insert into help_relation (help_topic_id,help_keyword_id) values (129,117);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,117);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,117);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (332,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (363,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (219,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (398,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,117);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,117);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (333,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (364,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (220,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (399,118);
insert into help_relation (help_topic_id,help_keyword_id) values (58,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (324,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (325,118);
insert into help_relation (help_topic_id,help_keyword_id) values (133,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (211,118);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,119);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,119);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,119);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,120);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,120);
+insert into help_relation (help_topic_id,help_keyword_id) values (212,118);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,119);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,119);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,119);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,120);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,120);
insert into help_relation (help_topic_id,help_keyword_id) values (87,120);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,120);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,121);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,120);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,121);
insert into help_relation (help_topic_id,help_keyword_id) values (1,122);
insert into help_relation (help_topic_id,help_keyword_id) values (52,123);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,124);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,125);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,126);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,127);
-insert into help_relation (help_topic_id,help_keyword_id) values (452,128);
-insert into help_relation (help_topic_id,help_keyword_id) values (250,129);
-insert into help_relation (help_topic_id,help_keyword_id) values (281,130);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,131);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,131);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,132);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,124);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,125);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,126);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,127);
+insert into help_relation (help_topic_id,help_keyword_id) values (453,128);
+insert into help_relation (help_topic_id,help_keyword_id) values (251,129);
+insert into help_relation (help_topic_id,help_keyword_id) values (282,130);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,131);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,131);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,132);
insert into help_relation (help_topic_id,help_keyword_id) values (83,133);
insert into help_relation (help_topic_id,help_keyword_id) values (57,133);
-insert into help_relation (help_topic_id,help_keyword_id) values (232,134);
+insert into help_relation (help_topic_id,help_keyword_id) values (233,134);
insert into help_relation (help_topic_id,help_keyword_id) values (52,135);
-insert into help_relation (help_topic_id,help_keyword_id) values (320,135);
+insert into help_relation (help_topic_id,help_keyword_id) values (321,135);
insert into help_relation (help_topic_id,help_keyword_id) values (83,136);
insert into help_relation (help_topic_id,help_keyword_id) values (57,136);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,137);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,138);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,139);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,137);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,138);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,139);
insert into help_relation (help_topic_id,help_keyword_id) values (115,139);
-insert into help_relation (help_topic_id,help_keyword_id) values (452,139);
+insert into help_relation (help_topic_id,help_keyword_id) values (453,139);
insert into help_relation (help_topic_id,help_keyword_id) values (48,139);
insert into help_relation (help_topic_id,help_keyword_id) values (120,139);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,139);
-insert into help_relation (help_topic_id,help_keyword_id) values (357,139);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,140);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,139);
+insert into help_relation (help_topic_id,help_keyword_id) values (358,139);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,140);
insert into help_relation (help_topic_id,help_keyword_id) values (36,140);
insert into help_relation (help_topic_id,help_keyword_id) values (104,140);
insert into help_relation (help_topic_id,help_keyword_id) values (1,141);
insert into help_relation (help_topic_id,help_keyword_id) values (28,142);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,143);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,144);
-insert into help_relation (help_topic_id,help_keyword_id) values (176,145);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,146);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (177,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (418,147);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,148);
-insert into help_relation (help_topic_id,help_keyword_id) values (325,148);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,149);
-insert into help_relation (help_topic_id,help_keyword_id) values (177,150);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,143);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,144);
+insert into help_relation (help_topic_id,help_keyword_id) values (177,145);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,146);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (178,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (419,147);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,148);
+insert into help_relation (help_topic_id,help_keyword_id) values (326,148);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,149);
+insert into help_relation (help_topic_id,help_keyword_id) values (178,150);
insert into help_relation (help_topic_id,help_keyword_id) values (95,151);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,152);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,152);
insert into help_relation (help_topic_id,help_keyword_id) values (66,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (332,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (333,153);
insert into help_relation (help_topic_id,help_keyword_id) values (34,153);
insert into help_relation (help_topic_id,help_keyword_id) values (95,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (298,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (414,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (390,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (207,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (403,153);
-insert into help_relation (help_topic_id,help_keyword_id) values (228,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (299,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (415,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (391,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (208,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (404,153);
+insert into help_relation (help_topic_id,help_keyword_id) values (229,153);
insert into help_relation (help_topic_id,help_keyword_id) values (95,154);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,155);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,155);
-insert into help_relation (help_topic_id,help_keyword_id) values (247,156);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,157);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,158);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,158);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,159);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,159);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,155);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,155);
+insert into help_relation (help_topic_id,help_keyword_id) values (248,156);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,157);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,158);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,158);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,159);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,159);
insert into help_relation (help_topic_id,help_keyword_id) values (60,159);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,159);
-insert into help_relation (help_topic_id,help_keyword_id) values (172,160);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,159);
+insert into help_relation (help_topic_id,help_keyword_id) values (173,160);
insert into help_relation (help_topic_id,help_keyword_id) values (165,161);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,162);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,162);
-insert into help_relation (help_topic_id,help_keyword_id) values (413,162);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,162);
-insert into help_relation (help_topic_id,help_keyword_id) values (451,163);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,162);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,162);
+insert into help_relation (help_topic_id,help_keyword_id) values (414,162);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,162);
+insert into help_relation (help_topic_id,help_keyword_id) values (452,163);
insert into help_relation (help_topic_id,help_keyword_id) values (30,163);
insert into help_relation (help_topic_id,help_keyword_id) values (156,163);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,164);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,165);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,164);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,165);
insert into help_relation (help_topic_id,help_keyword_id) values (48,166);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,166);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,166);
insert into help_relation (help_topic_id,help_keyword_id) values (81,166);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,166);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,166);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,166);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,166);
insert into help_relation (help_topic_id,help_keyword_id) values (1,167);
insert into help_relation (help_topic_id,help_keyword_id) values (84,167);
insert into help_relation (help_topic_id,help_keyword_id) values (48,167);
-insert into help_relation (help_topic_id,help_keyword_id) values (247,168);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,169);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,169);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,170);
-insert into help_relation (help_topic_id,help_keyword_id) values (495,170);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,170);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,170);
+insert into help_relation (help_topic_id,help_keyword_id) values (248,168);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,169);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,169);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,170);
+insert into help_relation (help_topic_id,help_keyword_id) values (496,170);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,170);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,170);
insert into help_relation (help_topic_id,help_keyword_id) values (24,170);
insert into help_relation (help_topic_id,help_keyword_id) values (165,170);
insert into help_relation (help_topic_id,help_keyword_id) values (126,170);
insert into help_relation (help_topic_id,help_keyword_id) values (153,171);
insert into help_relation (help_topic_id,help_keyword_id) values (95,171);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,171);
-insert into help_relation (help_topic_id,help_keyword_id) values (409,172);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,173);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,174);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,171);
+insert into help_relation (help_topic_id,help_keyword_id) values (410,172);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,173);
insert into help_relation (help_topic_id,help_keyword_id) values (468,174);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,174);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,174);
-insert into help_relation (help_topic_id,help_keyword_id) values (300,175);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,174);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,174);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,174);
+insert into help_relation (help_topic_id,help_keyword_id) values (301,175);
insert into help_relation (help_topic_id,help_keyword_id) values (99,175);
insert into help_relation (help_topic_id,help_keyword_id) values (148,175);
insert into help_relation (help_topic_id,help_keyword_id) values (142,176);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,176);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,176);
insert into help_relation (help_topic_id,help_keyword_id) values (143,177);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,178);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,178);
insert into help_relation (help_topic_id,help_keyword_id) values (157,178);
-insert into help_relation (help_topic_id,help_keyword_id) values (452,179);
+insert into help_relation (help_topic_id,help_keyword_id) values (453,179);
insert into help_relation (help_topic_id,help_keyword_id) values (143,180);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,181);
-insert into help_relation (help_topic_id,help_keyword_id) values (177,181);
-insert into help_relation (help_topic_id,help_keyword_id) values (418,181);
-insert into help_relation (help_topic_id,help_keyword_id) values (195,181);
-insert into help_relation (help_topic_id,help_keyword_id) values (300,182);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,181);
+insert into help_relation (help_topic_id,help_keyword_id) values (178,181);
+insert into help_relation (help_topic_id,help_keyword_id) values (419,181);
+insert into help_relation (help_topic_id,help_keyword_id) values (196,181);
+insert into help_relation (help_topic_id,help_keyword_id) values (301,182);
insert into help_relation (help_topic_id,help_keyword_id) values (115,182);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,182);
-insert into help_relation (help_topic_id,help_keyword_id) values (357,182);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,183);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,184);
-insert into help_relation (help_topic_id,help_keyword_id) values (374,184);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,185);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,182);
+insert into help_relation (help_topic_id,help_keyword_id) values (358,182);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,183);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,184);
+insert into help_relation (help_topic_id,help_keyword_id) values (375,184);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,185);
insert into help_relation (help_topic_id,help_keyword_id) values (152,186);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,186);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,186);
-insert into help_relation (help_topic_id,help_keyword_id) values (392,187);
-insert into help_relation (help_topic_id,help_keyword_id) values (460,188);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,186);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,186);
+insert into help_relation (help_topic_id,help_keyword_id) values (393,187);
+insert into help_relation (help_topic_id,help_keyword_id) values (461,188);
insert into help_relation (help_topic_id,help_keyword_id) values (127,189);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,189);
-insert into help_relation (help_topic_id,help_keyword_id) values (179,189);
-insert into help_relation (help_topic_id,help_keyword_id) values (345,189);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,189);
+insert into help_relation (help_topic_id,help_keyword_id) values (180,189);
+insert into help_relation (help_topic_id,help_keyword_id) values (346,189);
insert into help_relation (help_topic_id,help_keyword_id) values (133,189);
-insert into help_relation (help_topic_id,help_keyword_id) values (449,190);
+insert into help_relation (help_topic_id,help_keyword_id) values (450,190);
insert into help_relation (help_topic_id,help_keyword_id) values (83,191);
insert into help_relation (help_topic_id,help_keyword_id) values (57,191);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,192);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,193);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,192);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,193);
insert into help_relation (help_topic_id,help_keyword_id) values (1,194);
insert into help_relation (help_topic_id,help_keyword_id) values (36,194);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,194);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,195);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,196);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,194);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,195);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,196);
insert into help_relation (help_topic_id,help_keyword_id) values (143,197);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,198);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,199);
-insert into help_relation (help_topic_id,help_keyword_id) values (188,199);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,198);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,199);
+insert into help_relation (help_topic_id,help_keyword_id) values (189,199);
insert into help_relation (help_topic_id,help_keyword_id) values (1,200);
-insert into help_relation (help_topic_id,help_keyword_id) values (217,201);
-insert into help_relation (help_topic_id,help_keyword_id) values (250,202);
+insert into help_relation (help_topic_id,help_keyword_id) values (218,201);
+insert into help_relation (help_topic_id,help_keyword_id) values (251,202);
insert into help_relation (help_topic_id,help_keyword_id) values (86,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,203);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,204);
-insert into help_relation (help_topic_id,help_keyword_id) values (256,205);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,206);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,206);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,207);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,203);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,203);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,203);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,203);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,204);
+insert into help_relation (help_topic_id,help_keyword_id) values (257,205);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,206);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,206);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,207);
insert into help_relation (help_topic_id,help_keyword_id) values (87,207);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,207);
-insert into help_relation (help_topic_id,help_keyword_id) values (287,208);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,209);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,207);
+insert into help_relation (help_topic_id,help_keyword_id) values (288,208);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,209);
insert into help_relation (help_topic_id,help_keyword_id) values (3,210);
insert into help_relation (help_topic_id,help_keyword_id) values (36,210);
insert into help_relation (help_topic_id,help_keyword_id) values (48,210);
insert into help_relation (help_topic_id,help_keyword_id) values (102,210);
insert into help_relation (help_topic_id,help_keyword_id) values (81,210);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,210);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,211);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,212);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,213);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,210);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,211);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,212);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,213);
insert into help_relation (help_topic_id,help_keyword_id) values (152,213);
-insert into help_relation (help_topic_id,help_keyword_id) values (305,213);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,213);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,213);
+insert into help_relation (help_topic_id,help_keyword_id) values (306,213);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,213);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,213);
insert into help_relation (help_topic_id,help_keyword_id) values (95,214);
-insert into help_relation (help_topic_id,help_keyword_id) values (273,215);
-insert into help_relation (help_topic_id,help_keyword_id) values (275,216);
-insert into help_relation (help_topic_id,help_keyword_id) values (459,217);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (274,215);
+insert into help_relation (help_topic_id,help_keyword_id) values (276,216);
+insert into help_relation (help_topic_id,help_keyword_id) values (460,217);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,218);
insert into help_relation (help_topic_id,help_keyword_id) values (1,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (300,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (301,218);
insert into help_relation (help_topic_id,help_keyword_id) values (85,218);
insert into help_relation (help_topic_id,help_keyword_id) values (99,218);
insert into help_relation (help_topic_id,help_keyword_id) values (60,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (304,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,218);
-insert into help_relation (help_topic_id,help_keyword_id) values (355,219);
-insert into help_relation (help_topic_id,help_keyword_id) values (422,220);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,221);
+insert into help_relation (help_topic_id,help_keyword_id) values (305,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,218);
+insert into help_relation (help_topic_id,help_keyword_id) values (356,219);
+insert into help_relation (help_topic_id,help_keyword_id) values (423,220);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,221);
insert into help_relation (help_topic_id,help_keyword_id) values (87,221);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,222);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,223);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,224);
-insert into help_relation (help_topic_id,help_keyword_id) values (250,224);
-insert into help_relation (help_topic_id,help_keyword_id) values (268,225);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,222);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,223);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,224);
+insert into help_relation (help_topic_id,help_keyword_id) values (251,224);
+insert into help_relation (help_topic_id,help_keyword_id) values (269,225);
insert into help_relation (help_topic_id,help_keyword_id) values (1,226);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,227);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,227);
insert into help_relation (help_topic_id,help_keyword_id) values (7,227);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,228);
-insert into help_relation (help_topic_id,help_keyword_id) values (427,228);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,229);
-insert into help_relation (help_topic_id,help_keyword_id) values (222,229);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,229);
-insert into help_relation (help_topic_id,help_keyword_id) values (424,230);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,228);
+insert into help_relation (help_topic_id,help_keyword_id) values (428,228);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,229);
+insert into help_relation (help_topic_id,help_keyword_id) values (223,229);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,229);
+insert into help_relation (help_topic_id,help_keyword_id) values (425,230);
insert into help_relation (help_topic_id,help_keyword_id) values (85,231);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,231);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,231);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,232);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,233);
-insert into help_relation (help_topic_id,help_keyword_id) values (495,233);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,233);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,231);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,231);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,232);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,233);
+insert into help_relation (help_topic_id,help_keyword_id) values (496,233);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,233);
insert into help_relation (help_topic_id,help_keyword_id) values (24,233);
insert into help_relation (help_topic_id,help_keyword_id) values (165,233);
insert into help_relation (help_topic_id,help_keyword_id) values (126,233);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,234);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,235);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,236);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,237);
-insert into help_relation (help_topic_id,help_keyword_id) values (382,238);
-insert into help_relation (help_topic_id,help_keyword_id) values (329,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,234);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,235);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,236);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,237);
+insert into help_relation (help_topic_id,help_keyword_id) values (383,238);
+insert into help_relation (help_topic_id,help_keyword_id) values (330,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,239);
insert into help_relation (help_topic_id,help_keyword_id) values (152,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (427,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,239);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,240);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (274,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (399,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (211,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (428,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,239);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,240);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (275,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (400,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (212,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,241);
insert into help_relation (help_topic_id,help_keyword_id) values (107,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (317,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (318,241);
insert into help_relation (help_topic_id,help_keyword_id) values (112,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (465,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (176,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (466,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (177,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,241);
insert into help_relation (help_topic_id,help_keyword_id) values (60,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (355,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (357,241);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (363,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (413,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,242);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,243);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,244);
+insert into help_relation (help_topic_id,help_keyword_id) values (356,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (358,241);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (364,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (414,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,242);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,243);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,244);
insert into help_relation (help_topic_id,help_keyword_id) values (30,244);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,244);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,244);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,245);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,246);
-insert into help_relation (help_topic_id,help_keyword_id) values (301,247);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,248);
-insert into help_relation (help_topic_id,help_keyword_id) values (306,249);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,250);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,244);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,244);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,245);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,246);
+insert into help_relation (help_topic_id,help_keyword_id) values (302,247);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,248);
+insert into help_relation (help_topic_id,help_keyword_id) values (307,249);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,250);
insert into help_relation (help_topic_id,help_keyword_id) values (86,251);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,252);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,253);
-insert into help_relation (help_topic_id,help_keyword_id) values (326,254);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,254);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,254);
-insert into help_relation (help_topic_id,help_keyword_id) values (311,255);
-insert into help_relation (help_topic_id,help_keyword_id) values (372,255);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,255);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,256);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,252);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,253);
+insert into help_relation (help_topic_id,help_keyword_id) values (327,254);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,254);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,254);
+insert into help_relation (help_topic_id,help_keyword_id) values (312,255);
+insert into help_relation (help_topic_id,help_keyword_id) values (373,255);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,255);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,256);
insert into help_relation (help_topic_id,help_keyword_id) values (86,257);
-insert into help_relation (help_topic_id,help_keyword_id) values (418,258);
+insert into help_relation (help_topic_id,help_keyword_id) values (419,258);
insert into help_relation (help_topic_id,help_keyword_id) values (66,259);
-insert into help_relation (help_topic_id,help_keyword_id) values (483,259);
-insert into help_relation (help_topic_id,help_keyword_id) values (241,260);
+insert into help_relation (help_topic_id,help_keyword_id) values (484,259);
+insert into help_relation (help_topic_id,help_keyword_id) values (242,260);
insert into help_relation (help_topic_id,help_keyword_id) values (143,261);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,262);
-insert into help_relation (help_topic_id,help_keyword_id) values (222,262);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,263);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,262);
+insert into help_relation (help_topic_id,help_keyword_id) values (223,262);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,263);
insert into help_relation (help_topic_id,help_keyword_id) values (148,263);
-insert into help_relation (help_topic_id,help_keyword_id) values (451,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (452,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,264);
insert into help_relation (help_topic_id,help_keyword_id) values (152,264);
insert into help_relation (help_topic_id,help_keyword_id) values (95,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (298,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (274,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (305,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (299,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (275,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (306,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (208,264);
insert into help_relation (help_topic_id,help_keyword_id) values (207,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,264);
insert into help_relation (help_topic_id,help_keyword_id) values (75,264);
insert into help_relation (help_topic_id,help_keyword_id) values (18,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,264);
insert into help_relation (help_topic_id,help_keyword_id) values (22,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (390,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (391,264);
insert into help_relation (help_topic_id,help_keyword_id) values (87,264);
insert into help_relation (help_topic_id,help_keyword_id) values (60,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (354,264);
-insert into help_relation (help_topic_id,help_keyword_id) values (326,265);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,266);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,267);
-insert into help_relation (help_topic_id,help_keyword_id) values (229,268);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,269);
-insert into help_relation (help_topic_id,help_keyword_id) values (448,269);
+insert into help_relation (help_topic_id,help_keyword_id) values (355,264);
+insert into help_relation (help_topic_id,help_keyword_id) values (327,265);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,266);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,267);
+insert into help_relation (help_topic_id,help_keyword_id) values (230,268);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,269);
+insert into help_relation (help_topic_id,help_keyword_id) values (449,269);
insert into help_relation (help_topic_id,help_keyword_id) values (87,270);
insert into help_relation (help_topic_id,help_keyword_id) values (39,271);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,271);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,271);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,272);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,273);
-insert into help_relation (help_topic_id,help_keyword_id) values (375,274);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,271);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,271);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,272);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,273);
+insert into help_relation (help_topic_id,help_keyword_id) values (376,274);
insert into help_relation (help_topic_id,help_keyword_id) values (144,275);
insert into help_relation (help_topic_id,help_keyword_id) values (105,276);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,277);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,277);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,278);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,279);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,277);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,277);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,278);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,279);
insert into help_relation (help_topic_id,help_keyword_id) values (3,280);
insert into help_relation (help_topic_id,help_keyword_id) values (102,280);
-insert into help_relation (help_topic_id,help_keyword_id) values (335,281);
-insert into help_relation (help_topic_id,help_keyword_id) values (340,282);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,283);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,284);
-insert into help_relation (help_topic_id,help_keyword_id) values (317,285);
-insert into help_relation (help_topic_id,help_keyword_id) values (189,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (336,281);
+insert into help_relation (help_topic_id,help_keyword_id) values (341,282);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,283);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,284);
+insert into help_relation (help_topic_id,help_keyword_id) values (318,285);
+insert into help_relation (help_topic_id,help_keyword_id) values (190,286);
insert into help_relation (help_topic_id,help_keyword_id) values (66,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (329,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (330,286);
insert into help_relation (help_topic_id,help_keyword_id) values (67,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (332,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (333,286);
insert into help_relation (help_topic_id,help_keyword_id) values (7,286);
insert into help_relation (help_topic_id,help_keyword_id) values (130,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (398,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (274,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (399,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (275,286);
insert into help_relation (help_topic_id,help_keyword_id) values (10,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (278,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (279,286);
insert into help_relation (help_topic_id,help_keyword_id) values (133,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (211,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (212,286);
insert into help_relation (help_topic_id,help_keyword_id) values (18,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,286);
insert into help_relation (help_topic_id,help_keyword_id) values (21,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (345,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (346,286);
insert into help_relation (help_topic_id,help_keyword_id) values (80,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (219,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (220,286);
insert into help_relation (help_topic_id,help_keyword_id) values (25,286);
insert into help_relation (help_topic_id,help_keyword_id) values (142,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (290,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (354,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (291,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (355,286);
insert into help_relation (help_topic_id,help_keyword_id) values (33,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (363,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (364,286);
insert into help_relation (help_topic_id,help_keyword_id) values (157,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (484,286);
insert into help_relation (help_topic_id,help_keyword_id) values (483,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (482,286);
insert into help_relation (help_topic_id,help_keyword_id) values (39,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (306,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (488,286);
insert into help_relation (help_topic_id,help_keyword_id) values (305,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (487,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (304,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (167,286);
insert into help_relation (help_topic_id,help_keyword_id) values (58,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (390,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (324,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (391,286);
insert into help_relation (help_topic_id,help_keyword_id) values (325,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (326,286);
insert into help_relation (help_topic_id,help_keyword_id) values (120,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (188,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (448,286);
-insert into help_relation (help_topic_id,help_keyword_id) values (301,287);
-insert into help_relation (help_topic_id,help_keyword_id) values (244,287);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,287);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,287);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,288);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,289);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,290);
+insert into help_relation (help_topic_id,help_keyword_id) values (189,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (449,286);
+insert into help_relation (help_topic_id,help_keyword_id) values (302,287);
+insert into help_relation (help_topic_id,help_keyword_id) values (245,287);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,287);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,287);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,288);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,289);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,290);
insert into help_relation (help_topic_id,help_keyword_id) values (120,291);
-insert into help_relation (help_topic_id,help_keyword_id) values (346,291);
+insert into help_relation (help_topic_id,help_keyword_id) values (347,291);
insert into help_relation (help_topic_id,help_keyword_id) values (83,292);
insert into help_relation (help_topic_id,help_keyword_id) values (57,292);
insert into help_relation (help_topic_id,help_keyword_id) values (28,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (322,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (340,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (491,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (227,292);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,293);
+insert into help_relation (help_topic_id,help_keyword_id) values (323,292);
+insert into help_relation (help_topic_id,help_keyword_id) values (341,292);
+insert into help_relation (help_topic_id,help_keyword_id) values (492,292);
+insert into help_relation (help_topic_id,help_keyword_id) values (228,292);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,293);
insert into help_relation (help_topic_id,help_keyword_id) values (144,294);
-insert into help_relation (help_topic_id,help_keyword_id) values (312,294);
-insert into help_relation (help_topic_id,help_keyword_id) values (310,295);
+insert into help_relation (help_topic_id,help_keyword_id) values (313,294);
+insert into help_relation (help_topic_id,help_keyword_id) values (311,295);
insert into help_relation (help_topic_id,help_keyword_id) values (104,296);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,297);
-insert into help_relation (help_topic_id,help_keyword_id) values (255,298);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,297);
+insert into help_relation (help_topic_id,help_keyword_id) values (256,298);
insert into help_relation (help_topic_id,help_keyword_id) values (3,298);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,298);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,298);
insert into help_relation (help_topic_id,help_keyword_id) values (102,298);
-insert into help_relation (help_topic_id,help_keyword_id) values (297,298);
-insert into help_relation (help_topic_id,help_keyword_id) values (250,298);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,299);
+insert into help_relation (help_topic_id,help_keyword_id) values (298,298);
+insert into help_relation (help_topic_id,help_keyword_id) values (251,298);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,299);
insert into help_relation (help_topic_id,help_keyword_id) values (157,299);
insert into help_relation (help_topic_id,help_keyword_id) values (138,300);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,301);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,301);
insert into help_relation (help_topic_id,help_keyword_id) values (75,301);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,302);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,303);
-insert into help_relation (help_topic_id,help_keyword_id) values (179,304);
-insert into help_relation (help_topic_id,help_keyword_id) values (452,305);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,302);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,303);
+insert into help_relation (help_topic_id,help_keyword_id) values (180,304);
+insert into help_relation (help_topic_id,help_keyword_id) values (453,305);
insert into help_relation (help_topic_id,help_keyword_id) values (108,306);
insert into help_relation (help_topic_id,help_keyword_id) values (24,306);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,307);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,308);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,309);
-insert into help_relation (help_topic_id,help_keyword_id) values (387,310);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,307);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,308);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,309);
+insert into help_relation (help_topic_id,help_keyword_id) values (388,310);
insert into help_relation (help_topic_id,help_keyword_id) values (117,310);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,311);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,311);
insert into help_relation (help_topic_id,help_keyword_id) values (25,312);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,312);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,313);
-insert into help_relation (help_topic_id,help_keyword_id) values (371,314);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,314);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,312);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,313);
+insert into help_relation (help_topic_id,help_keyword_id) values (372,314);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,314);
insert into help_relation (help_topic_id,help_keyword_id) values (143,315);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,316);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,317);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,318);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,319);
-insert into help_relation (help_topic_id,help_keyword_id) values (375,319);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,320);
-insert into help_relation (help_topic_id,help_keyword_id) values (287,320);
-insert into help_relation (help_topic_id,help_keyword_id) values (417,320);
-insert into help_relation (help_topic_id,help_keyword_id) values (380,321);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,316);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,317);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,318);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,319);
+insert into help_relation (help_topic_id,help_keyword_id) values (376,319);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,320);
+insert into help_relation (help_topic_id,help_keyword_id) values (288,320);
+insert into help_relation (help_topic_id,help_keyword_id) values (418,320);
+insert into help_relation (help_topic_id,help_keyword_id) values (381,321);
insert into help_relation (help_topic_id,help_keyword_id) values (86,322);
insert into help_relation (help_topic_id,help_keyword_id) values (120,322);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,322);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,323);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,324);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,325);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,322);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,323);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,324);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,325);
insert into help_relation (help_topic_id,help_keyword_id) values (84,326);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,326);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,327);
-insert into help_relation (help_topic_id,help_keyword_id) values (394,328);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,326);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,327);
+insert into help_relation (help_topic_id,help_keyword_id) values (395,328);
insert into help_relation (help_topic_id,help_keyword_id) values (86,329);
-insert into help_relation (help_topic_id,help_keyword_id) values (172,329);
+insert into help_relation (help_topic_id,help_keyword_id) values (173,329);
insert into help_relation (help_topic_id,help_keyword_id) values (148,329);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,330);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,331);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,330);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,331);
insert into help_relation (help_topic_id,help_keyword_id) values (52,332);
-insert into help_relation (help_topic_id,help_keyword_id) values (320,332);
-insert into help_relation (help_topic_id,help_keyword_id) values (371,333);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,333);
+insert into help_relation (help_topic_id,help_keyword_id) values (321,332);
+insert into help_relation (help_topic_id,help_keyword_id) values (372,333);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,333);
insert into help_relation (help_topic_id,help_keyword_id) values (9,333);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,334);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,335);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,334);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,335);
insert into help_relation (help_topic_id,help_keyword_id) values (121,336);
insert into help_relation (help_topic_id,help_keyword_id) values (143,337);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,337);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,338);
-insert into help_relation (help_topic_id,help_keyword_id) values (405,339);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,340);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,341);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,337);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,338);
+insert into help_relation (help_topic_id,help_keyword_id) values (406,339);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,340);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,341);
insert into help_relation (help_topic_id,help_keyword_id) values (141,342);
insert into help_relation (help_topic_id,help_keyword_id) values (24,343);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,344);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,344);
insert into help_relation (help_topic_id,help_keyword_id) values (107,344);
-insert into help_relation (help_topic_id,help_keyword_id) values (218,344);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,344);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,345);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,345);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,345);
+insert into help_relation (help_topic_id,help_keyword_id) values (219,344);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,344);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,345);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,345);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,345);
insert into help_relation (help_topic_id,help_keyword_id) values (1,346);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (436,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (437,347);
insert into help_relation (help_topic_id,help_keyword_id) values (156,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (371,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (222,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (372,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (223,347);
insert into help_relation (help_topic_id,help_keyword_id) values (60,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (228,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,347);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,348);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,349);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (229,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,347);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,348);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,349);
insert into help_relation (help_topic_id,help_keyword_id) values (1,350);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,350);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,350);
insert into help_relation (help_topic_id,help_keyword_id) values (1,351);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,352);
-insert into help_relation (help_topic_id,help_keyword_id) values (345,352);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,353);
-insert into help_relation (help_topic_id,help_keyword_id) values (424,354);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,355);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,356);
-insert into help_relation (help_topic_id,help_keyword_id) values (472,356);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,356);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,352);
+insert into help_relation (help_topic_id,help_keyword_id) values (346,352);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,353);
+insert into help_relation (help_topic_id,help_keyword_id) values (425,354);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,355);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,356);
+insert into help_relation (help_topic_id,help_keyword_id) values (473,356);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,356);
insert into help_relation (help_topic_id,help_keyword_id) values (75,356);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,357);
-insert into help_relation (help_topic_id,help_keyword_id) values (460,358);
-insert into help_relation (help_topic_id,help_keyword_id) values (225,358);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,357);
+insert into help_relation (help_topic_id,help_keyword_id) values (461,358);
+insert into help_relation (help_topic_id,help_keyword_id) values (226,358);
insert into help_relation (help_topic_id,help_keyword_id) values (104,359);
-insert into help_relation (help_topic_id,help_keyword_id) values (489,360);
+insert into help_relation (help_topic_id,help_keyword_id) values (490,360);
insert into help_relation (help_topic_id,help_keyword_id) values (67,361);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,361);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,362);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,363);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,364);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,365);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,365);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,361);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,362);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,363);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,364);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,365);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,365);
insert into help_relation (help_topic_id,help_keyword_id) values (143,366);
-insert into help_relation (help_topic_id,help_keyword_id) values (322,366);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,367);
-insert into help_relation (help_topic_id,help_keyword_id) values (482,368);
-insert into help_relation (help_topic_id,help_keyword_id) values (415,369);
+insert into help_relation (help_topic_id,help_keyword_id) values (323,366);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,367);
+insert into help_relation (help_topic_id,help_keyword_id) values (483,368);
+insert into help_relation (help_topic_id,help_keyword_id) values (416,369);
insert into help_relation (help_topic_id,help_keyword_id) values (87,370);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,370);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,371);
-insert into help_relation (help_topic_id,help_keyword_id) values (373,372);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,373);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,374);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,374);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,374);
-insert into help_relation (help_topic_id,help_keyword_id) values (440,375);
-insert into help_relation (help_topic_id,help_keyword_id) values (278,376);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,377);
-insert into help_relation (help_topic_id,help_keyword_id) values (445,378);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,370);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,371);
+insert into help_relation (help_topic_id,help_keyword_id) values (374,372);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,373);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,374);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,374);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,374);
+insert into help_relation (help_topic_id,help_keyword_id) values (441,375);
+insert into help_relation (help_topic_id,help_keyword_id) values (279,376);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,377);
+insert into help_relation (help_topic_id,help_keyword_id) values (446,378);
insert into help_relation (help_topic_id,help_keyword_id) values (87,379);
insert into help_relation (help_topic_id,help_keyword_id) values (126,380);
insert into help_relation (help_topic_id,help_keyword_id) values (10,381);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,381);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,382);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,381);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,382);
insert into help_relation (help_topic_id,help_keyword_id) values (30,382);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,382);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,383);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,382);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,383);
insert into help_relation (help_topic_id,help_keyword_id) values (56,384);
insert into help_relation (help_topic_id,help_keyword_id) values (82,385);
-insert into help_relation (help_topic_id,help_keyword_id) values (202,385);
-insert into help_relation (help_topic_id,help_keyword_id) values (453,385);
-insert into help_relation (help_topic_id,help_keyword_id) values (366,385);
+insert into help_relation (help_topic_id,help_keyword_id) values (203,385);
+insert into help_relation (help_topic_id,help_keyword_id) values (454,385);
+insert into help_relation (help_topic_id,help_keyword_id) values (367,385);
insert into help_relation (help_topic_id,help_keyword_id) values (82,386);
-insert into help_relation (help_topic_id,help_keyword_id) values (202,386);
+insert into help_relation (help_topic_id,help_keyword_id) values (203,386);
insert into help_relation (help_topic_id,help_keyword_id) values (152,386);
insert into help_relation (help_topic_id,help_keyword_id) values (87,386);
-insert into help_relation (help_topic_id,help_keyword_id) values (308,386);
-insert into help_relation (help_topic_id,help_keyword_id) values (182,387);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,388);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,388);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,389);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,390);
+insert into help_relation (help_topic_id,help_keyword_id) values (309,386);
+insert into help_relation (help_topic_id,help_keyword_id) values (183,387);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,388);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,388);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,389);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,390);
insert into help_relation (help_topic_id,help_keyword_id) values (143,391);
-insert into help_relation (help_topic_id,help_keyword_id) values (320,391);
+insert into help_relation (help_topic_id,help_keyword_id) values (321,391);
insert into help_relation (help_topic_id,help_keyword_id) values (33,392);
-insert into help_relation (help_topic_id,help_keyword_id) values (456,393);
-insert into help_relation (help_topic_id,help_keyword_id) values (475,394);
+insert into help_relation (help_topic_id,help_keyword_id) values (457,393);
+insert into help_relation (help_topic_id,help_keyword_id) values (476,394);
insert into help_relation (help_topic_id,help_keyword_id) values (152,394);
-insert into help_relation (help_topic_id,help_keyword_id) values (296,394);
+insert into help_relation (help_topic_id,help_keyword_id) values (297,394);
insert into help_relation (help_topic_id,help_keyword_id) values (9,394);
-insert into help_relation (help_topic_id,help_keyword_id) values (272,394);
+insert into help_relation (help_topic_id,help_keyword_id) values (273,394);
insert into help_relation (help_topic_id,help_keyword_id) values (28,394);
insert into help_relation (help_topic_id,help_keyword_id) values (30,394);
insert into help_relation (help_topic_id,help_keyword_id) values (87,394);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,394);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,395);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,396);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,394);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,395);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,396);
insert into help_relation (help_topic_id,help_keyword_id) values (104,397);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,398);
-insert into help_relation (help_topic_id,help_keyword_id) values (218,398);
-insert into help_relation (help_topic_id,help_keyword_id) values (327,398);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,398);
+insert into help_relation (help_topic_id,help_keyword_id) values (219,398);
+insert into help_relation (help_topic_id,help_keyword_id) values (328,398);
insert into help_relation (help_topic_id,help_keyword_id) values (75,398);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,399);
-insert into help_relation (help_topic_id,help_keyword_id) values (309,400);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,401);
-insert into help_relation (help_topic_id,help_keyword_id) values (304,401);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,401);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,399);
+insert into help_relation (help_topic_id,help_keyword_id) values (310,400);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,401);
+insert into help_relation (help_topic_id,help_keyword_id) values (305,401);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,401);
insert into help_relation (help_topic_id,help_keyword_id) values (48,402);
insert into help_relation (help_topic_id,help_keyword_id) values (120,402);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,402);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,402);
insert into help_relation (help_topic_id,help_keyword_id) values (81,402);
insert into help_relation (help_topic_id,help_keyword_id) values (104,402);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,403);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,403);
insert into help_relation (help_topic_id,help_keyword_id) values (60,403);
insert into help_relation (help_topic_id,help_keyword_id) values (102,403);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,403);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,403);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,404);
-insert into help_relation (help_topic_id,help_keyword_id) values (227,405);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,406);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,403);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,403);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,404);
+insert into help_relation (help_topic_id,help_keyword_id) values (228,405);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,406);
insert into help_relation (help_topic_id,help_keyword_id) values (3,407);
insert into help_relation (help_topic_id,help_keyword_id) values (102,407);
-insert into help_relation (help_topic_id,help_keyword_id) values (481,407);
-insert into help_relation (help_topic_id,help_keyword_id) values (465,408);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,408);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,409);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,409);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,410);
-insert into help_relation (help_topic_id,help_keyword_id) values (238,410);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,411);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,411);
+insert into help_relation (help_topic_id,help_keyword_id) values (482,407);
+insert into help_relation (help_topic_id,help_keyword_id) values (466,408);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,408);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,409);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,409);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,410);
+insert into help_relation (help_topic_id,help_keyword_id) values (239,410);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,411);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,411);
insert into help_relation (help_topic_id,help_keyword_id) values (36,412);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,413);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,413);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,413);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,413);
insert into help_relation (help_topic_id,help_keyword_id) values (127,414);
-insert into help_relation (help_topic_id,help_keyword_id) values (444,414);
-insert into help_relation (help_topic_id,help_keyword_id) values (345,414);
+insert into help_relation (help_topic_id,help_keyword_id) values (445,414);
+insert into help_relation (help_topic_id,help_keyword_id) values (346,414);
insert into help_relation (help_topic_id,help_keyword_id) values (133,414);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,415);
-insert into help_relation (help_topic_id,help_keyword_id) values (468,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (469,415);
insert into help_relation (help_topic_id,help_keyword_id) values (152,415);
-insert into help_relation (help_topic_id,help_keyword_id) values (305,415);
-insert into help_relation (help_topic_id,help_keyword_id) values (184,415);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (306,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (185,415);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,415);
insert into help_relation (help_topic_id,help_keyword_id) values (82,416);
-insert into help_relation (help_topic_id,help_keyword_id) values (467,416);
-insert into help_relation (help_topic_id,help_keyword_id) values (366,416);
-insert into help_relation (help_topic_id,help_keyword_id) values (478,417);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,418);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,419);
+insert into help_relation (help_topic_id,help_keyword_id) values (468,416);
+insert into help_relation (help_topic_id,help_keyword_id) values (367,416);
+insert into help_relation (help_topic_id,help_keyword_id) values (479,417);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,418);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,419);
insert into help_relation (help_topic_id,help_keyword_id) values (38,420);
insert into help_relation (help_topic_id,help_keyword_id) values (142,420);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,420);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,420);
insert into help_relation (help_topic_id,help_keyword_id) values (87,420);
-insert into help_relation (help_topic_id,help_keyword_id) values (219,420);
+insert into help_relation (help_topic_id,help_keyword_id) values (220,420);
insert into help_relation (help_topic_id,help_keyword_id) values (52,420);
-insert into help_relation (help_topic_id,help_keyword_id) values (320,420);
-insert into help_relation (help_topic_id,help_keyword_id) values (252,421);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,422);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,422);
-insert into help_relation (help_topic_id,help_keyword_id) values (486,423);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,424);
-insert into help_relation (help_topic_id,help_keyword_id) values (404,425);
+insert into help_relation (help_topic_id,help_keyword_id) values (321,420);
+insert into help_relation (help_topic_id,help_keyword_id) values (253,421);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,422);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,422);
+insert into help_relation (help_topic_id,help_keyword_id) values (487,423);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,424);
+insert into help_relation (help_topic_id,help_keyword_id) values (405,425);
insert into help_relation (help_topic_id,help_keyword_id) values (87,425);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,425);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,426);
-insert into help_relation (help_topic_id,help_keyword_id) values (208,426);
-insert into help_relation (help_topic_id,help_keyword_id) values (491,427);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,428);
-insert into help_relation (help_topic_id,help_keyword_id) values (461,429);
-insert into help_relation (help_topic_id,help_keyword_id) values (323,429);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,425);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,426);
+insert into help_relation (help_topic_id,help_keyword_id) values (209,426);
+insert into help_relation (help_topic_id,help_keyword_id) values (492,427);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,428);
+insert into help_relation (help_topic_id,help_keyword_id) values (462,429);
+insert into help_relation (help_topic_id,help_keyword_id) values (324,429);
insert into help_relation (help_topic_id,help_keyword_id) values (36,429);
insert into help_relation (help_topic_id,help_keyword_id) values (112,429);
-insert into help_relation (help_topic_id,help_keyword_id) values (419,429);
-insert into help_relation (help_topic_id,help_keyword_id) values (465,429);
+insert into help_relation (help_topic_id,help_keyword_id) values (420,429);
+insert into help_relation (help_topic_id,help_keyword_id) values (466,429);
insert into help_relation (help_topic_id,help_keyword_id) values (0,430);
insert into help_relation (help_topic_id,help_keyword_id) values (94,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (381,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (284,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (430,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (301,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (359,430);
-insert into help_relation (help_topic_id,help_keyword_id) values (492,431);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,432);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,433);
+insert into help_relation (help_topic_id,help_keyword_id) values (382,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (285,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (431,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (302,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (360,430);
+insert into help_relation (help_topic_id,help_keyword_id) values (493,431);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,432);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,433);
insert into help_relation (help_topic_id,help_keyword_id) values (130,434);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,434);
-insert into help_relation (help_topic_id,help_keyword_id) values (290,434);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,434);
+insert into help_relation (help_topic_id,help_keyword_id) values (291,434);
insert into help_relation (help_topic_id,help_keyword_id) values (36,434);
-insert into help_relation (help_topic_id,help_keyword_id) values (490,435);
+insert into help_relation (help_topic_id,help_keyword_id) values (491,435);
insert into help_relation (help_topic_id,help_keyword_id) values (27,436);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,437);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,437);
insert into help_relation (help_topic_id,help_keyword_id) values (22,437);
-insert into help_relation (help_topic_id,help_keyword_id) values (259,437);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,438);
-insert into help_relation (help_topic_id,help_keyword_id) values (487,438);
-insert into help_relation (help_topic_id,help_keyword_id) values (196,439);
-insert into help_relation (help_topic_id,help_keyword_id) values (352,440);
+insert into help_relation (help_topic_id,help_keyword_id) values (260,437);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,438);
+insert into help_relation (help_topic_id,help_keyword_id) values (488,438);
+insert into help_relation (help_topic_id,help_keyword_id) values (197,439);
+insert into help_relation (help_topic_id,help_keyword_id) values (353,440);
insert into help_relation (help_topic_id,help_keyword_id) values (102,440);
-insert into help_relation (help_topic_id,help_keyword_id) values (206,441);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,442);
+insert into help_relation (help_topic_id,help_keyword_id) values (207,441);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,442);
insert into help_relation (help_topic_id,help_keyword_id) values (104,442);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,442);
-insert into help_relation (help_topic_id,help_keyword_id) values (458,443);
-insert into help_relation (help_topic_id,help_keyword_id) values (190,444);
-insert into help_relation (help_topic_id,help_keyword_id) values (473,444);
-insert into help_relation (help_topic_id,help_keyword_id) values (343,445);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,442);
+insert into help_relation (help_topic_id,help_keyword_id) values (459,443);
+insert into help_relation (help_topic_id,help_keyword_id) values (191,444);
+insert into help_relation (help_topic_id,help_keyword_id) values (474,444);
+insert into help_relation (help_topic_id,help_keyword_id) values (344,445);
insert into help_relation (help_topic_id,help_keyword_id) values (39,446);
insert into help_relation (help_topic_id,help_keyword_id) values (115,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (265,446);
+insert into help_relation (help_topic_id,help_keyword_id) values (266,446);
insert into help_relation (help_topic_id,help_keyword_id) values (58,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (183,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (260,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (357,446);
-insert into help_relation (help_topic_id,help_keyword_id) values (205,447);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,447);
-insert into help_relation (help_topic_id,help_keyword_id) values (197,448);
-insert into help_relation (help_topic_id,help_keyword_id) values (463,449);
+insert into help_relation (help_topic_id,help_keyword_id) values (184,446);
+insert into help_relation (help_topic_id,help_keyword_id) values (261,446);
+insert into help_relation (help_topic_id,help_keyword_id) values (358,446);
+insert into help_relation (help_topic_id,help_keyword_id) values (206,447);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,447);
+insert into help_relation (help_topic_id,help_keyword_id) values (198,448);
+insert into help_relation (help_topic_id,help_keyword_id) values (464,449);
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2741)
by knielsen@knielsen-hq.org 16 Sep '09
by knielsen@knielsen-hq.org 16 Sep '09
16 Sep '09
#At lp:maria
2741 knielsen(a)knielsen-hq.org 2009-09-16
After-merge fixes for MySQL 5.1.38 merge.
Temporarily silence test failure due to MBug#430669 in test case introduced from
MySQL 5.1.38.
modified:
mysql-test/r/subselect3.result
mysql-test/t/subselect3.test
=== modified file 'mysql-test/r/subselect3.result'
--- a/mysql-test/r/subselect3.result 2009-08-13 20:33:00 +0000
+++ b/mysql-test/r/subselect3.result 2009-09-16 11:51:05 +0000
@@ -864,7 +864,7 @@ Level Code Message
Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #2
Note 1276 Field or reference 'test.t1.c' of SELECT #3 was resolved in SELECT #2
Error 1054 Unknown column 'c' in 'field list'
-Note 1003 select `c` AS `c` from (select (select count(`test`.`t1`.`a`) AS `COUNT(a)` from (select count(`test`.`t1`.`b`) AS `COUNT(b)` from `test`.`t1`) `x` group by `c`) AS `(SELECT COUNT(a) FROM
+Note 1003 select `c` AS `c` from (select (select count(`test`.`t1`.`a`) AS `COUNT(a)` from (select count(`test`.`t1`.`b`) AS `COUNT(b)` from `test`.`t1`) `x` group by `t1`.`c`) AS `(SELECT COUNT(a) FROM
(SELECT COUNT(b) FROM t1) AS x GROUP BY c
)` from `test`.`t1` group by `test`.`t1`.`b`) `y`
DROP TABLE t1;
=== modified file 'mysql-test/t/subselect3.test'
--- a/mysql-test/t/subselect3.test 2009-08-13 20:33:00 +0000
+++ b/mysql-test/t/subselect3.test 2009-09-16 11:51:05 +0000
@@ -672,6 +672,8 @@ SELECT ROW(1,2) = (SELECT 1, 2), R
#
# Bug #37362 Crash in do_field_eq
#
+# Note that currently this test produces wrong output, see MBug#430669.
+#
CREATE TABLE t1 (a INT, b INT, c INT);
INSERT INTO t1 VALUES (1,1,1), (1,1,1);
1
0
[Maria-developers] Rev 2740: Fix myisam.test failure: let CREATE TABLE discard TRANSACTIONAL=1 attribute in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 16 Sep '09
by Sergey Petrunya 16 Sep '09
16 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2740
revision-id: psergey(a)askmonty.org-20090916113120-l7x9yfa81b6q3dmb
parent: psergey(a)askmonty.org-20090915212058-1h5zxw94b6czbpxb
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Wed 2009-09-16 15:31:20 +0400
message:
Fix myisam.test failure: let CREATE TABLE discard TRANSACTIONAL=1 attribute
if the storage engine doesn't support transactions.
=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc 2009-09-09 21:06:57 +0000
+++ b/sql/sql_table.cc 2009-09-16 11:31:20 +0000
@@ -3747,11 +3747,19 @@
/* Give warnings for not supported table options */
if (create_info->transactional && !file->ht->commit)
+ {
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
ER_ILLEGAL_HA_CREATE_OPTION,
ER(ER_ILLEGAL_HA_CREATE_OPTION),
file->engine_name()->str,
"TRANSACTIONAL=1");
+ /*
+ MariaDB: need to do the same for row_format and page_checksum
+ options. See MBUG#425916
+ */
+ create_info->transactional= HA_CHOICE_UNDEF;
+ create_info->used_fields &= ~HA_CREATE_USED_TRANSACTIONAL;
+ }
VOID(pthread_mutex_lock(&LOCK_open));
if (!internal_tmp_table && !(create_info->options & HA_LEX_CREATE_TMP_TABLE))
1
0
[Maria-developers] Rev 2731: Fix for in file:///Users/hakan/work/monty_program/maria-debug/
by Hakan Kuecuekyilmaz 16 Sep '09
by Hakan Kuecuekyilmaz 16 Sep '09
16 Sep '09
At file:///Users/hakan/work/monty_program/maria-debug/
------------------------------------------------------------
revno: 2731
revision-id: hakan(a)askmonty.org-20090916013015-dxg5v4z85koq7aw1
parent: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria-debug
timestamp: Wed 2009-09-16 03:30:15 +0200
message:
Fix for
mysqlslap: setting --engine does not get replicated
http://bugs.mysql.com/bug.php?id=46967
and
mysqlslap: specifying --engine and --create does not
work with --engine=<storage_engine>:<option>
https://bugs.launchpad.net/maria/+bug/429773
Problems were that an --engine=<storage_engine> was translated
to a "set storage_engine = <storage_engine>", wich is _not_
replicated. A --engine=<storage_engine>:<option> was not always
properly parsed and in some cases crashed.
Fixed by eliminating "set storage_engine = ..." and adding
proper DDL generation. Initialized an unitialized buffer to
prevent crashes and fixed to use proper pointer for in
case of --engine=<storage_engine>:<option> being the last
element in list of --engines.
Also cleaned up code for better readability.
Q: Should MySQL's replication actually replicate a
"set storage_engine = ..." command or not?
A: No it should not. It is documented here:
http://dev.mysql.com/doc/refman/5.1/en/replication-features-variables.html
...
"The storage_engine system variable is not replicated, which is a
good thing for replication between different storage engines." ...
Before the patch, mysqlslap was behaving this way:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| Before patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | Not OK |
| 1.2 | eng1,eng2 | OK | Not OK |
| 1.3 | eng1,eng2,eng3 | OK | Not OK |
| 1.4 | memory:option | OK | Not OK |
| 1.5 | memory:option,eng1 | OK | Not OK |
| 1.6 | eng1,memory:option | Not OK | Not OK |
| 1.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 1.8 | eng1,memory:option,eng2 | OK | Not OK |
| 1.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | Not OK |
| 2.2 | eng1,eng2 | OK | Not OK |
| 2.3 | eng1,eng2,eng3 | OK | Not OK |
| 2.4 | memory:option | Not OK | Not OK |
| 2.5 | memory:option,eng1 | Not OK | Not OK |
| 2.6 | eng1,memory:option | Not OK | Not OK |
| 2.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 2.8 | eng1,memory:option,eng2 | Not OK | Not OK |
| 2.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
After my final patch, mysqlslap now runs like this:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| After third patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | OK |
| 1.2 | eng1,eng2 | OK | OK |
| 1.3 | eng1,eng2,eng3 | OK | OK |
| 1.4 | memory:option | OK | OK |
| 1.5 | memory:option,eng1 | OK | OK |
| 1.6 | eng1,memory:option | OK | OK |
| 1.7 | memory:option,eng1,eng2 | OK | OK |
| 1.8 | eng1,memory:option,eng2 | OK | OK |
| 1.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | OK |
| 2.2 | eng1,eng2 | OK | OK |
| 2.3 | eng1,eng2,eng3 | OK | OK |
| 2.4 | memory:option | OK | OK |
| 2.5 | memory:option,eng1 | OK | OK |
| 2.6 | eng1,memory:option | OK | OK |
| 2.7 | memory:option,eng1,eng2 | OK | OK |
| 2.8 | eng1,memory:option,eng2 | OK | OK |
| 2.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
... ..... ...
..
=== modified file 'client/mysqlslap.c'
--- a/client/mysqlslap.c 2009-04-25 10:05:32 +0000
+++ b/client/mysqlslap.c 2009-09-16 01:30:15 +0000
@@ -423,6 +423,8 @@
stats *sptr;
conclusions conclusion;
unsigned long long client_limit;
+ DYNAMIC_STRING table_string;
+ statement *ddl_with_engine;
head_sptr= (stats *)my_malloc(sizeof(stats) * iterations,
MYF(MY_ZEROFILL|MY_FAE|MY_WME));
@@ -448,8 +450,41 @@
/* First we create */
if (create_statements)
- create_schema(mysql, create_schema_string, create_statements, eptr);
-
+ {
+ /*
+ In case of user supplied DDL and engine, we add the engine
+ type to the DDL here.
+ */
+ if (create_string && eptr)
+ {
+ init_dynamic_string(&table_string, "", 1024, 1024);
+
+ dynstr_append(&table_string, create_statements->string);
+ dynstr_append(&table_string, " Engine = ");
+ dynstr_append(&table_string, eptr->string);
+
+ if (eptr->option)
+ {
+ dynstr_append(&table_string, " ");
+ dynstr_append(&table_string, eptr->option);
+ }
+
+ ddl_with_engine= (statement *) my_malloc(sizeof(statement),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ ddl_with_engine->string= (char *) my_malloc(table_string.length + 1,
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ ddl_with_engine->length= table_string.length + 1;
+ ddl_with_engine->type= create_statements->type;
+ strmov(ddl_with_engine->string, table_string.str);
+ ddl_with_engine->next= create_statements->next;
+
+ dynstr_free(&table_string);
+
+ create_schema(mysql, create_schema_string, ddl_with_engine, eptr);
+ }
+ else
+ create_schema(mysql, create_schema_string, create_statements, eptr);
+ }
/*
If we generated GUID we need to build a list of them from creation that
we can later use.
@@ -588,7 +623,9 @@
"Detach (close and reopen) connections after X number of requests.",
(uchar**) &detach_rate, (uchar**) &detach_rate, 0, GET_UINT, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
- {"engine", 'e', "Storage engine to use for creating the table.",
+ {"engine", 'e', "Comma separated list of storage engines to use for creating the table."
+ "The test is run for each engine. You can also specify an option to an engine"
+ "delimited by `:', like memory:max_row=2300",
(uchar**) &default_engine, (uchar**) &default_engine, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
@@ -958,6 +995,7 @@
ptr->type= UPDATE_TYPE_REQUIRES_PREFIX ;
else
ptr->type= UPDATE_TYPE;
+
strmov(ptr->string, update_string.str);
dynstr_free(&update_string);
DBUG_RETURN(ptr);
@@ -973,8 +1011,8 @@
static statement *
build_insert_string(void)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
DYNAMIC_STRING insert_string;
DBUG_ENTER("build_insert_string");
@@ -1064,8 +1102,8 @@
static statement *
build_select_string(my_bool key)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
static DYNAMIC_STRING query_string;
DBUG_ENTER("build_select_string");
@@ -1117,6 +1155,7 @@
ptr->type= SELECT_TYPE_REQUIRES_PREFIX;
else
ptr->type= SELECT_TYPE;
+
strmov(ptr->string, query_string.str);
dynstr_free(&query_string);
DBUG_RETURN(ptr);
@@ -1175,8 +1214,6 @@
exit(1);
}
-
-
if (auto_generate_sql && num_of_query && auto_actual_queries)
{
fprintf(stderr,
@@ -1217,6 +1254,7 @@
num_int_cols= atoi(str->string);
if (str->option)
num_int_cols_index= atoi(str->option);
+
option_cleanup(str);
}
@@ -1229,6 +1267,7 @@
num_char_cols_index= atoi(str->option);
else
num_char_cols_index= 0;
+
option_cleanup(str);
}
@@ -1463,6 +1502,7 @@
if (tty_password)
opt_password= get_tty_password(NullS);
+
DBUG_RETURN(0);
}
@@ -1477,6 +1517,7 @@
if (verbose >= 3)
printf("%.*s;\n", len, query);
+
return mysql_real_query(mysql, query, len);
}
@@ -1592,18 +1633,6 @@
}
}
- if (engine_stmt)
- {
- len= snprintf(query, HUGE_STRING_LENGTH, "set storage_engine=`%s`",
- engine_stmt->string);
- if (run_query(mysql, query, len))
- {
- fprintf(stderr,"%s: Cannot set default engine: %s\n", my_progname,
- mysql_error(mysql));
- exit(1);
- }
- }
-
count= 0;
after_create= stmt;
@@ -1617,8 +1646,21 @@
{
char buffer[HUGE_STRING_LENGTH];
- snprintf(buffer, HUGE_STRING_LENGTH, "%s %s", ptr->string,
- engine_stmt->option);
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s %s",
+ ptr->string, engine_stmt->string, engine_stmt->option);
+ if (run_query(mysql, buffer, strlen(buffer)))
+ {
+ fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
+ my_progname, (uint)ptr->length, ptr->string, mysql_error(mysql));
+ exit(1);
+ }
+ }
+ else if (engine_stmt && engine_stmt->string && ptr->type == CREATE_TABLE_TYPE)
+ {
+ char buffer[HUGE_STRING_LENGTH];
+
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s",
+ ptr->string, engine_stmt->string);
if (run_query(mysql, buffer, strlen(buffer)))
{
fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
@@ -1652,6 +1694,7 @@
{
char query[HUGE_STRING_LENGTH];
int len;
+
DBUG_ENTER("drop_schema");
len= snprintf(query, HUGE_STRING_LENGTH, "DROP SCHEMA IF EXISTS `%s`", db);
@@ -1940,17 +1983,22 @@
uint count= 0; /* We know that there is always one */
for (tmp= *sptr= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
(retstr= strchr(ptr, delm));
tmp->next= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
tmp= tmp->next)
{
- char buffer[HUGE_STRING_LENGTH];
+ char buffer[HUGE_STRING_LENGTH]= "";
char *buffer_ptr;
count++;
strncpy(buffer, ptr, (size_t)(retstr - ptr));
+ /*
+ Handle --engine=memory:max_row=200 cases, or more general speaking
+ --engine=<storage_engine>:<options>. --engine=<storage_engine:option
+ will be translated to Engine = storage_engine option
+ */
if ((buffer_ptr= strchr(buffer, ':')))
{
char *option_ptr;
@@ -1971,13 +2019,15 @@
tmp->length= (size_t)(retstr - ptr);
}
+ /* Skip delimiter delm */
ptr+= retstr - ptr + 1;
if (isspace(*ptr))
ptr++;
+
count++;
}
- if (ptr != origin+length)
+ if (ptr != origin + length)
{
char *origin_ptr;
@@ -1986,7 +2036,7 @@
char *option_ptr;
tmp->length= (size_t)(origin_ptr - ptr);
- tmp->string= my_strndup(origin, tmp->length, MYF(MY_FAE));
+ tmp->string= my_strndup(ptr, tmp->length, MYF(MY_FAE));
option_ptr= (char *)ptr + 1 + tmp->length;
@@ -2036,7 +2086,7 @@
if (ptr != script+length)
{
tmp->string= my_strndup(ptr, (uint)((script + length) - ptr),
- MYF(MY_FAE));
+ MYF(MY_FAE));
tmp->length= (size_t)((script + length) - ptr);
count++;
}
@@ -2094,6 +2144,7 @@
{
char buffer[HUGE_STRING_LENGTH];
const char *ptr= auto_generate_sql_type ? auto_generate_sql_type : "query";
+
snprintf(buffer, HUGE_STRING_LENGTH,
"%s,%s,%ld.%03ld,%ld.%03ld,%ld.%03ld,%d,%llu\n",
con->engine ? con->engine : "", /* Storage engine we ran against */
1
0
[Maria-developers] Rev 2739: MySQL 5.1 -> Maria 5.1 merge: Fix windows build in file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
by Sergey Petrunya 15 Sep '09
by Sergey Petrunya 15 Sep '09
15 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd4/
------------------------------------------------------------
revno: 2739
revision-id: psergey(a)askmonty.org-20090915212058-1h5zxw94b6czbpxb
parent: knielsen(a)knielsen-hq.org-20090915125307-3l2ogdv87galo02o
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd4
timestamp: Wed 2009-09-16 01:20:58 +0400
message:
MySQL 5.1 -> Maria 5.1 merge: Fix windows build
- Fix XtraDB to be built as a static library.
=== modified file 'CMakeLists.txt'
--- a/CMakeLists.txt 2009-09-15 12:12:51 +0000
+++ b/CMakeLists.txt 2009-09-15 21:20:58 +0000
@@ -225,6 +225,14 @@
STRING (REGEX MATCH "MYSQL_PLUGIN_DYNAMIC" MYSQL_PLUGIN_DYNAMIC ${PLUGIN_FILE_CONTENT})
STRING (REGEX MATCH "MYSQL_PLUGIN_MANDATORY" MYSQL_PLUGIN_MANDATORY ${PLUGIN_FILE_CONTENT})
STRING (REGEX MATCH "MYSQL_PLUGIN_STATIC" MYSQL_PLUGIN_STATIC ${PLUGIN_FILE_CONTENT})
+
+ #
+ # XTRADB is located in storage/xtradb, but it says everywhere it is 'innobase' (e.g.
+ # it declares 'builtin_innobase_plugin', not builtin_xtradb_plugin).
+ # Extract the intended plugin name from MYSQL_STORAGE_ENGINE definition and use it
+ # where appropriate.
+ STRING (REGEX MATCH "MYSQL_STORAGE_ENGINE.[a-z]*" PLUGIN_NAME ${PLUGIN_FILE_CONTENT})
+ STRING (REGEX REPLACE "MYSQL_STORAGE_ENGINE.(.*)" "\\1" PLUGIN_NAME ${PLUGIN_NAME})
IF(MYSQL_PLUGIN_MANDATORY)
SET(WITH_${ENGINE}_STORAGE_ENGINE TRUE)
@@ -238,8 +246,8 @@
SET(ENGINE_BUILD_TYPE "NONE")
ENDIF(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
IF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
- SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${ENGINE_LOWER}_plugin")
- SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${ENGINE_LOWER})
+ SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${PLUGIN_NAME}_plugin")
+ SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${PLUGIN_NAME})
SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_${ENGINE}_STORAGE_ENGINE")
SET (WITH_${ENGINE}_STORAGE_ENGINE TRUE)
ENDIF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
=== modified file 'storage/xtradb/buf/buf0flu.c'
--- a/storage/xtradb/buf/buf0flu.c 2009-09-15 12:53:07 +0000
+++ b/storage/xtradb/buf/buf0flu.c 2009-09-15 21:20:58 +0000
@@ -1107,6 +1107,8 @@
mutex_exit(block_mutex);
if (ready) {
+ mutex_t* block_mutex;
+ buf_page_t* bpage_tmp;
space = buf_page_get_space(bpage);
offset = buf_page_get_page_no(bpage);
@@ -1120,10 +1122,8 @@
/* Try to flush also all the neighbors */
page_count += buf_flush_try_neighbors(
space, offset, flush_type, srv_flush_neighbor_pages);
- mutex_t* block_mutex;
- buf_page_t* bpage_tmp;
- block_mutex = buf_page_get_mutex(bpage);
- bpage_tmp = buf_page_hash_get(space, offset);
+ block_mutex = buf_page_get_mutex(bpage);
+ bpage_tmp = buf_page_hash_get(space, offset);
/* fprintf(stderr,
"Flush type %lu, page no %lu, neighb %lu\n",
flush_type, offset,
=== modified file 'storage/xtradb/plug.in'
--- a/storage/xtradb/plug.in 2009-08-03 20:09:53 +0000
+++ b/storage/xtradb/plug.in 2009-09-15 21:20:58 +0000
@@ -20,7 +20,9 @@
MYSQL_PLUGIN_STATIC(innobase, [libinnobase.a])
MYSQL_PLUGIN_DYNAMIC(innobase, [ha_innodb.la])
MYSQL_PLUGIN_ACTIONS(innobase, [
- AC_CHECK_HEADERS(sched.h)
+ AC_CHECK_LIB(rt, aio_read, [innodb_system_libs="-lrt"])
+ AC_SUBST(innodb_system_libs)
+ AC_CHECK_HEADERS(aio.h sched.h)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
AC_CHECK_SIZEOF(void*, 4)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
-=-=(Guest - Mon, 10 Aug 2009, 11:12)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6580 2009-08-10 11:12:36.000000000 +0300
+++ /tmp/wklog.36.new.6580 2009-08-10 11:12:36.000000000 +0300
@@ -1,4 +1,3 @@
-
Context
-------
At the moment, the server has a replication slave option
@@ -67,6 +66,6 @@
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require use to parse the
-statement).
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
------------------------------------------------------------
-=-=(View All Progress Notes, 13 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 18:04)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.19322 2009-09-15 18:04:49.000000000 +0300
+++ /tmp/wklog.36.new.19322 2009-09-15 18:04:49.000000000 +0300
@@ -191,7 +191,7 @@
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
- events lis above), e.g.:
+ events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
-=-=(Guest - Mon, 10 Aug 2009, 11:12)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6580 2009-08-10 11:12:36.000000000 +0300
+++ /tmp/wklog.36.new.6580 2009-08-10 11:12:36.000000000 +0300
@@ -1,4 +1,3 @@
-
Context
-------
At the moment, the server has a replication slave option
@@ -67,6 +66,6 @@
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require use to parse the
-statement).
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
------------------------------------------------------------
-=-=(View All Progress Notes, 13 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events list above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Rev 2731: Fix for in file:///Users/hakan/work/monty_program/maria-debug/
by Hakan Kuecuekyilmaz 15 Sep '09
by Hakan Kuecuekyilmaz 15 Sep '09
15 Sep '09
At file:///Users/hakan/work/monty_program/maria-debug/
------------------------------------------------------------
revno: 2731
revision-id: hakan(a)askmonty.org-20090915143232-zv4823wsd0o0j6fa
parent: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria-debug
timestamp: Tue 2009-09-15 16:32:32 +0200
message:
Fix for
mysqlslap: setting --engine does not get replicated
http://bugs.mysql.com/bug.php?id=46967
and
mysqlslap: specifying --engine and --create does not
work with --engine=<storage_engine>:<option>
https://bugs.launchpad.net/maria/+bug/429773
Problems were that an --engine=<storage_engine> was translated
to a "set storage_engine = <storage_engine>", wich is _not_
replicated. A --engine=<storage_engine>:<option> was not always
properly parsed and in some cases crashed.
Fixed by eliminating "set storage_engine = ..." and adding
proper DDL generation. Initialized an unitialized buffer to
prevent crashes and fixed to use proper pointer for in
case of --engine=<storage_engine>:<option> being the last
element in list of --engines.
Also cleaned up code for better readability.
Q: Should MySQL's replication actually replicate a
"set storage_engine = ..." command or not?
A: No it should not. It is documented here:
http://dev.mysql.com/doc/refman/5.1/en/replication-features-variables.html
...
"The storage_engine system variable is not replicated, which is a
good thing for replication between different storage engines." ...
Before the patch, mysqlslap was behaving this way:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| Before patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | Not OK |
| 1.2 | eng1,eng2 | OK | Not OK |
| 1.3 | eng1,eng2,eng3 | OK | Not OK |
| 1.4 | memory:option | OK | Not OK |
| 1.5 | memory:option,eng1 | OK | Not OK |
| 1.6 | eng1,memory:option | Not OK | Not OK |
| 1.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 1.8 | eng1,memory:option,eng2 | OK | Not OK |
| 1.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | Not OK |
| 2.2 | eng1,eng2 | OK | Not OK |
| 2.3 | eng1,eng2,eng3 | OK | Not OK |
| 2.4 | memory:option | Not OK | Not OK |
| 2.5 | memory:option,eng1 | Not OK | Not OK |
| 2.6 | eng1,memory:option | Not OK | Not OK |
| 2.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 2.8 | eng1,memory:option,eng2 | Not OK | Not OK |
| 2.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
After my final patch, mysqlslap now runs like this:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| After third patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | OK |
| 1.2 | eng1,eng2 | OK | OK |
| 1.3 | eng1,eng2,eng3 | OK | OK |
| 1.4 | memory:option | OK | OK |
| 1.5 | memory:option,eng1 | OK | OK |
| 1.6 | eng1,memory:option | OK | OK |
| 1.7 | memory:option,eng1,eng2 | OK | OK |
| 1.8 | eng1,memory:option,eng2 | OK | OK |
| 1.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | OK |
| 2.2 | eng1,eng2 | OK | OK |
| 2.3 | eng1,eng2,eng3 | OK | OK |
| 2.4 | memory:option | OK | OK |
| 2.5 | memory:option,eng1 | OK | OK |
| 2.6 | eng1,memory:option | OK | OK |
| 2.7 | memory:option,eng1,eng2 | OK | OK |
| 2.8 | eng1,memory:option,eng2 | OK | OK |
| 2.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
...
=== modified file 'client/mysqlslap.c'
--- a/client/mysqlslap.c 2009-04-25 10:05:32 +0000
+++ b/client/mysqlslap.c 2009-09-15 14:32:32 +0000
@@ -423,6 +423,8 @@
stats *sptr;
conclusions conclusion;
unsigned long long client_limit;
+ DYNAMIC_STRING table_string;
+ statement *ddl_with_engine;
head_sptr= (stats *)my_malloc(sizeof(stats) * iterations,
MYF(MY_ZEROFILL|MY_FAE|MY_WME));
@@ -448,8 +450,41 @@
/* First we create */
if (create_statements)
- create_schema(mysql, create_schema_string, create_statements, eptr);
-
+ {
+ /*
+ In case of user supplied DDL and engine, we add the engine
+ type to the DDL here.
+ */
+ if (create_string && eptr)
+ {
+ init_dynamic_string(&table_string, "", 1024, 1024);
+
+ dynstr_append(&table_string, create_statements->string);
+ dynstr_append(&table_string, " Engine = ");
+ dynstr_append(&table_string, eptr->string);
+
+ if (eptr->option)
+ {
+ dynstr_append(&table_string, " ");
+ dynstr_append(&table_string, eptr->option);
+ }
+
+ ddl_with_engine= (statement *) my_malloc(sizeof(statement),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ ddl_with_engine->string= (char *) my_malloc(table_string.length + 1,
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ ddl_with_engine->length= table_string.length + 1;
+ ddl_with_engine->type= create_statements->type;
+ strmov(ddl_with_engine->string, table_string.str);
+ ddl_with_engine->next= create_statements->next;
+
+ dynstr_free(&table_string);
+
+ create_schema(mysql, create_schema_string, ddl_with_engine, eptr);
+ }
+ else
+ create_schema(mysql, create_schema_string, create_statements, eptr);
+ }
/*
If we generated GUID we need to build a list of them from creation that
we can later use.
@@ -588,7 +623,9 @@
"Detach (close and reopen) connections after X number of requests.",
(uchar**) &detach_rate, (uchar**) &detach_rate, 0, GET_UINT, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
- {"engine", 'e', "Storage engine to use for creating the table.",
+ {"engine", 'e', "Comma separated list of storage engines to use for creating the table."
+ "The test is run for each engine. You can also specify an option to an engine"
+ "delimited by `:', like memory:max_row=2300",
(uchar**) &default_engine, (uchar**) &default_engine, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
@@ -958,6 +995,7 @@
ptr->type= UPDATE_TYPE_REQUIRES_PREFIX ;
else
ptr->type= UPDATE_TYPE;
+
strmov(ptr->string, update_string.str);
dynstr_free(&update_string);
DBUG_RETURN(ptr);
@@ -973,8 +1011,8 @@
static statement *
build_insert_string(void)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
DYNAMIC_STRING insert_string;
DBUG_ENTER("build_insert_string");
@@ -1064,8 +1102,8 @@
static statement *
build_select_string(my_bool key)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH];
+ unsigned int col_count;
statement *ptr;
static DYNAMIC_STRING query_string;
DBUG_ENTER("build_select_string");
@@ -1117,6 +1155,7 @@
ptr->type= SELECT_TYPE_REQUIRES_PREFIX;
else
ptr->type= SELECT_TYPE;
+
strmov(ptr->string, query_string.str);
dynstr_free(&query_string);
DBUG_RETURN(ptr);
@@ -1175,8 +1214,6 @@
exit(1);
}
-
-
if (auto_generate_sql && num_of_query && auto_actual_queries)
{
fprintf(stderr,
@@ -1217,6 +1254,7 @@
num_int_cols= atoi(str->string);
if (str->option)
num_int_cols_index= atoi(str->option);
+
option_cleanup(str);
}
@@ -1229,6 +1267,7 @@
num_char_cols_index= atoi(str->option);
else
num_char_cols_index= 0;
+
option_cleanup(str);
}
@@ -1463,6 +1502,7 @@
if (tty_password)
opt_password= get_tty_password(NullS);
+
DBUG_RETURN(0);
}
@@ -1477,6 +1517,7 @@
if (verbose >= 3)
printf("%.*s;\n", len, query);
+
return mysql_real_query(mysql, query, len);
}
@@ -1592,18 +1633,6 @@
}
}
- if (engine_stmt)
- {
- len= snprintf(query, HUGE_STRING_LENGTH, "set storage_engine=`%s`",
- engine_stmt->string);
- if (run_query(mysql, query, len))
- {
- fprintf(stderr,"%s: Cannot set default engine: %s\n", my_progname,
- mysql_error(mysql));
- exit(1);
- }
- }
-
count= 0;
after_create= stmt;
@@ -1617,8 +1646,21 @@
{
char buffer[HUGE_STRING_LENGTH];
- snprintf(buffer, HUGE_STRING_LENGTH, "%s %s", ptr->string,
- engine_stmt->option);
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s %s",
+ ptr->string, engine_stmt->string, engine_stmt->option);
+ if (run_query(mysql, buffer, strlen(buffer)))
+ {
+ fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
+ my_progname, (uint)ptr->length, ptr->string, mysql_error(mysql));
+ exit(1);
+ }
+ }
+ else if (engine_stmt && engine_stmt->string && ptr->type == CREATE_TABLE_TYPE)
+ {
+ char buffer[HUGE_STRING_LENGTH];
+
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s",
+ ptr->string, engine_stmt->string);
if (run_query(mysql, buffer, strlen(buffer)))
{
fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
@@ -1652,6 +1694,7 @@
{
char query[HUGE_STRING_LENGTH];
int len;
+
DBUG_ENTER("drop_schema");
len= snprintf(query, HUGE_STRING_LENGTH, "DROP SCHEMA IF EXISTS `%s`", db);
@@ -1940,17 +1983,22 @@
uint count= 0; /* We know that there is always one */
for (tmp= *sptr= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
(retstr= strchr(ptr, delm));
tmp->next= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
tmp= tmp->next)
{
- char buffer[HUGE_STRING_LENGTH];
+ char buffer[HUGE_STRING_LENGTH]= "";
char *buffer_ptr;
count++;
strncpy(buffer, ptr, (size_t)(retstr - ptr));
+ /*
+ Handle --engine=memory:max_row=200 cases, or more general speaking
+ --engine=<storage_engine>:<options>. --engine=<storage_engine:option
+ will be translated to Engine = storage_engine option
+ */
if ((buffer_ptr= strchr(buffer, ':')))
{
char *option_ptr;
@@ -1971,13 +2019,15 @@
tmp->length= (size_t)(retstr - ptr);
}
+ /* Skip delimiter delm */
ptr+= retstr - ptr + 1;
if (isspace(*ptr))
ptr++;
+
count++;
}
- if (ptr != origin+length)
+ if (ptr != origin + length)
{
char *origin_ptr;
@@ -1986,7 +2036,7 @@
char *option_ptr;
tmp->length= (size_t)(origin_ptr - ptr);
- tmp->string= my_strndup(origin, tmp->length, MYF(MY_FAE));
+ tmp->string= my_strndup(ptr, tmp->length, MYF(MY_FAE));
option_ptr= (char *)ptr + 1 + tmp->length;
@@ -2036,7 +2086,7 @@
if (ptr != script+length)
{
tmp->string= my_strndup(ptr, (uint)((script + length) - ptr),
- MYF(MY_FAE));
+ MYF(MY_FAE));
tmp->length= (size_t)((script + length) - ptr);
count++;
}
@@ -2094,6 +2144,7 @@
{
char buffer[HUGE_STRING_LENGTH];
const char *ptr= auto_generate_sql_type ? auto_generate_sql_type : "query";
+
snprintf(buffer, HUGE_STRING_LENGTH,
"%s,%s,%ld.%03ld,%ld.%03ld,%ld.%03ld,%d,%llu\n",
con->engine ? con->engine : "", /* Storage engine we ran against */
1
0
[Maria-developers] Rev 2731: Fix for in file:///Users/hakan/work/monty_program/maria-debug/
by Hakan Kuecuekyilmaz 15 Sep '09
by Hakan Kuecuekyilmaz 15 Sep '09
15 Sep '09
At file:///Users/hakan/work/monty_program/maria-debug/
------------------------------------------------------------
revno: 2731
revision-id: hakan(a)askmonty.org-20090915050024-ltsa4r1n23kr7qm5
parent: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria-debug
timestamp: Tue 2009-09-15 07:00:24 +0200
message:
Fix for
mysqlslap: setting --engine does not get replicated
http://bugs.mysql.com/bug.php?id=46967
and
mysqlslap: specifying --engine and --create does not
work with --engine=<storage_engine>:<option>
https://bugs.launchpad.net/maria/+bug/429773
Problems were that an --engine=<storage_engine> was translated
to a "set storage_engine = <storage_engine>", wich is _not_
replicated. A --engine=<storage_engine>:<option> was not always
properly parsed and in some cases crashed.
Fixed by eliminating "set storage_engine = ..." and adding
proper DDL generation. Initialized an unitialized buffer to
prevent crashes and fixed to use proper pointer for in
case of --engine=<storage_engine>:<option> being the last
element in list of --engines.
Also cleaned up code for better readability.
Q: Should MySQL's replication actually replicate a
"set storage_engine = ..." command or not?
A: No it should not. It is documented here:
http://dev.mysql.com/doc/refman/5.1/en/replication-features-variables.html
...
"The storage_engine system variable is not replicated, which is a good thing for replication between different storage engines."
...
Before the patch, mysqlslap was behaving this way:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| Before patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | Not OK |
| 1.2 | eng1,eng2 | OK | Not OK |
| 1.3 | eng1,eng2,eng3 | OK | Not OK |
| 1.4 | memory:option | OK | Not OK |
| 1.5 | memory:option,eng1 | OK | Not OK |
| 1.6 | eng1,memory:option | Not OK | Not OK |
| 1.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 1.8 | eng1,memory:option,eng2 | OK | Not OK |
| 1.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | Not OK |
| 2.2 | eng1,eng2 | OK | Not OK |
| 2.3 | eng1,eng2,eng3 | OK | Not OK |
| 2.4 | memory:option | Not OK | Not OK |
| 2.5 | memory:option,eng1 | Not OK | Not OK |
| 2.6 | eng1,memory:option | Not OK | Not OK |
| 2.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 2.8 | eng1,memory:option,eng2 | Not OK | Not OK |
| 2.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
After my final patch, mysqlslap now runs like this:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| After third patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | OK |
| 1.2 | eng1,eng2 | OK | OK |
| 1.3 | eng1,eng2,eng3 | OK | OK |
| 1.4 | memory:option | OK | OK |
| 1.5 | memory:option,eng1 | OK | OK |
| 1.6 | eng1,memory:option | OK | OK |
| 1.7 | memory:option,eng1,eng2 | OK | OK |
| 1.8 | eng1,memory:option,eng2 | OK | OK |
| 1.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | OK |
| 2.2 | eng1,eng2 | OK | OK |
| 2.3 | eng1,eng2,eng3 | OK | OK |
| 2.4 | memory:option | OK | OK |
| 2.5 | memory:option,eng1 | OK | OK |
| 2.6 | eng1,memory:option | OK | OK |
| 2.7 | memory:option,eng1,eng2 | OK | OK |
| 2.8 | eng1,memory:option,eng2 | OK | OK |
| 2.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
=== modified file 'client/mysqlslap.c'
--- a/client/mysqlslap.c 2009-04-25 10:05:32 +0000
+++ b/client/mysqlslap.c 2009-09-15 05:00:24 +0000
@@ -423,6 +423,10 @@
stats *sptr;
conclusions conclusion;
unsigned long long client_limit;
+ DYNAMIC_STRING table_string;
+ statement *ddl_with_engine;
+
+ init_dynamic_string(&table_string, "", 1024, 1024);
head_sptr= (stats *)my_malloc(sizeof(stats) * iterations,
MYF(MY_ZEROFILL|MY_FAE|MY_WME));
@@ -448,8 +452,39 @@
/* First we create */
if (create_statements)
- create_schema(mysql, create_schema_string, create_statements, eptr);
-
+ {
+ /*
+ In case of user supplied DDL and engine, we add the engine
+ type to the DDL here.
+ */
+ if (create_string && eptr)
+ {
+ dynstr_append(&table_string, create_statements->string);
+ dynstr_append(&table_string, " Engine = ");
+ dynstr_append(&table_string, eptr->string);
+
+ if (eptr->option)
+ {
+ dynstr_append(&table_string, " ");
+ dynstr_append(&table_string, eptr->option);
+ }
+
+ ddl_with_engine= (statement *) my_malloc(sizeof(statement),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ ddl_with_engine->string= (char *) my_malloc(table_string.length + 1,
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ ddl_with_engine->length= table_string.length + 1;
+ ddl_with_engine->type= create_statements->type;
+ strmov(ddl_with_engine->string, table_string.str);
+ ddl_with_engine->next= create_statements->next;
+
+ dynstr_free(&table_string);
+
+ create_schema(mysql, create_schema_string, ddl_with_engine, eptr);
+ }
+ else
+ create_schema(mysql, create_schema_string, create_statements, eptr);
+ }
/*
If we generated GUID we need to build a list of them from creation that
we can later use.
@@ -773,7 +808,7 @@
static statement *
build_table_string(void)
{
- char buf[HUGE_STRING_LENGTH];
+ char buf[HUGE_STRING_LENGTH]= "";
unsigned int col_count;
statement *ptr;
DYNAMIC_STRING table_string;
@@ -900,7 +935,7 @@
static statement *
build_update_string(void)
{
- char buf[HUGE_STRING_LENGTH];
+ char buf[HUGE_STRING_LENGTH]= "";
unsigned int col_count;
statement *ptr;
DYNAMIC_STRING update_string;
@@ -958,6 +993,7 @@
ptr->type= UPDATE_TYPE_REQUIRES_PREFIX ;
else
ptr->type= UPDATE_TYPE;
+
strmov(ptr->string, update_string.str);
dynstr_free(&update_string);
DBUG_RETURN(ptr);
@@ -973,8 +1009,8 @@
static statement *
build_insert_string(void)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH]= "";
+ unsigned int col_count;
statement *ptr;
DYNAMIC_STRING insert_string;
DBUG_ENTER("build_insert_string");
@@ -1064,8 +1100,8 @@
static statement *
build_select_string(my_bool key)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH]= "";
+ unsigned int col_count;
statement *ptr;
static DYNAMIC_STRING query_string;
DBUG_ENTER("build_select_string");
@@ -1117,6 +1153,7 @@
ptr->type= SELECT_TYPE_REQUIRES_PREFIX;
else
ptr->type= SELECT_TYPE;
+
strmov(ptr->string, query_string.str);
dynstr_free(&query_string);
DBUG_RETURN(ptr);
@@ -1175,8 +1212,6 @@
exit(1);
}
-
-
if (auto_generate_sql && num_of_query && auto_actual_queries)
{
fprintf(stderr,
@@ -1217,6 +1252,7 @@
num_int_cols= atoi(str->string);
if (str->option)
num_int_cols_index= atoi(str->option);
+
option_cleanup(str);
}
@@ -1229,6 +1265,7 @@
num_char_cols_index= atoi(str->option);
else
num_char_cols_index= 0;
+
option_cleanup(str);
}
@@ -1463,6 +1500,7 @@
if (tty_password)
opt_password= get_tty_password(NullS);
+
DBUG_RETURN(0);
}
@@ -1477,6 +1515,7 @@
if (verbose >= 3)
printf("%.*s;\n", len, query);
+
return mysql_real_query(mysql, query, len);
}
@@ -1556,7 +1595,7 @@
create_schema(MYSQL *mysql, const char *db, statement *stmt,
option_string *engine_stmt)
{
- char query[HUGE_STRING_LENGTH];
+ char query[HUGE_STRING_LENGTH]= "";
statement *ptr;
statement *after_create;
int len;
@@ -1592,18 +1631,6 @@
}
}
- if (engine_stmt)
- {
- len= snprintf(query, HUGE_STRING_LENGTH, "set storage_engine=`%s`",
- engine_stmt->string);
- if (run_query(mysql, query, len))
- {
- fprintf(stderr,"%s: Cannot set default engine: %s\n", my_progname,
- mysql_error(mysql));
- exit(1);
- }
- }
-
count= 0;
after_create= stmt;
@@ -1615,10 +1642,23 @@
if (engine_stmt && engine_stmt->option && ptr->type == CREATE_TABLE_TYPE)
{
- char buffer[HUGE_STRING_LENGTH];
-
- snprintf(buffer, HUGE_STRING_LENGTH, "%s %s", ptr->string,
- engine_stmt->option);
+ char buffer[HUGE_STRING_LENGTH]= "";
+
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s %s",
+ ptr->string, engine_stmt->string, engine_stmt->option);
+ if (run_query(mysql, buffer, strlen(buffer)))
+ {
+ fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
+ my_progname, (uint)ptr->length, ptr->string, mysql_error(mysql));
+ exit(1);
+ }
+ }
+ else if (engine_stmt && engine_stmt->string && ptr->type == CREATE_TABLE_TYPE)
+ {
+ char buffer[HUGE_STRING_LENGTH]= "";
+
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s",
+ ptr->string, engine_stmt->string);
if (run_query(mysql, buffer, strlen(buffer)))
{
fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
@@ -1650,8 +1690,9 @@
static int
drop_schema(MYSQL *mysql, const char *db)
{
- char query[HUGE_STRING_LENGTH];
+ char query[HUGE_STRING_LENGTH]= "";
int len;
+
DBUG_ENTER("drop_schema");
len= snprintf(query, HUGE_STRING_LENGTH, "DROP SCHEMA IF EXISTS `%s`", db);
@@ -1842,7 +1883,7 @@
int length;
unsigned int key_val;
char *key;
- char buffer[HUGE_STRING_LENGTH];
+ char buffer[HUGE_STRING_LENGTH]= "";
/*
This should only happen if some sort of new engine was
@@ -1940,17 +1981,22 @@
uint count= 0; /* We know that there is always one */
for (tmp= *sptr= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
(retstr= strchr(ptr, delm));
tmp->next= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
tmp= tmp->next)
{
- char buffer[HUGE_STRING_LENGTH];
+ char buffer[HUGE_STRING_LENGTH]= "";
char *buffer_ptr;
count++;
strncpy(buffer, ptr, (size_t)(retstr - ptr));
+ /*
+ Handle --engine=memory:max_row=200 cases, or more general speaking
+ --engine=<storage_engine>:<options>. --engine=<storage_engine:option
+ will be translated to Engine = storage_engine option
+ */
if ((buffer_ptr= strchr(buffer, ':')))
{
char *option_ptr;
@@ -1971,13 +2017,15 @@
tmp->length= (size_t)(retstr - ptr);
}
+ /* Skip delimiter delm */
ptr+= retstr - ptr + 1;
if (isspace(*ptr))
ptr++;
+
count++;
}
- if (ptr != origin+length)
+ if (ptr != origin + length)
{
char *origin_ptr;
@@ -1986,7 +2034,8 @@
char *option_ptr;
tmp->length= (size_t)(origin_ptr - ptr);
- tmp->string= my_strndup(origin, tmp->length, MYF(MY_FAE));
+ // tmp->string= my_strndup(origin, tmp->length, MYF(MY_FAE));
+ tmp->string= my_strndup(ptr, tmp->length, MYF(MY_FAE));
option_ptr= (char *)ptr + 1 + tmp->length;
@@ -2036,7 +2085,7 @@
if (ptr != script+length)
{
tmp->string= my_strndup(ptr, (uint)((script + length) - ptr),
- MYF(MY_FAE));
+ MYF(MY_FAE));
tmp->length= (size_t)((script + length) - ptr);
count++;
}
@@ -2092,8 +2141,9 @@
void
print_conclusions_csv(conclusions *con)
{
- char buffer[HUGE_STRING_LENGTH];
+ char buffer[HUGE_STRING_LENGTH]= "";
const char *ptr= auto_generate_sql_type ? auto_generate_sql_type : "query";
+
snprintf(buffer, HUGE_STRING_LENGTH,
"%s,%s,%ld.%03ld,%ld.%03ld,%ld.%03ld,%d,%llu\n",
con->engine ? con->engine : "", /* Storage engine we ran against */
2
2
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 15:53)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.13421 2009-09-15 15:53:31.000000000 +0300
+++ /tmp/wklog.36.new.13421 2009-09-15 15:53:31.000000000 +0300
@@ -150,10 +150,17 @@
following events (see process_event() function):
- Query_log_event
-- Execute_load_query_log_event
-- Create_file_log_event
-
-TODO. Needed to check this list requires carefully !!!
+- Load_log_event
+- Execute_load_query_log_event [ :public Query_log_event ]
+- Create_file_log_event [ :public Load_log_event ]
+
+TODO. Needed to check this list carefully (not sure for Create_file_log_event)
+ Notes.
+ - In replication, only Query_log_event and Load_log_event uses
+ rpl_filter->get_rewrite_db();
+ - In mysqlbinlog (process_event), Execute_load_query_log_event
+ and Create_file_log_event are processed in separate switch
+ cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
@@ -182,8 +189,9 @@
*/
}
-- In process_event() function add print_use_stmt() invocations where
- needed (according to the events lis above), e.g.:
+- In process_event() function add switch case for Load_log_event and
+ add print_use_stmt() invocations where needed (according to the
+ events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
@@ -207,6 +215,11 @@
}
break;
...
+ case LOAD_EVENT:
+ print_use_stmt((Load_log_event*)ev, print_event_info);
+ break;
+ default:
+ ...
}
...
}
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
-=-=(Guest - Mon, 10 Aug 2009, 11:12)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6580 2009-08-10 11:12:36.000000000 +0300
+++ /tmp/wklog.36.new.6580 2009-08-10 11:12:36.000000000 +0300
@@ -1,4 +1,3 @@
-
Context
-------
At the moment, the server has a replication slave option
@@ -67,6 +66,6 @@
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require use to parse the
-statement).
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
-=-=(Psergey - Sun, 09 Aug 2009, 23:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13425 2009-08-09 23:53:54.000000000 +0300
+++ /tmp/wklog.36.new.13425 2009-08-09 23:53:54.000000000 +0300
@@ -1 +1,72 @@
+Context
+-------
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require use to parse the
+statement).
+
------------------------------------------------------------
-=-=(View All Progress Notes, 12 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Load_log_event
- Execute_load_query_log_event [ :public Query_log_event ]
- Create_file_log_event [ :public Load_log_event ]
TODO. Needed to check this list carefully (not sure for Create_file_log_event)
Notes.
- In replication, only Query_log_event and Load_log_event uses
rpl_filter->get_rewrite_db();
- In mysqlbinlog (process_event), Execute_load_query_log_event
and Create_file_log_event are processed in separate switch
cases. And Load_log_event is processed in the default switch case.
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add switch case for Load_log_event and
add print_use_stmt() invocations where needed (according to the
events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
case LOAD_EVENT:
print_use_stmt((Load_log_event*)ev, print_event_info);
break;
default:
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2738)
by knielsen@knielsen-hq.org 15 Sep '09
by knielsen@knielsen-hq.org 15 Sep '09
15 Sep '09
#At lp:maria
2738 knielsen(a)knielsen-hq.org 2009-09-15
More after-merge fixes for merging MySQL 5.1.38 into MariaDB.
modified:
mysql-test/t/mysqldump.test
mysys/my_getopt.c
storage/xtradb/buf/buf0flu.c
per-file messages:
mysql-test/t/mysqldump.test
Make test case work when build directory is not world readable
(this is the case for Buildbot checkouts).
mysys/my_getopt.c
Restore bugfix which was lost in previous merge.
storage/xtradb/buf/buf0flu.c
Fix extranous line caused by bad merge.
=== modified file 'mysql-test/t/mysqldump.test'
--- a/mysql-test/t/mysqldump.test 2009-09-07 20:50:10 +0000
+++ b/mysql-test/t/mysqldump.test 2009-09-15 12:53:07 +0000
@@ -1982,6 +1982,9 @@ drop table if exists `load`;
create table `load` (a varchar(255));
--copy_file std_data/words.dat $MYSQLTEST_VARDIR/tmp/load.txt
+# LOAD DATA requires the file to be world-readable. This may not be true
+# automatically, depending on how the build directory was created.
+--chmod 0644 $MYSQLTEST_VARDIR/tmp/load.txt
--exec $MYSQL_IMPORT --ignore test $MYSQLTEST_VARDIR/tmp/load.txt
=== modified file 'mysys/my_getopt.c'
--- a/mysys/my_getopt.c 2009-09-15 10:46:35 +0000
+++ b/mysys/my_getopt.c 2009-09-15 12:53:07 +0000
@@ -656,8 +656,9 @@ static int setval(const struct my_option
return EXIT_OUT_OF_MEMORY;
break;
case GET_ENUM:
- if (((*(ulong *)result_pos)=
- find_type(argument, opts->typelib, 2) - 1) < 0)
+ pos= find_type(argument, opts->typelib, 2) - 1;
+ (*(ulong *)result_pos)= pos;
+ if (pos < 0)
{
/*
Accept an integer representation of the enumerated item.
=== modified file 'storage/xtradb/buf/buf0flu.c'
--- a/storage/xtradb/buf/buf0flu.c 2009-09-15 10:46:35 +0000
+++ b/storage/xtradb/buf/buf0flu.c 2009-09-15 12:53:07 +0000
@@ -1238,7 +1238,6 @@ buf_flush_LRU_recommendation(void)
+ BUF_FLUSH_EXTRA_MARGIN)
&& (distance < BUF_LRU_FREE_SEARCH_LEN)) {
- mutex_t* block_mutex;
if (!bpage->in_LRU_list) {
/* reatart. but it is very optimistic */
bpage = UT_LIST_GET_LAST(buf_pool->LRU);
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2737)
by knielsen@knielsen-hq.org 15 Sep '09
by knielsen@knielsen-hq.org 15 Sep '09
15 Sep '09
#At lp:maria
2737 knielsen(a)knielsen-hq.org 2009-09-15 [merge]
MySQL 5.1.38 merge into MariaDB.
Merge remaining bits of mysql-5.1.38 into MariaDB (9 commits were missing
from the original merge).
modified:
cmd-line-utils/readline/util.c
mysql-test/Makefile.am
mysql-test/lib/My/SafeProcess/Makefile.am
scripts/make_win_bin_dist
storage/innodb_plugin/handler/i_s.cc
storage/innodb_plugin/include/univ.i
storage/ndb/test/run-test/Makefile.am
support-files/mysql.spec.sh
=== modified file 'cmd-line-utils/readline/util.c'
--- a/cmd-line-utils/readline/util.c 2009-06-29 13:17:01 +0000
+++ b/cmd-line-utils/readline/util.c 2009-08-14 15:18:52 +0000
@@ -81,8 +81,13 @@ rl_alphabetic (c)
#if defined (HANDLE_MULTIBYTE)
int
-_rl_walphabetic (wc)
- wchar_t wc;
+/*
+ Portability issue with VisualAge C++ Professional / C for AIX Compiler, Version 6:
+ "util.c", line 84.1: 1506-343 (S) Redeclaration of _rl_walphabetic differs
+ from previous declaration on line 110 of "rlmbutil.h".
+ So, put type in the function signature here.
+*/
+_rl_walphabetic (wchar_t wc)
{
int c;
=== modified file 'mysql-test/Makefile.am'
--- a/mysql-test/Makefile.am 2009-09-07 20:50:10 +0000
+++ b/mysql-test/Makefile.am 2009-09-15 12:12:51 +0000
@@ -17,7 +17,8 @@
## Process this file with automake to create Makefile.in
-testdir = $(prefix)/mysql-test
+testroot = $(prefix)
+testdir = $(testroot)/mysql-test
test_SCRIPTS = mtr \
mysql-test-run \
=== modified file 'mysql-test/lib/My/SafeProcess/Makefile.am'
--- a/mysql-test/lib/My/SafeProcess/Makefile.am 2008-03-13 16:07:11 +0000
+++ b/mysql-test/lib/My/SafeProcess/Makefile.am 2009-08-21 11:58:33 +0000
@@ -13,7 +13,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-safedir = $(prefix)/mysql-test/lib/My/SafeProcess
+testroot = $(prefix)
+safedir = $(testroot)/mysql-test/lib/My/SafeProcess
#nobase_bin_PROGRAMS = ...
safe_PROGRAMS = my_safe_process
=== modified file 'scripts/make_win_bin_dist'
--- a/scripts/make_win_bin_dist 2009-04-14 19:53:00 +0000
+++ b/scripts/make_win_bin_dist 2009-09-01 06:40:13 +0000
@@ -279,6 +279,7 @@ cp include/mysql/plugin.h $DESTDIR/inclu
# ----------------------------------------------------------------------
mkdir -p $DESTDIR/lib/opt
+mkdir -p $DESTDIR/lib/plugin
cp libmysql/$TARGET/libmysql.dll \
libmysql/$TARGET/libmysql.lib \
libmysql/$TARGET/mysqlclient.lib \
@@ -286,6 +287,10 @@ cp libmysql/$TARGET/libmysql.dll \
regex/$TARGET/regex.lib \
strings/$TARGET/strings.lib \
zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
+if [ -d storage/innodb_plugin ]; then
+ cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.dll \
+ $DESTDIR/lib/plugin/
+fi
if [ x"$TARGET" != x"release" ] ; then
cp libmysql/$TARGET/libmysql.pdb \
@@ -294,11 +299,17 @@ if [ x"$TARGET" != x"release" ] ; then
regex/$TARGET/regex.pdb \
strings/$TARGET/strings.pdb \
zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/
+ if [ -d storage/innodb_plugin ]; then
+ cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.pdb \
+ $DESTDIR/lib/plugin/
+ fi
fi
+
if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
x"$PACK_DEBUG" = x"yes" ] ; then
mkdir -p $DESTDIR/lib/debug
+ mkdir -p $DESTDIR/lib/plugin/debug
cp libmysql/debug/libmysql.dll \
libmysql/debug/libmysql.lib \
libmysql/debug/libmysql.pdb \
@@ -312,6 +323,12 @@ if [ x"$PACK_DEBUG" = x"" -a -f "libmysq
strings/debug/strings.pdb \
zlib/debug/zlib.lib \
zlib/debug/zlib.pdb $DESTDIR/lib/debug/
+ if [ -d storage/innodb_plugin ]; then
+ cp storage/innodb_plugin/debug/ha_innodb_plugin.dll \
+ storage/innodb_plugin/debug/ha_innodb_plugin.lib \
+ storage/innodb_plugin/debug/ha_innodb_plugin.pdb \
+ $DESTDIR/lib/plugin/debug/
+ fi
fi
# ----------------------------------------------------------------------
=== modified file 'storage/innodb_plugin/handler/i_s.cc'
--- a/storage/innodb_plugin/handler/i_s.cc 2009-06-10 08:59:49 +0000
+++ b/storage/innodb_plugin/handler/i_s.cc 2009-08-14 15:18:52 +0000
@@ -69,14 +69,16 @@ do { \
#define STRUCT_FLD(name, value) value
#endif
-static const ST_FIELD_INFO END_OF_ST_FIELD_INFO =
- {STRUCT_FLD(field_name, NULL),
- STRUCT_FLD(field_length, 0),
- STRUCT_FLD(field_type, MYSQL_TYPE_NULL),
- STRUCT_FLD(value, 0),
- STRUCT_FLD(field_flags, 0),
- STRUCT_FLD(old_name, ""),
- STRUCT_FLD(open_method, SKIP_OPEN_TABLE)};
+/* Don't use a static const variable here, as some C++ compilers (notably
+HPUX aCC: HP ANSI C++ B3910B A.03.65) can't handle it. */
+#define END_OF_ST_FIELD_INFO \
+ {STRUCT_FLD(field_name, NULL), \
+ STRUCT_FLD(field_length, 0), \
+ STRUCT_FLD(field_type, MYSQL_TYPE_NULL), \
+ STRUCT_FLD(value, 0), \
+ STRUCT_FLD(field_flags, 0), \
+ STRUCT_FLD(old_name, ""), \
+ STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}
/*
Use the following types mapping:
=== modified file 'storage/innodb_plugin/include/univ.i'
--- a/storage/innodb_plugin/include/univ.i 2009-07-30 12:42:56 +0000
+++ b/storage/innodb_plugin/include/univ.i 2009-08-14 15:18:52 +0000
@@ -408,7 +408,8 @@ it is read. */
/* Minimize cache-miss latency by moving data at addr into a cache before
it is read or written. */
# define UNIV_PREFETCH_RW(addr) __builtin_prefetch(addr, 1, 3)
-#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+/* Sun Studio includes sun_prefetch.h as of version 5.9 */
+#elif (defined(__SUNPRO_C) && __SUNPRO_C >= 0x590) || (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x590)
# include <sun_prefetch.h>
#if __SUNPRO_C >= 0x550
# undef UNIV_INTERN
=== modified file 'storage/ndb/test/run-test/Makefile.am'
--- a/storage/ndb/test/run-test/Makefile.am 2007-08-31 14:12:51 +0000
+++ b/storage/ndb/test/run-test/Makefile.am 2009-08-21 11:58:33 +0000
@@ -13,7 +13,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-testdir=$(prefix)/mysql-test/ndb
+testroot=$(prefix)
+testdir=$(testroot)/mysql-test/ndb
include $(top_srcdir)/storage/ndb/config/common.mk.am
include $(top_srcdir)/storage/ndb/config/type_util.mk.am
=== modified file 'support-files/mysql.spec.sh'
--- a/support-files/mysql.spec.sh 2009-09-07 20:50:10 +0000
+++ b/support-files/mysql.spec.sh 2009-09-15 12:12:51 +0000
@@ -344,7 +344,7 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH
--with-blackhole-storage-engine \
--with-federated-storage-engine \
--without-plugin-daemon_example \
- --without-plugin-example \
+ --without-plugin-ftexample \
--with-partition \
--with-big-tables \
%if %{WITH_BUNDLED_ZLIB}
@@ -750,7 +750,11 @@ fi
%attr(755, root, root) %{_bindir}/resolve_stack_dump
%attr(755, root, root) %{_bindir}/resolveip
-%attr(755, root, root) %{_libdir}/plugin/*.so*
+%attr(755, root, root) %{_libdir}/mysql/plugin/ha_example.so*
+%if %{WITHOUT_INNODB_PLUGIN}
+%else
+%attr(755, root, root) %{_libdir}/mysql/plugin/ha_innodb_plugin.so*
+%endif
%attr(755, root, root) %{_sbindir}/mysqld
%attr(755, root, root) %{_sbindir}/mysqld-debug
@@ -877,8 +881,13 @@ fi
%{_libdir}/mysql/libvio.a
%{_libdir}/mysql/libz.a
%{_libdir}/mysql/libz.la
-%{_libdir}/plugin/*.a
-%{_libdir}/plugin/*.la
+%{_libdir}/mysql/plugin/ha_example.a
+%{_libdir}/mysql/plugin/ha_example.la
+%if %{WITHOUT_INNODB_PLUGIN}
+%else
+%{_libdir}/mysql/plugin/ha_innodb_plugin.a
+%{_libdir}/mysql/plugin/ha_innodb_plugin.la
+%endif
%files shared
%defattr(-, root, root, 0755)
@@ -915,7 +924,7 @@ fi
* Fri Aug 21 2009 Jonathan Perkin <jperkin(a)sun.com>
- Install plugin libraries in appropriate packages.
-- Disable example plugins.
+- Disable libdaemon_example and ftexample plugins.
* Thu Aug 20 2009 Jonathan Perkin <jperkin@stripped>
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2736)
by knielsen@knielsen-hq.org 15 Sep '09
by knielsen@knielsen-hq.org 15 Sep '09
15 Sep '09
#At lp:maria
2736 knielsen(a)knielsen-hq.org 2009-09-15
More after-merge fixes for MySQL 5.1.38 merge.
Fix version number (we are based on 5.1.38, not 5.1.39).
Fix mistaken translation in error message.
modified:
configure.in
sql/share/errmsg.txt
=== modified file 'configure.in'
--- a/configure.in 2009-09-07 20:50:10 +0000
+++ b/configure.in 2009-09-15 11:55:37 +0000
@@ -13,7 +13,7 @@ AC_CANONICAL_SYSTEM
#
# When merging new MySQL releases, update the version number to match the
# MySQL version number, but reset the maria subrelease (-beta1).
-AM_INIT_AUTOMAKE(mysql, 5.1.39-maria-beta1)
+AM_INIT_AUTOMAKE(mysql, 5.1.38-maria-beta1)
AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10
=== modified file 'sql/share/errmsg.txt'
--- a/sql/share/errmsg.txt 2009-09-07 20:50:10 +0000
+++ b/sql/share/errmsg.txt 2009-09-15 11:55:37 +0000
@@ -2044,7 +2044,7 @@ ER_BLOBS_AND_NO_TERMINATED 42000 S1009
ukr "���������������������� �BLOB. ����� 'fields terminated by'"
ER_TEXTFILE_NOT_READABLE
cze "Soubor '%-.128s' mus-B��dres� datab� nebo �eln�v�echny"
- dan "Filen '%-.128s' skal v� i database-folderen og kunne l�s af alle"
+ dan "Filen '%-.128s' skal v� i database-folderen, eller kunne l�s af alle"
nla "Het bestand '%-.128s' dient in de database directory voor the komen of leesbaar voor iedereen te zijn."
eng "The file '%-.128s' must be in the database directory or be readable by all"
jps "�t�@�C�� '%-.128s' ��databse ��directory �ɂ��邩�S�Ẵ��[�U�[���ǂ߂����ɋ��������Ȃ����Ȃ�����
1
0
[Maria-developers] Rev 2735: in file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
by Sergey Petrunya 15 Sep '09
by Sergey Petrunya 15 Sep '09
15 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
------------------------------------------------------------
revno: 2735
revision-id: psergey(a)askmonty.org-20090915112629-v5uslux5owiu9dw1
parent: psergey(a)askmonty.org-20090915112239-pkxmusmef54rs7u4
parent: knielsen(a)knielsen-hq.org-20090915060854-edhzpd68ek2m2191
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd3
timestamp: Tue 2009-09-15 15:26:29 +0400
message:
(no message)
removed:
mysql-test/include/wait_for_status_var.inc.moved wait_for_status_var.-20090211203001-5duty4a5ylnova9h-1
modified:
mysql-test/include/concurrent.inc sp1f-innodb_concurrent.te-20051222053459-lwg5sp2ww5pt2wipchfkjjvnmslyp3g3
mysql-test/include/mix1.inc sp1f-innodb_mysql.test-20060426055153-mgtahdmgajg7vffqbq4xrmkzbhvanlaz
mysql-test/r/innodb_mysql.result sp1f-innodb_mysql.result-20060426055153-bychbbfnqtvmvrwccwhn24i6yi46uqjv
------------------------------------------------------------
revno: 2732.1.1
revision-id: knielsen(a)knielsen-hq.org-20090915060854-edhzpd68ek2m2191
parent: psergey(a)askmonty.org-20090915010415-ntacv5ln6fqyb202
committer: knielsen(a)knielsen-hq.org
branch nick: maria-5.1-merge
timestamp: Tue 2009-09-15 08:08:54 +0200
message:
MySQL 5.1.38 after-merge fixes.
Fix some mistakes in the original merge found during review.
removed:
mysql-test/include/wait_for_status_var.inc.moved wait_for_status_var.-20090211203001-5duty4a5ylnova9h-1
modified:
mysql-test/include/concurrent.inc sp1f-innodb_concurrent.te-20051222053459-lwg5sp2ww5pt2wipchfkjjvnmslyp3g3
mysql-test/include/mix1.inc sp1f-innodb_mysql.test-20060426055153-mgtahdmgajg7vffqbq4xrmkzbhvanlaz
mysql-test/r/innodb_mysql.result sp1f-innodb_mysql.result-20060426055153-bychbbfnqtvmvrwccwhn24i6yi46uqjv
=== modified file 'mysql-test/include/concurrent.inc'
--- a/mysql-test/include/concurrent.inc 2009-09-07 20:50:10 +0000
+++ b/mysql-test/include/concurrent.inc 2009-09-15 06:08:54 +0000
@@ -666,7 +666,9 @@
--echo ** connection thread2
connection thread2;
disconnect thread2;
+--source include/wait_until_disconnected.inc
--echo ** connection default
connection default;
drop table t1;
drop user mysqltest@localhost;
+
=== modified file 'mysql-test/include/mix1.inc'
--- a/mysql-test/include/mix1.inc 2009-09-07 20:50:10 +0000
+++ b/mysql-test/include/mix1.inc 2009-09-15 06:08:54 +0000
@@ -1509,6 +1509,7 @@
--echo # SQL_SELECT::test_quick_select
--echo # (reproduced only with InnoDB tables)
--echo #
+
eval
CREATE TABLE t1 (c1 INT, c2 INT, c3 INT, KEY (c3), KEY (c2, c3))
ENGINE=$engine_type;
@@ -1538,7 +1539,7 @@
eval
CREATE TABLE t1 (c1 DECIMAL(12,2), c2 DECIMAL(12,2), c3 DECIMAL(12,2),
KEY (c3), KEY (c2, c3))
- ENGINE=innodb;
+ ENGINE=$engine_type;
INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2);
SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
=== removed file 'mysql-test/include/wait_for_status_var.inc.moved'
--- a/mysql-test/include/wait_for_status_var.inc.moved 2009-09-07 20:50:10 +0000
+++ b/mysql-test/include/wait_for_status_var.inc.moved 1970-01-01 00:00:00 +0000
@@ -1,68 +0,0 @@
-# ==== Purpose ====
-#
-# Waits until a variable from SHOW STATUS has returned a specified
-# value, or until a timeout is reached.
-#
-# ==== Usage ====
-#
-# let $status_var= Threads_connected;
-# let $status_var_value= 1;
-# --source include/wait_for_status_var.inc
-#
-# Parameters:
-#
-# $status_var, $status_var_value
-# This macro will wait until the variable of SHOW STATUS
-# named $status_var gets the value $status_var_value. See
-# the example above.
-#
-# $status_type= GLOBAL|SESSION
-# To specify the type (attribute) of status variable and
-# run either SHOW GLOBAL STATUS or SHOW SESSION STATUS.
-#
-# $status_var_comparsion
-# By default, this file waits until $status_var becomes equal to
-# $status_var_value. If you want to wait until $status_var
-# becomes *unequal* to $status_var_value, set this parameter to the
-# string '!=', like this:
-# let $status_var_comparsion= !=;
-#
-# $status_timeout
-# The default timeout is 1 minute. You can change the timeout by
-# setting $status_timeout. The unit is tenths of seconds.
-#
-
-if (`SELECT STRCMP('$status_type', '') * STRCMP(UPPER('$status_type'), 'SESSION') * STRCMP(UPPER('$status_type'), 'GLOBAL')`)
-{
- --echo **** ERROR: Unknown type of variable status_type: allowed values are: SESSION or GLOBAL ****
- exit;
-}
-
-let $_status_timeout_counter= $status_timeout;
-if (!$_status_timeout_counter)
-{
- let $_status_timeout_counter= 600;
-}
-
-let $_status_var_comparsion= $status_var_comparsion;
-if (`SELECT '$_status_var_comparsion' = ''`)
-{
- let $_status_var_comparsion= =;
-}
-
-let $_show_status_value= query_get_value("SHOW $status_type STATUS LIKE '$status_var'", Value, 1);
-while (`SELECT NOT('$_show_status_value' $_status_var_comparsion '$status_var_value')`)
-{
- if (!$_status_timeout_counter)
- {
- --echo **** ERROR: failed while waiting for $status_type $status_var $_status_var_comparison $status_var_value ****
- --echo Note: the following output may have changed since the failure was detected
- --echo **** Showing STATUS, PROCESSLIST ****
- eval SHOW $status_type STATUS LIKE '$status_var';
- SHOW PROCESSLIST;
- exit;
- }
- dec $_status_timeout_counter;
- sleep 0.1;
- let $_show_status_value= query_get_value("SHOW $status_type STATUS LIKE '$status_var'", Value, 1);
-}
=== modified file 'mysql-test/r/innodb_mysql.result'
--- a/mysql-test/r/innodb_mysql.result 2009-09-09 21:06:57 +0000
+++ b/mysql-test/r/innodb_mysql.result 2009-09-15 06:08:54 +0000
@@ -1746,7 +1746,7 @@
DROP TABLE t1;
CREATE TABLE t1 (c1 DECIMAL(12,2), c2 DECIMAL(12,2), c3 DECIMAL(12,2),
KEY (c3), KEY (c2, c3))
-ENGINE=innodb;
+ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2);
SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x;
1
0
[Maria-developers] Rev 2734: Post-merge fixes in file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
by Sergey Petrunya 15 Sep '09
by Sergey Petrunya 15 Sep '09
15 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
------------------------------------------------------------
revno: 2734
revision-id: psergey(a)askmonty.org-20090915112239-pkxmusmef54rs7u4
parent: psergey(a)askmonty.org-20090915104635-bpj3pwfr05v9fjul
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd3
timestamp: Tue 2009-09-15 15:22:39 +0400
message:
Post-merge fixes
=== modified file 'extra/yassl/src/handshake.cpp'
--- a/extra/yassl/src/handshake.cpp 2009-09-15 10:46:35 +0000
+++ b/extra/yassl/src/handshake.cpp 2009-09-15 11:22:39 +0000
@@ -789,7 +789,7 @@
{
if (ssl.GetError()) return;
- if (DoProcessReply(ssl)) {
+ if (DoProcessReply(ssl))
{
// didn't complete process
if (!ssl.getSocket().IsNonBlocking()) {
@@ -874,7 +874,7 @@
// send change cipher
void sendChangeCipher(SSL& ssl, BufferOutput buffer)
{
- if (ssl.getSecurity().get_parms().entity_ == server_end) {
+ if (ssl.getSecurity().get_parms().entity_ == server_end)
{
if (ssl.getSecurity().get_resuming())
ssl.verifyState(clientKeyExchangeComplete);
=== modified file 'extra/yassl/src/yassl_imp.cpp'
--- a/extra/yassl/src/yassl_imp.cpp 2009-09-15 10:46:35 +0000
+++ b/extra/yassl/src/yassl_imp.cpp 2009-09-15 11:22:39 +0000
@@ -1305,7 +1305,6 @@
ssl.useSecurity().use_connection().sessionID_Set_ = false;
if (ssl.getSecurity().get_resuming()) {
- {
if (memcmp(session_id_, ssl.getSecurity().get_resume().GetID(),
ID_LEN) == 0) {
ssl.set_masterSecret(ssl.getSecurity().get_resume().GetSecret());
=== modified file 'extra/yassl/taocrypt/include/modes.hpp'
--- a/extra/yassl/taocrypt/include/modes.hpp 2009-09-15 10:46:35 +0000
+++ b/extra/yassl/taocrypt/include/modes.hpp 2009-09-15 11:22:39 +0000
@@ -95,7 +95,7 @@
{
if (mode_ == ECB)
ECB_Process(out, in, sz);
- else if (mode_ == CBC) {
+ else if (mode_ == CBC)
{
if (dir_ == ENCRYPTION)
CBC_Encrypt(out, in, sz);
=== modified file 'extra/yassl/taocrypt/src/asn.cpp'
--- a/extra/yassl/taocrypt/src/asn.cpp 2009-09-15 10:46:35 +0000
+++ b/extra/yassl/taocrypt/src/asn.cpp 2009-09-15 11:22:39 +0000
@@ -1063,7 +1063,7 @@
return 0;
}
word32 rLen = GetLength(source);
- if (rLen != 20) {
+ if (rLen != 20)
{
if (rLen == 21) { // zero at front, eat
source.next();
@@ -1087,7 +1087,7 @@
return 0;
}
word32 sLen = GetLength(source);
- if (sLen != 20) {
+ if (sLen != 20)
{
if (sLen == 21) {
source.next(); // zero at front, eat
=== modified file 'storage/maria/ma_rt_index.c'
--- a/storage/maria/ma_rt_index.c 2009-09-15 10:46:35 +0000
+++ b/storage/maria/ma_rt_index.c 2009-09-15 11:22:39 +0000
@@ -1136,8 +1136,6 @@
uchar *page_buf;
MARIA_PAGE page;
MARIA_KEY tmp_key;
- uchar *page_buf;
- MARIA_PAGE page;
tmp_key.keyinfo= key->keyinfo;
tmp_key.data_length= key->data_length;
tmp_key.ref_length= key->ref_length;
1
0
[Maria-developers] Rev 2733: Merge lp:maria -> lp:~maria-captains/maria/maria-5.1-merge in file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
by Sergey Petrunya 15 Sep '09
by Sergey Petrunya 15 Sep '09
15 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
------------------------------------------------------------
revno: 2733
revision-id: psergey(a)askmonty.org-20090915104635-bpj3pwfr05v9fjul
parent: psergey(a)askmonty.org-20090915010415-ntacv5ln6fqyb202
parent: igor(a)mysql.com-20090909181131-6jb3y48zxnz42zyb
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd3
timestamp: Tue 2009-09-15 14:46:35 +0400
message:
Merge lp:maria -> lp:~maria-captains/maria/maria-5.1-merge
removed:
storage/pbxt/src/streaming_xt.cc streaming_xt.cc-20090326121724-x683v32twzr3fi0y-57
storage/pbxt/src/streaming_xt.h streaming_xt.h-20090326121724-x683v32twzr3fi0y-58
added:
mysql-test/lib/process-purecov-annotations.pl processpurecovannota-20090825145959-3tgucpo20ms8b5yb-1
mysql-test/r/log_slow.result log_slow.result-20090903130213-g4uekoxftd69o7cr-1
mysql-test/r/mysqld_option_err.result mysqld_option_err.re-20090903125847-d311kra14ipqyi2o-1
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/suite/pbxt/t/lowercase_table_grant-master.opt lowercase_table_gran-20090828130852-3duj73io0g345hxj-1
mysql-test/suite/pbxt/t/lowercase_table_qcache-master.opt lowercase_table_qcac-20090828130852-3duj73io0g345hxj-2
mysql-test/suite/pbxt/t/lowercase_view-master.opt lowercase_viewmaster-20090828130852-3duj73io0g345hxj-3
mysql-test/suite/pbxt/t/udf-master.opt udfmaster.opt-20090828130852-3duj73io0g345hxj-4
mysql-test/t/log_slow.test log_slow.test-20090903130444-i0i8h0k5qt9xatcx-2
mysql-test/t/mysqld_option_err.test mysqld_option_err.te-20090903125847-d311kra14ipqyi2o-2
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql-bench/test-table-elimination.sh testtableelimination-20090616194329-gai92muve732qknl-1
sql/log_slow.h log_slow.h-20090903130444-i0i8h0k5qt9xatcx-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
storage/pbxt/src/pbms_enabled.cc pbms_enabled.cc-20090818074502-tybcb62hp1kdrk3l-1
storage/pbxt/src/pbms_enabled.h pbms_enabled.h-20090818074502-tybcb62hp1kdrk3l-2
support-files/ccfilter ccfilter-20090903130840-kgbb9xgba492f3z4-1
modified:
.bzrignore sp1f-ignore-20001018235455-q4gxfbritt5f42nwix354ufpsvrf5ebj
BUILD/Makefile.am sp1f-makefile.am-20020102192940-dza66ux2yxyklupzjz4q3km3hvye5rnj
KNOWN_BUGS.txt sp1f-known_bugs.txt-20080112111653-zzflmm3ji2fwldqezas63y53pssozvb7
README sp1f-readme-19700101030959-ipf4glwvob7zbr3norl5feyy3jwy3sod
config/ac-macros/misc.m4 sp1f-misc.m4-20041202010047-eedogcoko3sndn3nhe3krdole675uamr
extra/yassl/include/yassl_int.hpp sp1f-yassl_int.hpp-20050428132307-uqdopnog3njo2nicimdqmt7fco35gagn
extra/yassl/src/handshake.cpp sp1f-handshake.cpp-20050428132310-fmtqaesmdo3txlm6dnhqmef23jgyrmih
extra/yassl/src/yassl_imp.cpp sp1f-yassl_imp.cpp-20050428132311-kbtb6sfna2iec57rsngc5wa76djjl76p
extra/yassl/src/yassl_int.cpp sp1f-yassl_int.cpp-20050428132311-hjgnphdasudo2ncxocoetyb7twor5fpq
extra/yassl/taocrypt/include/modes.hpp sp1f-modes.hpp-20050428132316-td6cnzuargeuvsxs2vqse74d62tzbxtj
extra/yassl/taocrypt/src/asn.cpp sp1f-asn.cpp-20050428132318-okq6hllvtur6rcfg4gc5pbxebunf764v
include/my_global.h sp1f-my_global.h-20010915021246-4vawdgfw4vg3tuxq6mejt7lrchcnceha
libmysqld/Makefile.am sp1f-makefile.am-20010411110351-26htpk3ynkyh7pkfvnshztqrxx3few4g
mysql-test/lib/mtr_gcov.pl sp1f-mtr_gcov.pl-20041230152646-g7ukx2aojk6vlfbrurijutdkqshwljue
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/r/mysql-bug41486.result mysqlbug41486.result-20090323135900-fobg67a3yzg0b7e8-1
mysql-test/r/ps_11bugs.result sp1f-ps_11bugs.result-20041012140047-4pktjlfeq27q6bxqfdsbcszr5nybv6zz
mysql-test/r/select.result sp1f-select.result-20010103001548-znkoalxem6wchsbxizfosjhpfmhfyxuk
mysql-test/r/subselect.result sp1f-subselect.result-20020512204640-zgegcsgavnfd7t7eyrf7ibuqomsw7uzo
mysql-test/r/union.result sp1f-unions_one.result-20010725122836-ofxtwraxeohz7whhrmfdz57sl4a5prmp
mysql-test/r/variables.result sp1f-variables.result-20001228015635-w5m2doorn7gzhyyhpqrlqsupnwn6f6xh
mysql-test/suite/pbxt/r/alter_table.result alter_table.result-20090402100035-4ilk9i91sh65vjcb-5
mysql-test/suite/pbxt/r/analyze.result analyze.result-20090402100035-4ilk9i91sh65vjcb-7
mysql-test/suite/pbxt/r/auto_increment.result auto_increment.resul-20090402100035-4ilk9i91sh65vjcb-9
mysql-test/suite/pbxt/r/delete.result delete.result-20090402100035-4ilk9i91sh65vjcb-31
mysql-test/suite/pbxt/r/distinct.result distinct.result-20090402100035-4ilk9i91sh65vjcb-34
mysql-test/suite/pbxt/r/func_group.result func_group.result-20090402100035-4ilk9i91sh65vjcb-50
mysql-test/suite/pbxt/r/func_math.result func_math.result-20090402100035-4ilk9i91sh65vjcb-55
mysql-test/suite/pbxt/r/func_str.result func_str.result-20090402100035-4ilk9i91sh65vjcb-61
mysql-test/suite/pbxt/r/grant.result grant.result-20090402100035-4ilk9i91sh65vjcb-65
mysql-test/suite/pbxt/r/group_min_max.result group_min_max.result-20090402100035-4ilk9i91sh65vjcb-69
mysql-test/suite/pbxt/r/join.result join.result-20090402100035-4ilk9i91sh65vjcb-79
mysql-test/suite/pbxt/r/join_nested.result join_nested.result-20090402100035-4ilk9i91sh65vjcb-81
mysql-test/suite/pbxt/r/key.result key.result-20090402100035-4ilk9i91sh65vjcb-83
mysql-test/suite/pbxt/r/key_cache.result key_cache.result-20090402100035-4ilk9i91sh65vjcb-84
mysql-test/suite/pbxt/r/key_diff.result key_diff.result-20090402100035-4ilk9i91sh65vjcb-85
mysql-test/suite/pbxt/r/lowercase_view.result lowercase_view.resul-20090402100035-4ilk9i91sh65vjcb-96
mysql-test/suite/pbxt/r/mysqlshow.result mysqlshow.result-20090402100035-4ilk9i91sh65vjcb-101
mysql-test/suite/pbxt/r/null.result null.result-20090402100035-4ilk9i91sh65vjcb-104
mysql-test/suite/pbxt/r/null_key.result null_key.result-20090402100035-4ilk9i91sh65vjcb-105
mysql-test/suite/pbxt/r/partition_pruning.result partition_pruning.re-20090402100035-4ilk9i91sh65vjcb-117
mysql-test/suite/pbxt/r/pbxt_bugs.result pbxt_bugs.result-20090402100035-4ilk9i91sh65vjcb-120
mysql-test/suite/pbxt/r/pbxt_ref_int.result pbxt_ref_int.result-20090402100035-4ilk9i91sh65vjcb-123
mysql-test/suite/pbxt/r/preload.result preload.result-20090402100035-4ilk9i91sh65vjcb-127
mysql-test/suite/pbxt/r/ps_1general.result ps_1general.result-20090402100035-4ilk9i91sh65vjcb-130
mysql-test/suite/pbxt/r/range.result range.result-20090402100035-4ilk9i91sh65vjcb-132
mysql-test/suite/pbxt/r/schema.result schema.result-20090402100035-4ilk9i91sh65vjcb-138
mysql-test/suite/pbxt/r/select.result select.result-20090402100035-4ilk9i91sh65vjcb-139
mysql-test/suite/pbxt/r/select_safe.result select_safe.result-20090402100035-4ilk9i91sh65vjcb-141
mysql-test/suite/pbxt/r/subselect.result subselect.result-20090402100035-4ilk9i91sh65vjcb-146
mysql-test/suite/pbxt/r/type_enum.result type_enum.result-20090402100035-4ilk9i91sh65vjcb-155
mysql-test/suite/pbxt/r/type_ranges.result type_ranges.result-20090402100035-4ilk9i91sh65vjcb-159
mysql-test/suite/pbxt/r/type_timestamp.result type_timestamp.resul-20090402100035-4ilk9i91sh65vjcb-162
mysql-test/suite/pbxt/r/union.result union.result-20090402100035-4ilk9i91sh65vjcb-166
mysql-test/suite/pbxt/r/view_grant.result view_grant.result-20090402100035-4ilk9i91sh65vjcb-169
mysql-test/suite/pbxt/t/auto_increment.test auto_increment.test-20090402100035-4ilk9i91sh65vjcb-176
mysql-test/suite/pbxt/t/delete.test delete.test-20090402100035-4ilk9i91sh65vjcb-198
mysql-test/suite/pbxt/t/join_nested.test join_nested.test-20090402100035-4ilk9i91sh65vjcb-248
mysql-test/suite/pbxt/t/null.test null.test-20090402100035-4ilk9i91sh65vjcb-271
mysql-test/suite/pbxt/t/pbxt_bugs.test pbxt_bugs.test-20090402100035-4ilk9i91sh65vjcb-287
mysql-test/suite/pbxt/t/rename.test rename.test-20090402100035-4ilk9i91sh65vjcb-301
mysql-test/suite/pbxt/t/schema.test schema.test-20090402100035-4ilk9i91sh65vjcb-305
mysql-test/suite/pbxt/t/type_enum.test type_enum.test-20090402100035-4ilk9i91sh65vjcb-322
mysql-test/suite/pbxt/t/union.test union.test-20090402100035-4ilk9i91sh65vjcb-333
mysql-test/t/index_merge_myisam.test sp1f-index_merge_myisam.t-20060816114353-3p3p5fylcfj754j3d3td6zs6shnc5nu3
mysql-test/t/mysql-bug41486.test mysqlbug41486.test-20090323135900-fobg67a3yzg0b7e8-2
mysql-test/valgrind.supp sp1f-valgrind.supp-20050406142216-yg7xhezklqhgqlc3inx36vbghodhbovy
mysys/my_compress.c sp1f-my_compress.c-19700101030959-vzixvitc7v3ffbqmhphz73hoeuaxmspm
mysys/my_getopt.c sp1f-my_getopt.c-20020125212008-5ppwsdqmfhny46gxkjxph22zh3phetir
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/event_data_objects.cc sp1f-event_timed.cc-20051205104456-ckd2gzuwhr4u5umqbncmt43nvv45pxmf
sql/events.cc sp1f-event.cc-20051202122200-as66hughd4bhrhu2uqbb6mpogou2yihk
sql/filesort.cc sp1f-filesort.cc-19700101030959-mfm2vmdgqqru7emm2meeecleb2q3zdso
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_cmpfunc.cc sp1f-item_cmpfunc.cc-19700101030959-hrk7pi2n6qpwxauufnkizirsoucdcx2e
sql/item_cmpfunc.h sp1f-item_cmpfunc.h-19700101030959-pcvbjplo4e4ng7ibynfhcd6pjyem57gr
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_subselect.h sp1f-item_subselect.h-20020512204640-qdg77wil56cxyhtc2bjjdrppxq3wqgh3
sql/item_sum.cc sp1f-item_sum.cc-19700101030959-4woo23bi3am2t2zvsddqbpxk7xbttdkm
sql/item_sum.h sp1f-item_sum.h-19700101030959-ecgohlekwm355wxl5fv4zzq3alalbwyl
sql/log.cc sp1f-log.cc-19700101030959-r3hdfovek4kl6nd64ovoaknmirota6bq
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/opt_range.h sp1f-opt_range.h-19700101030959-c2qbh5kplyvzfgawblxt4md4ubdpxfdy
sql/set_var.cc sp1f-set_var.cc-20020723153119-nwbpg2pwpz55pfw7yfzaxt7hsszzy7y3
sql/set_var.h sp1f-set_var.h-20020723153119-2yomygq3s4xjbqvuue3cdlpbjtj3kwmk
sql/slave.cc sp1f-slave.cc-19700101030959-a636aj3mjxgu7fnznrg5kt77p3u2bvhh
sql/sp_head.cc sp1f-sp_head.cc-20021208185920-jtgc5wvyqdnu2gvcdus3gazrfhxbofxd
sql/sql_bitmap.h sp1f-sql_bitmap.h-20031024204444-g4eiad7vopzqxe2trxmt3fn3xsvnomvj
sql/sql_cache.cc sp1f-sql_cache.cc-19700101030959-74bsqwcnhboovijsogcenqana5inu6wo
sql/sql_class.cc sp1f-sql_class.cc-19700101030959-rpotnweaff2pikkozh3butrf7mv3oero
sql/sql_class.h sp1f-sql_class.h-19700101030959-jnqnbrjyqsvgncsibnumsmg3lyi7pa5s
sql/sql_lex.cc sp1f-sql_lex.cc-19700101030959-4pizwlu5rqkti27gcwsvxkawq6bc2kph
sql/sql_lex.h sp1f-sql_lex.h-19700101030959-sgldb2sooc7twtw5q7pgjx7qzqiaa3sn
sql/sql_list.h sp1f-sql_list.h-19700101030959-hyddr5nvvtrgbk7llgnah4i4bf6ugspn
sql/sql_parse.cc sp1f-sql_parse.cc-19700101030959-ehcre3rwhv5l3mlxqhaxg36ujenxnrcd
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/sql_show.cc sp1f-sql_show.cc-19700101030959-umlljfnpplg452h7reeyqr4xnbmlkvfj
sql/strfunc.cc sp1f-strfunc.cc-20031103120156-rnws3w4cqo456ougd7imfvrm2shcf25b
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
storage/maria/CMakeLists.txt sp1f-cmakelists.txt-20060904145307-qtvi5bxnxyt7nzs4gtpsyte5vv3fwm2i
storage/maria/ma_rt_index.c sp1f-ma_rt_index.c-20060411134435-knxi5ehzzeww7thlm3ppvtx6v3cppiao
storage/myisam/mi_extra.c sp1f-mi_extra.c-19700101030959-y5yhfph7parv3zdbew22zss3ho57dgvr
storage/myisam/mi_locking.c sp1f-mi_locking.c-19700101030959-27f7n7juexzv4qrhkiwcoylzh4yfibbl
storage/pbxt/ChangeLog changelog-20090326121724-x683v32twzr3fi0y-3
storage/pbxt/src/Makefile.am makefile.am-20090326121724-x683v32twzr3fi0y-13
storage/pbxt/src/cache_xt.cc cache_xt.cc-20090326121724-x683v32twzr3fi0y-16
storage/pbxt/src/cache_xt.h cache_xt.h-20090326121724-x683v32twzr3fi0y-17
storage/pbxt/src/ccutils_xt.cc ccutils_xt.cc-20090326121724-x683v32twzr3fi0y-18
storage/pbxt/src/database_xt.cc database_xt.cc-20090326121724-x683v32twzr3fi0y-20
storage/pbxt/src/datadic_xt.cc datadic_xt.cc-20090326121724-x683v32twzr3fi0y-22
storage/pbxt/src/datadic_xt.h datadic_xt.h-20090326121724-x683v32twzr3fi0y-23
storage/pbxt/src/datalog_xt.cc datalog_xt.cc-20090326121724-x683v32twzr3fi0y-24
storage/pbxt/src/datalog_xt.h datalog_xt.h-20090326121724-x683v32twzr3fi0y-25
storage/pbxt/src/discover_xt.cc discover_xt.cc-20090326121724-x683v32twzr3fi0y-26
storage/pbxt/src/filesys_xt.cc filesys_xt.cc-20090326121724-x683v32twzr3fi0y-28
storage/pbxt/src/filesys_xt.h filesys_xt.h-20090326121724-x683v32twzr3fi0y-29
storage/pbxt/src/ha_pbxt.cc ha_pbxt.cc-20090326121724-x683v32twzr3fi0y-30
storage/pbxt/src/ha_pbxt.h ha_pbxt.h-20090326121724-x683v32twzr3fi0y-31
storage/pbxt/src/ha_xtsys.cc ha_xtsys.cc-20090326121724-x683v32twzr3fi0y-32
storage/pbxt/src/ha_xtsys.h ha_xtsys.h-20090326121724-x683v32twzr3fi0y-33
storage/pbxt/src/hashtab_xt.cc hashtab_xt.cc-20090326121724-x683v32twzr3fi0y-34
storage/pbxt/src/heap_xt.cc heap_xt.cc-20090326121724-x683v32twzr3fi0y-36
storage/pbxt/src/heap_xt.h heap_xt.h-20090326121724-x683v32twzr3fi0y-37
storage/pbxt/src/index_xt.cc index_xt.cc-20090326121724-x683v32twzr3fi0y-38
storage/pbxt/src/index_xt.h index_xt.h-20090326121724-x683v32twzr3fi0y-39
storage/pbxt/src/lock_xt.cc lock_xt.cc-20090326121724-x683v32twzr3fi0y-42
storage/pbxt/src/lock_xt.h lock_xt.h-20090326121724-x683v32twzr3fi0y-43
storage/pbxt/src/locklist_xt.cc locklist_xt.cc-20090326121724-x683v32twzr3fi0y-44
storage/pbxt/src/locklist_xt.h locklist_xt.h-20090326121724-x683v32twzr3fi0y-45
storage/pbxt/src/memory_xt.cc memory_xt.cc-20090326121724-x683v32twzr3fi0y-46
storage/pbxt/src/memory_xt.h memory_xt.h-20090326121724-x683v32twzr3fi0y-47
storage/pbxt/src/myxt_xt.cc myxt_xt.cc-20090326121724-x683v32twzr3fi0y-48
storage/pbxt/src/myxt_xt.h myxt_xt.h-20090326121724-x683v32twzr3fi0y-49
storage/pbxt/src/pbms.h pbms.h-20090326121724-x683v32twzr3fi0y-50
storage/pbxt/src/pthread_xt.cc pthread_xt.cc-20090326121724-x683v32twzr3fi0y-51
storage/pbxt/src/restart_xt.cc restart_xt.cc-20090326121724-x683v32twzr3fi0y-53
storage/pbxt/src/restart_xt.h restart_xt.h-20090326121724-x683v32twzr3fi0y-54
storage/pbxt/src/sortedlist_xt.cc sortedlist_xt.cc-20090326121724-x683v32twzr3fi0y-55
storage/pbxt/src/strutil_xt.cc strutil_xt.cc-20090326121724-x683v32twzr3fi0y-59
storage/pbxt/src/systab_xt.cc systab_xt.cc-20090326121724-x683v32twzr3fi0y-61
storage/pbxt/src/systab_xt.h systab_xt.h-20090326121724-x683v32twzr3fi0y-62
storage/pbxt/src/tabcache_xt.cc tabcache_xt.cc-20090326121724-x683v32twzr3fi0y-63
storage/pbxt/src/tabcache_xt.h tabcache_xt.h-20090326121724-x683v32twzr3fi0y-64
storage/pbxt/src/table_xt.cc table_xt.cc-20090326121724-x683v32twzr3fi0y-65
storage/pbxt/src/table_xt.h table_xt.h-20090326121724-x683v32twzr3fi0y-66
storage/pbxt/src/thread_xt.cc thread_xt.cc-20090326121724-x683v32twzr3fi0y-67
storage/pbxt/src/thread_xt.h thread_xt.h-20090326121724-x683v32twzr3fi0y-68
storage/pbxt/src/trace_xt.cc trace_xt.cc-20090326121724-x683v32twzr3fi0y-69
storage/pbxt/src/trace_xt.h trace_xt.h-20090326121724-x683v32twzr3fi0y-70
storage/pbxt/src/util_xt.cc util_xt.cc-20090326121724-x683v32twzr3fi0y-71
storage/pbxt/src/xaction_xt.cc xaction_xt.cc-20090326121724-x683v32twzr3fi0y-74
storage/pbxt/src/xaction_xt.h xaction_xt.h-20090326121724-x683v32twzr3fi0y-75
storage/pbxt/src/xactlog_xt.cc xactlog_xt.cc-20090326121724-x683v32twzr3fi0y-76
storage/pbxt/src/xactlog_xt.h xactlog_xt.h-20090326121724-x683v32twzr3fi0y-77
storage/pbxt/src/xt_config.h xt_config.h-20090326121724-x683v32twzr3fi0y-78
storage/pbxt/src/xt_defs.h xt_defs.h-20090326121724-x683v32twzr3fi0y-79
storage/pbxt/src/xt_errno.h xt_errno.h-20090326121724-x683v32twzr3fi0y-80
storage/xtradb/Makefile.am makefile.am-20081201061010-zymrrwrczns2vrex-4
storage/xtradb/buf/buf0flu.c buf0flu.c-20081201061010-zymrrwrczns2vrex-50
storage/xtradb/fil/fil0fil.c fil0fil.c-20081201061010-zymrrwrczns2vrex-63
storage/xtradb/handler/i_s.cc i_s.cc-20081201061010-zymrrwrczns2vrex-73
storage/xtradb/mtr/mtr0mtr.c mtr0mtr.c-20081201061010-zymrrwrczns2vrex-277
storage/xtradb/srv/srv0srv.c srv0srv.c-20081201061010-zymrrwrczns2vrex-347
storage/xtradb/srv/srv0start.c srv0start.c-20081201061010-zymrrwrczns2vrex-348
strings/decimal.c sp1f-decimal.c-20041018120639-qqm4oeadwhbdhuxgwlc657il4tu44n6m
support-files/compiler_warnings.supp sp1f-disabled_compiler_wa-20070110170439-wzgdkamsch2nrkgvcp2hytmquqeorohi
unittest/mysys/waiting_threads-t.c waiting_threadst.c-20080623170213-r8baqa2porlpxzq1-5
------------------------------------------------------------
revno: 2719.1.12
revision-id: igor(a)mysql.com-20090909181131-6jb3y48zxnz42zyb
parent: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
committer: Igor Babaev <igor(a)mysql.com>
branch nick: maria-5.1-fix-windows
timestamp: Wed 2009-09-09 11:11:31 -0700
message:
Added a missing dependency to build maria lib
modified:
storage/maria/CMakeLists.txt sp1f-cmakelists.txt-20060904145307-qtvi5bxnxyt7nzs4gtpsyte5vv3fwm2i
------------------------------------------------------------
revno: 2719.1.11
revision-id: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
parent: knielsen(a)knielsen-hq.org-20090907071238-98y89j10q2jgyd52
committer: knielsen(a)knielsen-hq.org
branch nick: work
timestamp: Mon 2009-09-07 15:13:58 +0200
message:
Fix that thd->query_plan_flags was not initialised prior to executing non-query commands
(also fixes a Valgrind warning in Buildbot).
modified:
sql/sql_parse.cc sp1f-sql_parse.cc-19700101030959-ehcre3rwhv5l3mlxqhaxg36ujenxnrcd
------------------------------------------------------------
revno: 2719.1.10
revision-id: knielsen(a)knielsen-hq.org-20090907071238-98y89j10q2jgyd52
parent: psergey(a)askmonty.org-20090906154940-bdwpqtizq0v9wb4q
committer: knielsen(a)knielsen-hq.org
branch nick: work
timestamp: Mon 2009-09-07 09:12:38 +0200
message:
Fix compiler warnings.
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.1.9
revision-id: psergey(a)askmonty.org-20090906154940-bdwpqtizq0v9wb4q
parent: knielsen(a)knielsen-hq.org-20090904074534-tyya4rfwjgvbt5ch
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-fixwindows
timestamp: Sun 2009-09-06 19:49:40 +0400
message:
Fix ha_maria to compile on Windows
modified:
storage/maria/ma_rt_index.c sp1f-ma_rt_index.c-20060411134435-knxi5ehzzeww7thlm3ppvtx6v3cppiao
------------------------------------------------------------
revno: 2719.1.8
revision-id: knielsen(a)knielsen-hq.org-20090904074534-tyya4rfwjgvbt5ch
parent: monty(a)mysql.com-20090903145646-0cis6dfct2c8gee7
parent: knielsen(a)knielsen-hq.org-20090904072934-eonhxvxy96mxirqi
committer: knielsen(a)knielsen-hq.org
branch nick: work
timestamp: Fri 2009-09-04 09:45:34 +0200
message:
Merge.
- PBXT fixes.
- MBug#423035 fix.
- Compiler warning fixes.
added:
mysql-test/r/mysqld_option_err.result mysqld_option_err.re-20090903125847-d311kra14ipqyi2o-1
mysql-test/t/mysqld_option_err.test mysqld_option_err.te-20090903125847-d311kra14ipqyi2o-2
support-files/ccfilter ccfilter-20090903130840-kgbb9xgba492f3z4-1
modified:
client/mysqlbinlog.cc sp1f-mysqlbinlog.cc-19700101030959-b3vgyo47ljent5mhbyj6ik33bi4bukad
config/ac-macros/misc.m4 sp1f-misc.m4-20041202010047-eedogcoko3sndn3nhe3krdole675uamr
extra/yassl/include/yassl_int.hpp sp1f-yassl_int.hpp-20050428132307-uqdopnog3njo2nicimdqmt7fco35gagn
extra/yassl/src/handshake.cpp sp1f-handshake.cpp-20050428132310-fmtqaesmdo3txlm6dnhqmef23jgyrmih
extra/yassl/src/yassl_imp.cpp sp1f-yassl_imp.cpp-20050428132311-kbtb6sfna2iec57rsngc5wa76djjl76p
extra/yassl/src/yassl_int.cpp sp1f-yassl_int.cpp-20050428132311-hjgnphdasudo2ncxocoetyb7twor5fpq
extra/yassl/taocrypt/include/modes.hpp sp1f-modes.hpp-20050428132316-td6cnzuargeuvsxs2vqse74d62tzbxtj
extra/yassl/taocrypt/src/asn.cpp sp1f-asn.cpp-20050428132318-okq6hllvtur6rcfg4gc5pbxebunf764v
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysys/my_compress.c sp1f-my_compress.c-19700101030959-vzixvitc7v3ffbqmhphz73hoeuaxmspm
mysys/my_getopt.c sp1f-my_getopt.c-20020125212008-5ppwsdqmfhny46gxkjxph22zh3phetir
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
storage/pbxt/ChangeLog changelog-20090326121724-x683v32twzr3fi0y-3
storage/pbxt/src/Makefile.am makefile.am-20090326121724-x683v32twzr3fi0y-13
storage/pbxt/src/datalog_xt.cc datalog_xt.cc-20090326121724-x683v32twzr3fi0y-24
storage/pbxt/src/discover_xt.cc discover_xt.cc-20090326121724-x683v32twzr3fi0y-26
storage/pbxt/src/filesys_xt.cc filesys_xt.cc-20090326121724-x683v32twzr3fi0y-28
storage/pbxt/src/ha_pbxt.cc ha_pbxt.cc-20090326121724-x683v32twzr3fi0y-30
storage/pbxt/src/memory_xt.cc memory_xt.cc-20090326121724-x683v32twzr3fi0y-46
storage/pbxt/src/myxt_xt.cc myxt_xt.cc-20090326121724-x683v32twzr3fi0y-48
storage/pbxt/src/myxt_xt.h myxt_xt.h-20090326121724-x683v32twzr3fi0y-49
storage/pbxt/src/restart_xt.cc restart_xt.cc-20090326121724-x683v32twzr3fi0y-53
storage/pbxt/src/restart_xt.h restart_xt.h-20090326121724-x683v32twzr3fi0y-54
storage/pbxt/src/strutil_xt.cc strutil_xt.cc-20090326121724-x683v32twzr3fi0y-59
storage/pbxt/src/tabcache_xt.cc tabcache_xt.cc-20090326121724-x683v32twzr3fi0y-63
storage/pbxt/src/thread_xt.cc thread_xt.cc-20090326121724-x683v32twzr3fi0y-67
storage/pbxt/src/xaction_xt.cc xaction_xt.cc-20090326121724-x683v32twzr3fi0y-74
storage/pbxt/src/xactlog_xt.cc xactlog_xt.cc-20090326121724-x683v32twzr3fi0y-76
storage/pbxt/src/xt_errno.h xt_errno.h-20090326121724-x683v32twzr3fi0y-80
storage/xtradb/fil/fil0fil.c fil0fil.c-20081201061010-zymrrwrczns2vrex-63
storage/xtradb/mtr/mtr0mtr.c mtr0mtr.c-20081201061010-zymrrwrczns2vrex-277
storage/xtradb/srv/srv0srv.c srv0srv.c-20081201061010-zymrrwrczns2vrex-347
storage/xtradb/srv/srv0start.c srv0start.c-20081201061010-zymrrwrczns2vrex-348
strings/decimal.c sp1f-decimal.c-20041018120639-qqm4oeadwhbdhuxgwlc657il4tu44n6m
support-files/compiler_warnings.supp sp1f-disabled_compiler_wa-20070110170439-wzgdkamsch2nrkgvcp2hytmquqeorohi
------------------------------------------------------------
revno: 2719.6.4
revision-id: knielsen(a)knielsen-hq.org-20090904072934-eonhxvxy96mxirqi
parent: knielsen(a)knielsen-hq.org-20090903132022-os4s3x7l68smzet2
committer: knielsen(a)knielsen-hq.org
branch nick: bug-422550
timestamp: Fri 2009-09-04 09:29:34 +0200
message:
PBXT fixes.
- Silence a compiler warning.
- Don't build pbms object files now that we disabled pbms.
modified:
storage/pbxt/src/Makefile.am makefile.am-20090326121724-x683v32twzr3fi0y-13
storage/pbxt/src/datalog_xt.cc datalog_xt.cc-20090326121724-x683v32twzr3fi0y-24
------------------------------------------------------------
revno: 2719.6.3
revision-id: knielsen(a)knielsen-hq.org-20090903132022-os4s3x7l68smzet2
parent: knielsen(a)knielsen-hq.org-20090903130502-7t4rceyb52rjtm0a
committer: knielsen(a)knielsen-hq.org
branch nick: bug-422550
timestamp: Thu 2009-09-03 15:20:22 +0200
message:
Fix most Compiler warnings seen in buildbot.
Add suppressions for a few warnings that cannot be meaningfully fixed by
MariaDB developers.
Changes for XtraDB, PBXT, and YaSSL also submitted upstream.
Also add a `ccfilter` wrapper that can be used to filter out suppressed warnings in a
local build (to check that new warnings are not introduced).
added:
support-files/ccfilter ccfilter-20090903130840-kgbb9xgba492f3z4-1
modified:
client/mysqlbinlog.cc sp1f-mysqlbinlog.cc-19700101030959-b3vgyo47ljent5mhbyj6ik33bi4bukad
config/ac-macros/misc.m4 sp1f-misc.m4-20041202010047-eedogcoko3sndn3nhe3krdole675uamr
extra/yassl/include/yassl_int.hpp sp1f-yassl_int.hpp-20050428132307-uqdopnog3njo2nicimdqmt7fco35gagn
extra/yassl/src/handshake.cpp sp1f-handshake.cpp-20050428132310-fmtqaesmdo3txlm6dnhqmef23jgyrmih
extra/yassl/src/yassl_imp.cpp sp1f-yassl_imp.cpp-20050428132311-kbtb6sfna2iec57rsngc5wa76djjl76p
extra/yassl/src/yassl_int.cpp sp1f-yassl_int.cpp-20050428132311-hjgnphdasudo2ncxocoetyb7twor5fpq
extra/yassl/taocrypt/include/modes.hpp sp1f-modes.hpp-20050428132316-td6cnzuargeuvsxs2vqse74d62tzbxtj
extra/yassl/taocrypt/src/asn.cpp sp1f-asn.cpp-20050428132318-okq6hllvtur6rcfg4gc5pbxebunf764v
mysys/my_compress.c sp1f-my_compress.c-19700101030959-vzixvitc7v3ffbqmhphz73hoeuaxmspm
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/strfunc.cc sp1f-strfunc.cc-20031103120156-rnws3w4cqo456ougd7imfvrm2shcf25b
storage/pbxt/src/discover_xt.cc discover_xt.cc-20090326121724-x683v32twzr3fi0y-26
storage/xtradb/fil/fil0fil.c fil0fil.c-20081201061010-zymrrwrczns2vrex-63
storage/xtradb/mtr/mtr0mtr.c mtr0mtr.c-20081201061010-zymrrwrczns2vrex-277
storage/xtradb/srv/srv0srv.c srv0srv.c-20081201061010-zymrrwrczns2vrex-347
storage/xtradb/srv/srv0start.c srv0start.c-20081201061010-zymrrwrczns2vrex-348
strings/decimal.c sp1f-decimal.c-20041018120639-qqm4oeadwhbdhuxgwlc657il4tu44n6m
support-files/compiler_warnings.supp sp1f-disabled_compiler_wa-20070110170439-wzgdkamsch2nrkgvcp2hytmquqeorohi
------------------------------------------------------------
revno: 2719.6.2
revision-id: knielsen(a)knielsen-hq.org-20090903130502-7t4rceyb52rjtm0a
parent: paul.mccullagh(a)primebase.org-20090903061503-xxq1y709oooeg4m6
committer: knielsen(a)knielsen-hq.org
branch nick: bug-422550
timestamp: Thu 2009-09-03 15:05:02 +0200
message:
MBug#423035: error in parsing enum value for plugin variable in mysqld command-line option
Fix parsing of invalid plugin enum option value.
Previous patch to fix plugin enum option parsing on big-endian introduced another bug due
to incorrect comparison of unsigned value. This would cause an incorrect value to be
parsed as value 0.
See also MySQL Bug#41010 and Bug#32034.
added:
mysql-test/r/mysqld_option_err.result mysqld_option_err.re-20090903125847-d311kra14ipqyi2o-1
mysql-test/t/mysqld_option_err.test mysqld_option_err.te-20090903125847-d311kra14ipqyi2o-2
modified:
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysys/my_getopt.c sp1f-my_getopt.c-20020125212008-5ppwsdqmfhny46gxkjxph22zh3phetir
------------------------------------------------------------
revno: 2719.6.1
revision-id: paul.mccullagh(a)primebase.org-20090903061503-xxq1y709oooeg4m6
parent: psergey(a)askmonty.org-20090901115954-nge2brzh3akkmtlz
committer: Paul McCullagh <paul.mccullagh(a)primebase.org>
branch nick: trunk
timestamp: Thu 2009-09-03 08:15:03 +0200
message:
Fixed a bug that caused MySQL to crash on shutdown, if startup fails due to an incorrect command line parameter
modified:
storage/pbxt/ChangeLog changelog-20090326121724-x683v32twzr3fi0y-3
storage/pbxt/src/datalog_xt.cc datalog_xt.cc-20090326121724-x683v32twzr3fi0y-24
storage/pbxt/src/filesys_xt.cc filesys_xt.cc-20090326121724-x683v32twzr3fi0y-28
storage/pbxt/src/ha_pbxt.cc ha_pbxt.cc-20090326121724-x683v32twzr3fi0y-30
storage/pbxt/src/memory_xt.cc memory_xt.cc-20090326121724-x683v32twzr3fi0y-46
storage/pbxt/src/myxt_xt.cc myxt_xt.cc-20090326121724-x683v32twzr3fi0y-48
storage/pbxt/src/myxt_xt.h myxt_xt.h-20090326121724-x683v32twzr3fi0y-49
storage/pbxt/src/restart_xt.cc restart_xt.cc-20090326121724-x683v32twzr3fi0y-53
storage/pbxt/src/restart_xt.h restart_xt.h-20090326121724-x683v32twzr3fi0y-54
storage/pbxt/src/strutil_xt.cc strutil_xt.cc-20090326121724-x683v32twzr3fi0y-59
storage/pbxt/src/tabcache_xt.cc tabcache_xt.cc-20090326121724-x683v32twzr3fi0y-63
storage/pbxt/src/thread_xt.cc thread_xt.cc-20090326121724-x683v32twzr3fi0y-67
storage/pbxt/src/xaction_xt.cc xaction_xt.cc-20090326121724-x683v32twzr3fi0y-74
storage/pbxt/src/xactlog_xt.cc xactlog_xt.cc-20090326121724-x683v32twzr3fi0y-76
storage/pbxt/src/xt_errno.h xt_errno.h-20090326121724-x683v32twzr3fi0y-80
------------------------------------------------------------
revno: 2719.1.7
revision-id: monty(a)mysql.com-20090903145646-0cis6dfct2c8gee7
parent: psergey(a)askmonty.org-20090902084228-3ttm7xalqglzgjvs
parent: monty(a)mysql.com-20090903140538-hqrn5qvchi1ss5o8
committer: Michael Widenius <monty(a)mysql.com>
branch nick: maria
timestamp: Thu 2009-09-03 17:56:46 +0300
message:
Updated documentation files to reflect MariaDB and not the Maria storage engine or MySQL
Added (rewritten) patch from Percona to get extended statistics in slow.log:
- Added handling of 'set' variables to set_var.cc. Changed sql_mode to use this
- Added extra logging to slow log of 'Thread_id, Schema, Query Cache hit, Rows sent and Rows examined'
- Added optional logging to slow log, through log_slow_verbosity, of query plan statistics
- Added new user variables log_slow_rate_limit, log_slow_verbosity, log_slow_filter
- Added log-slow-file as synonym for 'slow-log-file', as most slow-log variables starts with 'log-slow'
- Added log-slow-time as synonym for long-query-time
Some trivial MyISAM optimizations:
- In prepare for drop, flush key blocks
- Don't call mi_lock_database if my_disable_locking is used
******
Automatic merge with trunc
******
Updated documentation files to reflect MariaDB and not the Maria storage engine or MySQL
Added (rewritten) patch from Percona to get extended statistics in slow.log:
- Added handling of 'set' variables to set_var.cc. Changed sql_mode to use this
- Added extra logging to slow log of 'Thread_id, Schema, Query Cache hit, Rows sent and Rows examined'
- Added optional logging to slow log, through log_slow_verbosity, of query plan statistics
- Added new user variables log_slow_rate_limit, log_slow_verbosity, log_slow_filter
- Added log-slow-file as synonym for 'slow-log-file', as most slow-log variables starts with 'log-slow'
- Added log-slow-time as synonym for long-query-time
Some trivial MyISAM optimizations:
- In prepare for drop, flush key blocks
- Don't call mi_lock_database if my_disable_locking is used
added:
mysql-test/r/log_slow.result log_slow.result-20090903130213-g4uekoxftd69o7cr-1
mysql-test/t/log_slow.test log_slow.test-20090903130444-i0i8h0k5qt9xatcx-2
sql/log_slow.h log_slow.h-20090903130444-i0i8h0k5qt9xatcx-1
modified:
KNOWN_BUGS.txt sp1f-known_bugs.txt-20080112111653-zzflmm3ji2fwldqezas63y53pssozvb7
README sp1f-readme-19700101030959-ipf4glwvob7zbr3norl5feyy3jwy3sod
mysql-test/r/variables.result sp1f-variables.result-20001228015635-w5m2doorn7gzhyyhpqrlqsupnwn6f6xh
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/event_data_objects.cc sp1f-event_timed.cc-20051205104456-ckd2gzuwhr4u5umqbncmt43nvv45pxmf
sql/events.cc sp1f-event.cc-20051202122200-as66hughd4bhrhu2uqbb6mpogou2yihk
sql/filesort.cc sp1f-filesort.cc-19700101030959-mfm2vmdgqqru7emm2meeecleb2q3zdso
sql/log.cc sp1f-log.cc-19700101030959-r3hdfovek4kl6nd64ovoaknmirota6bq
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/set_var.cc sp1f-set_var.cc-20020723153119-nwbpg2pwpz55pfw7yfzaxt7hsszzy7y3
sql/set_var.h sp1f-set_var.h-20020723153119-2yomygq3s4xjbqvuue3cdlpbjtj3kwmk
sql/slave.cc sp1f-slave.cc-19700101030959-a636aj3mjxgu7fnznrg5kt77p3u2bvhh
sql/sp_head.cc sp1f-sp_head.cc-20021208185920-jtgc5wvyqdnu2gvcdus3gazrfhxbofxd
sql/sql_cache.cc sp1f-sql_cache.cc-19700101030959-74bsqwcnhboovijsogcenqana5inu6wo
sql/sql_class.cc sp1f-sql_class.cc-19700101030959-rpotnweaff2pikkozh3butrf7mv3oero
sql/sql_class.h sp1f-sql_class.h-19700101030959-jnqnbrjyqsvgncsibnumsmg3lyi7pa5s
sql/sql_parse.cc sp1f-sql_parse.cc-19700101030959-ehcre3rwhv5l3mlxqhaxg36ujenxnrcd
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_show.cc sp1f-sql_show.cc-19700101030959-umlljfnpplg452h7reeyqr4xnbmlkvfj
sql/strfunc.cc sp1f-strfunc.cc-20031103120156-rnws3w4cqo456ougd7imfvrm2shcf25b
storage/myisam/mi_extra.c sp1f-mi_extra.c-19700101030959-y5yhfph7parv3zdbew22zss3ho57dgvr
storage/myisam/mi_locking.c sp1f-mi_locking.c-19700101030959-27f7n7juexzv4qrhkiwcoylzh4yfibbl
------------------------------------------------------------
revno: 2719.5.1
revision-id: monty(a)mysql.com-20090903140538-hqrn5qvchi1ss5o8
parent: knielsen(a)knielsen-hq.org-20090831112339-td6t7ljy4w2oamvt
committer: Michael Widenius <monty(a)mysql.com>
branch nick: mysql-maria
timestamp: Thu 2009-09-03 17:05:38 +0300
message:
Updated documentation files to reflect MariaDB and not the Maria storage engine or MySQL
Added (rewritten) patch from Percona to get extended statistics in slow.log:
- Added handling of 'set' variables to set_var.cc. Changed sql_mode to use this
- Added extra logging to slow log of 'Thread_id, Schema, Query Cache hit, Rows sent and Rows examined'
- Added optional logging to slow log, through log_slow_verbosity, of query plan statistics
- Added new user variables log_slow_rate_limit, log_slow_verbosity, log_slow_filter
- Added log-slow-file as synonym for 'slow-log-file', as most slow-log variables starts with 'log-slow'
- Added log-slow-time as synonym for long-query-time
Some trivial MyISAM optimizations:
- In prepare for drop, flush key blocks
- Don't call mi_lock_database if my_disable_locking is used
added:
mysql-test/r/log_slow.result log_slow.result-20090903130213-g4uekoxftd69o7cr-1
mysql-test/t/log_slow.test log_slow.test-20090903130444-i0i8h0k5qt9xatcx-2
sql/log_slow.h log_slow.h-20090903130444-i0i8h0k5qt9xatcx-1
modified:
KNOWN_BUGS.txt sp1f-known_bugs.txt-20080112111653-zzflmm3ji2fwldqezas63y53pssozvb7
README sp1f-readme-19700101030959-ipf4glwvob7zbr3norl5feyy3jwy3sod
mysql-test/r/variables.result sp1f-variables.result-20001228015635-w5m2doorn7gzhyyhpqrlqsupnwn6f6xh
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/event_data_objects.cc sp1f-event_timed.cc-20051205104456-ckd2gzuwhr4u5umqbncmt43nvv45pxmf
sql/events.cc sp1f-event.cc-20051202122200-as66hughd4bhrhu2uqbb6mpogou2yihk
sql/filesort.cc sp1f-filesort.cc-19700101030959-mfm2vmdgqqru7emm2meeecleb2q3zdso
sql/log.cc sp1f-log.cc-19700101030959-r3hdfovek4kl6nd64ovoaknmirota6bq
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/set_var.cc sp1f-set_var.cc-20020723153119-nwbpg2pwpz55pfw7yfzaxt7hsszzy7y3
sql/set_var.h sp1f-set_var.h-20020723153119-2yomygq3s4xjbqvuue3cdlpbjtj3kwmk
sql/slave.cc sp1f-slave.cc-19700101030959-a636aj3mjxgu7fnznrg5kt77p3u2bvhh
sql/sp_head.cc sp1f-sp_head.cc-20021208185920-jtgc5wvyqdnu2gvcdus3gazrfhxbofxd
sql/sql_cache.cc sp1f-sql_cache.cc-19700101030959-74bsqwcnhboovijsogcenqana5inu6wo
sql/sql_class.cc sp1f-sql_class.cc-19700101030959-rpotnweaff2pikkozh3butrf7mv3oero
sql/sql_class.h sp1f-sql_class.h-19700101030959-jnqnbrjyqsvgncsibnumsmg3lyi7pa5s
sql/sql_parse.cc sp1f-sql_parse.cc-19700101030959-ehcre3rwhv5l3mlxqhaxg36ujenxnrcd
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_show.cc sp1f-sql_show.cc-19700101030959-umlljfnpplg452h7reeyqr4xnbmlkvfj
sql/strfunc.cc sp1f-strfunc.cc-20031103120156-rnws3w4cqo456ougd7imfvrm2shcf25b
storage/myisam/mi_extra.c sp1f-mi_extra.c-19700101030959-y5yhfph7parv3zdbew22zss3ho57dgvr
storage/myisam/mi_locking.c sp1f-mi_locking.c-19700101030959-27f7n7juexzv4qrhkiwcoylzh4yfibbl
------------------------------------------------------------
revno: 2719.1.6
revision-id: psergey(a)askmonty.org-20090902084228-3ttm7xalqglzgjvs
parent: psergey(a)askmonty.org-20090902084018-lv3qet4nhooc4cnu
parent: psergey(a)askmonty.org-20090901222415-c3142zs9nstn2af0
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1
timestamp: Wed 2009-09-02 12:42:28 +0400
message:
MWL#17: Table elimination
Pre-push merge to main. This should give the complete WL entry diff.
added:
mysql-test/lib/process-purecov-annotations.pl processpurecovannota-20090825145959-3tgucpo20ms8b5yb-1
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql-bench/test-table-elimination.sh testtableelimination-20090616194329-gai92muve732qknl-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
modified:
.bzrignore sp1f-ignore-20001018235455-q4gxfbritt5f42nwix354ufpsvrf5ebj
include/my_global.h sp1f-my_global.h-20010915021246-4vawdgfw4vg3tuxq6mejt7lrchcnceha
libmysqld/Makefile.am sp1f-makefile.am-20010411110351-26htpk3ynkyh7pkfvnshztqrxx3few4g
mysql-test/lib/mtr_gcov.pl sp1f-mtr_gcov.pl-20041230152646-g7ukx2aojk6vlfbrurijutdkqshwljue
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
mysql-test/r/mysql-bug41486.result mysqlbug41486.result-20090323135900-fobg67a3yzg0b7e8-1
mysql-test/r/ps_11bugs.result sp1f-ps_11bugs.result-20041012140047-4pktjlfeq27q6bxqfdsbcszr5nybv6zz
mysql-test/r/select.result sp1f-select.result-20010103001548-znkoalxem6wchsbxizfosjhpfmhfyxuk
mysql-test/r/subselect.result sp1f-subselect.result-20020512204640-zgegcsgavnfd7t7eyrf7ibuqomsw7uzo
mysql-test/r/union.result sp1f-unions_one.result-20010725122836-ofxtwraxeohz7whhrmfdz57sl4a5prmp
mysql-test/t/index_merge_myisam.test sp1f-index_merge_myisam.t-20060816114353-3p3p5fylcfj754j3d3td6zs6shnc5nu3
mysql-test/t/mysql-bug41486.test mysqlbug41486.test-20090323135900-fobg67a3yzg0b7e8-2
mysql-test/valgrind.supp sp1f-valgrind.supp-20050406142216-yg7xhezklqhgqlc3inx36vbghodhbovy
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_cmpfunc.cc sp1f-item_cmpfunc.cc-19700101030959-hrk7pi2n6qpwxauufnkizirsoucdcx2e
sql/item_cmpfunc.h sp1f-item_cmpfunc.h-19700101030959-pcvbjplo4e4ng7ibynfhcd6pjyem57gr
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_subselect.h sp1f-item_subselect.h-20020512204640-qdg77wil56cxyhtc2bjjdrppxq3wqgh3
sql/item_sum.cc sp1f-item_sum.cc-19700101030959-4woo23bi3am2t2zvsddqbpxk7xbttdkm
sql/item_sum.h sp1f-item_sum.h-19700101030959-ecgohlekwm355wxl5fv4zzq3alalbwyl
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/sql_bitmap.h sp1f-sql_bitmap.h-20031024204444-g4eiad7vopzqxe2trxmt3fn3xsvnomvj
sql/sql_lex.cc sp1f-sql_lex.cc-19700101030959-4pizwlu5rqkti27gcwsvxkawq6bc2kph
sql/sql_lex.h sp1f-sql_lex.h-19700101030959-sgldb2sooc7twtw5q7pgjx7qzqiaa3sn
sql/sql_list.h sp1f-sql_list.h-19700101030959-hyddr5nvvtrgbk7llgnah4i4bf6ugspn
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
------------------------------------------------------------
revno: 2719.3.31
revision-id: psergey(a)askmonty.org-20090901222415-c3142zs9nstn2af0
parent: psergey(a)askmonty.org-20090901222000-st4iicaxopeex2s1
parent: psergey(a)askmonty.org-20090901214116-n5bzyqlhgl0lamno
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r12
timestamp: Wed 2009-09-02 02:24:15 +0400
message:
Merge
modified:
include/my_global.h sp1f-my_global.h-20010915021246-4vawdgfw4vg3tuxq6mejt7lrchcnceha
sql-bench/test-table-elimination.sh testtableelimination-20090616194329-gai92muve732qknl-1
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_cmpfunc.cc sp1f-item_cmpfunc.cc-19700101030959-hrk7pi2n6qpwxauufnkizirsoucdcx2e
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_subselect.h sp1f-item_subselect.h-20020512204640-qdg77wil56cxyhtc2bjjdrppxq3wqgh3
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
sql/sql_list.h sp1f-sql_list.h-19700101030959-hyddr5nvvtrgbk7llgnah4i4bf6ugspn
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2719.4.2
revision-id: psergey(a)askmonty.org-20090901214116-n5bzyqlhgl0lamno
parent: psergey(a)askmonty.org-20090831200209-7gbnkr7omjbgld1x
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Wed 2009-09-02 01:41:16 +0400
message:
MWL#17: Table elimination
- Address review feedback R4: better comments, formatting
modified:
sql-bench/test-table-elimination.sh testtableelimination-20090616194329-gai92muve732qknl-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.4.1
revision-id: psergey(a)askmonty.org-20090831200209-7gbnkr7omjbgld1x
parent: psergey(a)askmonty.org-20090826210140-y2pba3ucdwnvr956
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Tue 2009-09-01 00:02:09 +0400
message:
MWL#17: Table-elimination
- Addressing review feedback, generation 4.
modified:
include/my_global.h sp1f-my_global.h-20010915021246-4vawdgfw4vg3tuxq6mejt7lrchcnceha
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_cmpfunc.cc sp1f-item_cmpfunc.cc-19700101030959-hrk7pi2n6qpwxauufnkizirsoucdcx2e
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_subselect.h sp1f-item_subselect.h-20020512204640-qdg77wil56cxyhtc2bjjdrppxq3wqgh3
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
sql/sql_list.h sp1f-sql_list.h-19700101030959-hyddr5nvvtrgbk7llgnah4i4bf6ugspn
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2719.3.30
revision-id: psergey(a)askmonty.org-20090901222000-st4iicaxopeex2s1
parent: psergey(a)askmonty.org-20090826210140-y2pba3ucdwnvr956
parent: psergey(a)askmonty.org-20090901115954-nge2brzh3akkmtlz
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r12
timestamp: Wed 2009-09-02 02:20:00 +0400
message:
Merge
removed:
storage/pbxt/src/streaming_xt.cc streaming_xt.cc-20090326121724-x683v32twzr3fi0y-57
storage/pbxt/src/streaming_xt.h streaming_xt.h-20090326121724-x683v32twzr3fi0y-58
added:
mysql-test/suite/pbxt/t/lowercase_table_grant-master.opt lowercase_table_gran-20090828130852-3duj73io0g345hxj-1
mysql-test/suite/pbxt/t/lowercase_table_qcache-master.opt lowercase_table_qcac-20090828130852-3duj73io0g345hxj-2
mysql-test/suite/pbxt/t/lowercase_view-master.opt lowercase_viewmaster-20090828130852-3duj73io0g345hxj-3
mysql-test/suite/pbxt/t/udf-master.opt udfmaster.opt-20090828130852-3duj73io0g345hxj-4
storage/pbxt/src/pbms_enabled.cc pbms_enabled.cc-20090818074502-tybcb62hp1kdrk3l-1
storage/pbxt/src/pbms_enabled.h pbms_enabled.h-20090818074502-tybcb62hp1kdrk3l-2
modified:
BUILD/Makefile.am sp1f-makefile.am-20020102192940-dza66ux2yxyklupzjz4q3km3hvye5rnj
libmysql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-3bbprkzqdl3gopcnlt3evmaikau67bcq
mysql-test/suite/pbxt/r/alter_table.result alter_table.result-20090402100035-4ilk9i91sh65vjcb-5
mysql-test/suite/pbxt/r/analyze.result analyze.result-20090402100035-4ilk9i91sh65vjcb-7
mysql-test/suite/pbxt/r/auto_increment.result auto_increment.resul-20090402100035-4ilk9i91sh65vjcb-9
mysql-test/suite/pbxt/r/delete.result delete.result-20090402100035-4ilk9i91sh65vjcb-31
mysql-test/suite/pbxt/r/distinct.result distinct.result-20090402100035-4ilk9i91sh65vjcb-34
mysql-test/suite/pbxt/r/func_group.result func_group.result-20090402100035-4ilk9i91sh65vjcb-50
mysql-test/suite/pbxt/r/func_math.result func_math.result-20090402100035-4ilk9i91sh65vjcb-55
mysql-test/suite/pbxt/r/func_str.result func_str.result-20090402100035-4ilk9i91sh65vjcb-61
mysql-test/suite/pbxt/r/grant.result grant.result-20090402100035-4ilk9i91sh65vjcb-65
mysql-test/suite/pbxt/r/group_min_max.result group_min_max.result-20090402100035-4ilk9i91sh65vjcb-69
mysql-test/suite/pbxt/r/join.result join.result-20090402100035-4ilk9i91sh65vjcb-79
mysql-test/suite/pbxt/r/join_nested.result join_nested.result-20090402100035-4ilk9i91sh65vjcb-81
mysql-test/suite/pbxt/r/key.result key.result-20090402100035-4ilk9i91sh65vjcb-83
mysql-test/suite/pbxt/r/key_cache.result key_cache.result-20090402100035-4ilk9i91sh65vjcb-84
mysql-test/suite/pbxt/r/key_diff.result key_diff.result-20090402100035-4ilk9i91sh65vjcb-85
mysql-test/suite/pbxt/r/lowercase_view.result lowercase_view.resul-20090402100035-4ilk9i91sh65vjcb-96
mysql-test/suite/pbxt/r/mysqlshow.result mysqlshow.result-20090402100035-4ilk9i91sh65vjcb-101
mysql-test/suite/pbxt/r/null.result null.result-20090402100035-4ilk9i91sh65vjcb-104
mysql-test/suite/pbxt/r/null_key.result null_key.result-20090402100035-4ilk9i91sh65vjcb-105
mysql-test/suite/pbxt/r/partition_pruning.result partition_pruning.re-20090402100035-4ilk9i91sh65vjcb-117
mysql-test/suite/pbxt/r/pbxt_bugs.result pbxt_bugs.result-20090402100035-4ilk9i91sh65vjcb-120
mysql-test/suite/pbxt/r/pbxt_ref_int.result pbxt_ref_int.result-20090402100035-4ilk9i91sh65vjcb-123
mysql-test/suite/pbxt/r/preload.result preload.result-20090402100035-4ilk9i91sh65vjcb-127
mysql-test/suite/pbxt/r/ps_1general.result ps_1general.result-20090402100035-4ilk9i91sh65vjcb-130
mysql-test/suite/pbxt/r/range.result range.result-20090402100035-4ilk9i91sh65vjcb-132
mysql-test/suite/pbxt/r/schema.result schema.result-20090402100035-4ilk9i91sh65vjcb-138
mysql-test/suite/pbxt/r/select.result select.result-20090402100035-4ilk9i91sh65vjcb-139
mysql-test/suite/pbxt/r/select_safe.result select_safe.result-20090402100035-4ilk9i91sh65vjcb-141
mysql-test/suite/pbxt/r/subselect.result subselect.result-20090402100035-4ilk9i91sh65vjcb-146
mysql-test/suite/pbxt/r/type_enum.result type_enum.result-20090402100035-4ilk9i91sh65vjcb-155
mysql-test/suite/pbxt/r/type_ranges.result type_ranges.result-20090402100035-4ilk9i91sh65vjcb-159
mysql-test/suite/pbxt/r/type_timestamp.result type_timestamp.resul-20090402100035-4ilk9i91sh65vjcb-162
mysql-test/suite/pbxt/r/union.result union.result-20090402100035-4ilk9i91sh65vjcb-166
mysql-test/suite/pbxt/r/view_grant.result view_grant.result-20090402100035-4ilk9i91sh65vjcb-169
mysql-test/suite/pbxt/t/auto_increment.test auto_increment.test-20090402100035-4ilk9i91sh65vjcb-176
mysql-test/suite/pbxt/t/delete.test delete.test-20090402100035-4ilk9i91sh65vjcb-198
mysql-test/suite/pbxt/t/join_nested.test join_nested.test-20090402100035-4ilk9i91sh65vjcb-248
mysql-test/suite/pbxt/t/null.test null.test-20090402100035-4ilk9i91sh65vjcb-271
mysql-test/suite/pbxt/t/pbxt_bugs.test pbxt_bugs.test-20090402100035-4ilk9i91sh65vjcb-287
mysql-test/suite/pbxt/t/rename.test rename.test-20090402100035-4ilk9i91sh65vjcb-301
mysql-test/suite/pbxt/t/schema.test schema.test-20090402100035-4ilk9i91sh65vjcb-305
mysql-test/suite/pbxt/t/type_enum.test type_enum.test-20090402100035-4ilk9i91sh65vjcb-322
mysql-test/suite/pbxt/t/union.test union.test-20090402100035-4ilk9i91sh65vjcb-333
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
storage/pbxt/ChangeLog changelog-20090326121724-x683v32twzr3fi0y-3
storage/pbxt/src/Makefile.am makefile.am-20090326121724-x683v32twzr3fi0y-13
storage/pbxt/src/cache_xt.cc cache_xt.cc-20090326121724-x683v32twzr3fi0y-16
storage/pbxt/src/cache_xt.h cache_xt.h-20090326121724-x683v32twzr3fi0y-17
storage/pbxt/src/ccutils_xt.cc ccutils_xt.cc-20090326121724-x683v32twzr3fi0y-18
storage/pbxt/src/database_xt.cc database_xt.cc-20090326121724-x683v32twzr3fi0y-20
storage/pbxt/src/datadic_xt.cc datadic_xt.cc-20090326121724-x683v32twzr3fi0y-22
storage/pbxt/src/datadic_xt.h datadic_xt.h-20090326121724-x683v32twzr3fi0y-23
storage/pbxt/src/datalog_xt.cc datalog_xt.cc-20090326121724-x683v32twzr3fi0y-24
storage/pbxt/src/datalog_xt.h datalog_xt.h-20090326121724-x683v32twzr3fi0y-25
storage/pbxt/src/discover_xt.cc discover_xt.cc-20090326121724-x683v32twzr3fi0y-26
storage/pbxt/src/filesys_xt.cc filesys_xt.cc-20090326121724-x683v32twzr3fi0y-28
storage/pbxt/src/filesys_xt.h filesys_xt.h-20090326121724-x683v32twzr3fi0y-29
storage/pbxt/src/ha_pbxt.cc ha_pbxt.cc-20090326121724-x683v32twzr3fi0y-30
storage/pbxt/src/ha_pbxt.h ha_pbxt.h-20090326121724-x683v32twzr3fi0y-31
storage/pbxt/src/ha_xtsys.cc ha_xtsys.cc-20090326121724-x683v32twzr3fi0y-32
storage/pbxt/src/ha_xtsys.h ha_xtsys.h-20090326121724-x683v32twzr3fi0y-33
storage/pbxt/src/hashtab_xt.cc hashtab_xt.cc-20090326121724-x683v32twzr3fi0y-34
storage/pbxt/src/heap_xt.cc heap_xt.cc-20090326121724-x683v32twzr3fi0y-36
storage/pbxt/src/heap_xt.h heap_xt.h-20090326121724-x683v32twzr3fi0y-37
storage/pbxt/src/index_xt.cc index_xt.cc-20090326121724-x683v32twzr3fi0y-38
storage/pbxt/src/index_xt.h index_xt.h-20090326121724-x683v32twzr3fi0y-39
storage/pbxt/src/lock_xt.cc lock_xt.cc-20090326121724-x683v32twzr3fi0y-42
storage/pbxt/src/lock_xt.h lock_xt.h-20090326121724-x683v32twzr3fi0y-43
storage/pbxt/src/locklist_xt.cc locklist_xt.cc-20090326121724-x683v32twzr3fi0y-44
storage/pbxt/src/locklist_xt.h locklist_xt.h-20090326121724-x683v32twzr3fi0y-45
storage/pbxt/src/memory_xt.cc memory_xt.cc-20090326121724-x683v32twzr3fi0y-46
storage/pbxt/src/memory_xt.h memory_xt.h-20090326121724-x683v32twzr3fi0y-47
storage/pbxt/src/myxt_xt.cc myxt_xt.cc-20090326121724-x683v32twzr3fi0y-48
storage/pbxt/src/myxt_xt.h myxt_xt.h-20090326121724-x683v32twzr3fi0y-49
storage/pbxt/src/pbms.h pbms.h-20090326121724-x683v32twzr3fi0y-50
storage/pbxt/src/pthread_xt.cc pthread_xt.cc-20090326121724-x683v32twzr3fi0y-51
storage/pbxt/src/restart_xt.cc restart_xt.cc-20090326121724-x683v32twzr3fi0y-53
storage/pbxt/src/restart_xt.h restart_xt.h-20090326121724-x683v32twzr3fi0y-54
storage/pbxt/src/sortedlist_xt.cc sortedlist_xt.cc-20090326121724-x683v32twzr3fi0y-55
storage/pbxt/src/strutil_xt.cc strutil_xt.cc-20090326121724-x683v32twzr3fi0y-59
storage/pbxt/src/systab_xt.cc systab_xt.cc-20090326121724-x683v32twzr3fi0y-61
storage/pbxt/src/systab_xt.h systab_xt.h-20090326121724-x683v32twzr3fi0y-62
storage/pbxt/src/tabcache_xt.cc tabcache_xt.cc-20090326121724-x683v32twzr3fi0y-63
storage/pbxt/src/tabcache_xt.h tabcache_xt.h-20090326121724-x683v32twzr3fi0y-64
storage/pbxt/src/table_xt.cc table_xt.cc-20090326121724-x683v32twzr3fi0y-65
storage/pbxt/src/table_xt.h table_xt.h-20090326121724-x683v32twzr3fi0y-66
storage/pbxt/src/thread_xt.cc thread_xt.cc-20090326121724-x683v32twzr3fi0y-67
storage/pbxt/src/thread_xt.h thread_xt.h-20090326121724-x683v32twzr3fi0y-68
storage/pbxt/src/trace_xt.cc trace_xt.cc-20090326121724-x683v32twzr3fi0y-69
storage/pbxt/src/trace_xt.h trace_xt.h-20090326121724-x683v32twzr3fi0y-70
storage/pbxt/src/util_xt.cc util_xt.cc-20090326121724-x683v32twzr3fi0y-71
storage/pbxt/src/xaction_xt.cc xaction_xt.cc-20090326121724-x683v32twzr3fi0y-74
storage/pbxt/src/xaction_xt.h xaction_xt.h-20090326121724-x683v32twzr3fi0y-75
storage/pbxt/src/xactlog_xt.cc xactlog_xt.cc-20090326121724-x683v32twzr3fi0y-76
storage/pbxt/src/xactlog_xt.h xactlog_xt.h-20090326121724-x683v32twzr3fi0y-77
storage/pbxt/src/xt_config.h xt_config.h-20090326121724-x683v32twzr3fi0y-78
storage/pbxt/src/xt_defs.h xt_defs.h-20090326121724-x683v32twzr3fi0y-79
storage/xtradb/Makefile.am makefile.am-20081201061010-zymrrwrczns2vrex-4
storage/xtradb/btr/btr0cur.c btr0cur.c-20081201061010-zymrrwrczns2vrex-45
storage/xtradb/buf/buf0buddy.c buf0buddy.c-20081201061010-zymrrwrczns2vrex-48
storage/xtradb/buf/buf0flu.c buf0flu.c-20081201061010-zymrrwrczns2vrex-50
storage/xtradb/fil/fil0fil.c fil0fil.c-20081201061010-zymrrwrczns2vrex-63
storage/xtradb/handler/i_s.cc i_s.cc-20081201061010-zymrrwrczns2vrex-73
storage/xtradb/srv/srv0srv.c srv0srv.c-20081201061010-zymrrwrczns2vrex-347
strings/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-zpsnblto443qz4bb5okg23rsacehr4d2
unittest/mysys/waiting_threads-t.c waiting_threadst.c-20080623170213-r8baqa2porlpxzq1-5
------------------------------------------------------------
revno: 2719.3.29
revision-id: psergey(a)askmonty.org-20090826210140-y2pba3ucdwnvr956
parent: psergey(a)askmonty.org-20090825150255-46i5gvl2ctd0jcm2
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11-gcov
timestamp: Thu 2009-08-27 01:01:40 +0400
message:
MWL#17: Table elimination:
- Fix a trivial problem when OR-merging two multi-equalities
- Amend testsuite to provide full gcov coverage
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.28
revision-id: psergey(a)askmonty.org-20090825150255-46i5gvl2ctd0jcm2
parent: psergey(a)askmonty.org-20090825145915-rxwmfczgqe69r5ju
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11-gcov
timestamp: Tue 2009-08-25 18:02:55 +0300
message:
Gcov support improvements
- add process-gcov-annotations.pl script that processes .gcov files
according to purecov annotations in source code
- add --gcov-src-dir=subdir option to mysql-test-run so that one can
do gcov processing only for source files in a certain directory.
added:
mysql-test/lib/process-purecov-annotations.pl processpurecovannota-20090825145959-3tgucpo20ms8b5yb-1
modified:
mysql-test/lib/mtr_gcov.pl sp1f-mtr_gcov.pl-20041230152646-g7ukx2aojk6vlfbrurijutdkqshwljue
mysql-test/mysql-test-run.pl sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
------------------------------------------------------------
revno: 2719.3.27
revision-id: psergey(a)askmonty.org-20090825145915-rxwmfczgqe69r5ju
parent: psergey(a)askmonty.org-20090825103822-ldmjinfdh7ymc35r
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11-gcov
timestamp: Tue 2009-08-25 17:59:15 +0300
message:
MWL#17: Table elimination
- Mark gcov deadcode
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.26
revision-id: psergey(a)askmonty.org-20090825103822-ldmjinfdh7ymc35r
parent: psergey(a)askmonty.org-20090825092750-mnmatimn7cxm4rl8
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11-gcov
timestamp: Tue 2009-08-25 13:38:22 +0300
message:
MWL#17: Table elimination
- More test coverage
- Remove unused code
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.25
revision-id: psergey(a)askmonty.org-20090825092750-mnmatimn7cxm4rl8
parent: psergey(a)askmonty.org-20090824191048-xev0gm1miw6ezz2r
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11-gcov
timestamp: Tue 2009-08-25 12:27:50 +0300
message:
MWL#17: Table elimination
- Add more testcases.
- Fix trivial compile failure
- Remove handling of "column IN (one_element)". This is converted to equality
elsewhere
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.24
revision-id: psergey(a)askmonty.org-20090824191048-xev0gm1miw6ezz2r
parent: psergey(a)askmonty.org-20090824081242-32o90vv8awk27sut
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Mon 2009-08-24 22:10:48 +0300
message:
MWL#17: Table elimination: last fixes
- Add an @@optimizer_switch flag for table_elimination for debug build
- Better comments
modified:
mysql-test/t/index_merge_myisam.test sp1f-index_merge_myisam.t-20060816114353-3p3p5fylcfj754j3d3td6zs6shnc5nu3
sql/mysql_priv.h sp1f-mysql_priv.h-19700101030959-4fl65tqpop5zfgxaxkqotu2fa2ree5ci
sql/mysqld.cc sp1f-mysqld.cc-19700101030959-zpswdvekpvixxzxf7gdtofzel7nywtfj
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.23
revision-id: psergey(a)askmonty.org-20090824081242-32o90vv8awk27sut
parent: psergey(a)askmonty.org-20090821133606-2t7hib7wuctqller
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Mon 2009-08-24 10:12:42 +0200
message:
MWL#17: Table elimination
- Correctly handle the case where we have multi-table DELETE and a table
that we're deleting from looks like it could be eliminated.
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.22
revision-id: psergey(a)askmonty.org-20090821133606-2t7hib7wuctqller
parent: psergey(a)askmonty.org-20090821074822-6x2gv01r9ltt2bhc
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Fri 2009-08-21 15:36:06 +0200
message:
MWL#17: Table elimination
- Remove a piece of code that's not needed anymore.
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.21
revision-id: psergey(a)askmonty.org-20090821074822-6x2gv01r9ltt2bhc
parent: psergey(a)askmonty.org-20090820155102-5zvm1m6idmie9mmv
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Fri 2009-08-21 09:48:22 +0200
message:
MWL#17: Table elimination
- More testcases
- Set correct dependencies for non-bound multi-equalities.
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.20
revision-id: psergey(a)askmonty.org-20090820155102-5zvm1m6idmie9mmv
parent: psergey(a)askmonty.org-20090819120659-0ndd6mqxeetgee2n
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Thu 2009-08-20 17:51:02 +0200
message:
MWL#17: Table elimination
- Multiple-equality handling
modified:
sql/item_cmpfunc.h sp1f-item_cmpfunc.h-19700101030959-pcvbjplo4e4ng7ibynfhcd6pjyem57gr
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.19
revision-id: psergey(a)askmonty.org-20090819120659-0ndd6mqxeetgee2n
parent: psergey(a)askmonty.org-20090819101838-55ys0h923olqz4q9
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Wed 2009-08-19 15:06:59 +0300
message:
Variable/function renames
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.18
revision-id: psergey(a)askmonty.org-20090819101838-55ys0h923olqz4q9
parent: psergey(a)askmonty.org-20090818221948-f2mg0szfqrve06f9
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Wed 2009-08-19 13:18:38 +0300
message:
MWL#17: Table elimination
- Use Table_elimination only for functional dependency checking for
individual objects and rename it to Func_dep_analyzer
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.17
revision-id: psergey(a)askmonty.org-20090818221948-f2mg0szfqrve06f9
parent: psergey(a)askmonty.org-20090818211810-48v6pb8dt0sqkysi
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Wed 2009-08-19 01:19:48 +0300
message:
More code cleanups
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.16
revision-id: psergey(a)askmonty.org-20090818211810-48v6pb8dt0sqkysi
parent: psergey(a)askmonty.org-20090818150151-uef38y50m8m1mgnu
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Wed 2009-08-19 00:18:10 +0300
message:
MWL#17: Table elimination
- Better comments
- Switch from "type" enum and switch to virtual functions for member funcs.
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.15
revision-id: psergey(a)askmonty.org-20090818150151-uef38y50m8m1mgnu
parent: psergey(a)askmonty.org-20090818130358-akd84j4m2i91lw5a
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Tue 2009-08-18 18:01:51 +0300
message:
MWL#17: Table elimination
- Code cleanup
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.14
revision-id: psergey(a)askmonty.org-20090818130358-akd84j4m2i91lw5a
parent: psergey(a)askmonty.org-20090817160724-fmmrmwp8zorzn82q
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r11
timestamp: Tue 2009-08-18 16:03:58 +0300
message:
MWL#17: Table elimination
- Switch from trying to eliminate all tables at once (which didn't work)
to the original approach of bottom-up elimination.
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.13
revision-id: psergey(a)askmonty.org-20090817160724-fmmrmwp8zorzn82q
parent: psergey(a)askmonty.org-20090817150229-jy461nqbmk8nzhha
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Mon 2009-08-17 19:07:24 +0300
message:
MWL#17: Table elimination
- More testcases
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
------------------------------------------------------------
revno: 2719.3.12
revision-id: psergey(a)askmonty.org-20090817150229-jy461nqbmk8nzhha
parent: psergey(a)askmonty.org-20090816180159-z3lfkjpjfsm7zbp0
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Mon 2009-08-17 18:02:29 +0300
message:
MWL#17: Table elimination
- More dbug printouts
- More testcases
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.11
revision-id: psergey(a)askmonty.org-20090816180159-z3lfkjpjfsm7zbp0
parent: psergey(a)askmonty.org-20090816143547-16hyle50tbt31xen
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Sun 2009-08-16 21:01:59 +0300
message:
MWL#17: Table elimination
- More comments
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.10
revision-id: psergey(a)askmonty.org-20090816143547-16hyle50tbt31xen
parent: psergey(a)askmonty.org-20090816124331-gd53m2alc0jb3ws4
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Sun 2009-08-16 17:35:47 +0300
message:
MWL#17: Table elimination
- Better comments
- More OOM checks
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2719.3.9
revision-id: psergey(a)askmonty.org-20090816124331-gd53m2alc0jb3ws4
parent: psergey(a)askmonty.org-20090816121708-v42h3mehvoy4c7yu
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Sun 2009-08-16 15:43:31 +0300
message:
- Better comments
- Add OOM error checking
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.8
revision-id: psergey(a)askmonty.org-20090816121708-v42h3mehvoy4c7yu
parent: psergey(a)askmonty.org-20090816091549-da84w3nlmx8prmvm
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Sun 2009-08-16 15:17:08 +0300
message:
MWL#17: Table elimination
- Address review feedback: change expression analyzer used to be a copy-paste
of ref analyzer. ref analyzer, besides doing ref analysis, also collected
info about keys which had sargable predicates. We didn't need that part here.
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.7
revision-id: psergey(a)askmonty.org-20090816091549-da84w3nlmx8prmvm
parent: psergey(a)askmonty.org-20090816072524-w9fu2hy23pjwlr8z
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Sun 2009-08-16 12:15:49 +0300
message:
MWL#17: Table elimination
- code cleanup
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.6
revision-id: psergey(a)askmonty.org-20090816072524-w9fu2hy23pjwlr8z
parent: psergey(a)askmonty.org-20090815153912-q47vfp1j22ilmup2
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10-vg
timestamp: Sun 2009-08-16 10:25:24 +0300
message:
MWL#17: Table elimination
- Fix trivial valgrind failures that shown up after review
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.5
revision-id: psergey(a)askmonty.org-20090815153912-q47vfp1j22ilmup2
parent: psergey(a)askmonty.org-20090815121442-706m9ujn8km4u4y1
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Sat 2009-08-15 18:39:12 +0300
message:
MWL#17: Table elimination
- Review feedback, more variable renames
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.4
revision-id: psergey(a)askmonty.org-20090815121442-706m9ujn8km4u4y1
parent: psergey(a)askmonty.org-20090815102953-7s0jb470ibwq58qz
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Sat 2009-08-15 16:14:42 +0400
message:
Fix trivial typo
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.3
revision-id: psergey(a)askmonty.org-20090815102953-7s0jb470ibwq58qz
parent: psergey(a)askmonty.org-20090815060803-0yvp5mmgo87emykp
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Sat 2009-08-15 14:29:53 +0400
message:
MWL#17: Table elimination
Continue with addressing review feedback part two:
- rename enum members
- add checking for out of memory errors on allocation
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.2
revision-id: psergey(a)askmonty.org-20090815060803-0yvp5mmgo87emykp
parent: psergey(a)askmonty.org-20090813211212-jghejwxsl6adtopl
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Sat 2009-08-15 10:08:03 +0400
message:
MWL#17: Address 2nd post-review feedback
- Switch from uniform graph to bipartite graph with two kinds of nodes:
"values" (tables and fields) and "modules" (t.col=func(...) equalities,
multi-equalities, unique keys, inner sides of outer joins).
- Rename functions, classes, etc.
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2719.3.1
revision-id: psergey(a)askmonty.org-20090813211212-jghejwxsl6adtopl
parent: knielsen(a)knielsen-hq.org-20090805072137-wg97dcem1cxnzt3p
parent: psergey(a)askmonty.org-20090813204452-o8whzlbio19cgkyv
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r10
timestamp: Fri 2009-08-14 01:12:12 +0400
message:
Merge maria-5.1 -> maria-5.1-table-elimination
added:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql-bench/test-table-elimination.sh testtableelimination-20090616194329-gai92muve732qknl-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
modified:
.bzrignore sp1f-ignore-20001018235455-q4gxfbritt5f42nwix354ufpsvrf5ebj
libmysqld/Makefile.am sp1f-makefile.am-20010411110351-26htpk3ynkyh7pkfvnshztqrxx3few4g
mysql-test/r/mysql-bug41486.result mysqlbug41486.result-20090323135900-fobg67a3yzg0b7e8-1
mysql-test/r/ps_11bugs.result sp1f-ps_11bugs.result-20041012140047-4pktjlfeq27q6bxqfdsbcszr5nybv6zz
mysql-test/r/select.result sp1f-select.result-20010103001548-znkoalxem6wchsbxizfosjhpfmhfyxuk
mysql-test/r/subselect.result sp1f-subselect.result-20020512204640-zgegcsgavnfd7t7eyrf7ibuqomsw7uzo
mysql-test/r/union.result sp1f-unions_one.result-20010725122836-ofxtwraxeohz7whhrmfdz57sl4a5prmp
mysql-test/t/mysql-bug41486.test mysqlbug41486.test-20090323135900-fobg67a3yzg0b7e8-2
mysql-test/valgrind.supp sp1f-valgrind.supp-20050406142216-yg7xhezklqhgqlc3inx36vbghodhbovy
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_subselect.h sp1f-item_subselect.h-20020512204640-qdg77wil56cxyhtc2bjjdrppxq3wqgh3
sql/item_sum.cc sp1f-item_sum.cc-19700101030959-4woo23bi3am2t2zvsddqbpxk7xbttdkm
sql/item_sum.h sp1f-item_sum.h-19700101030959-ecgohlekwm355wxl5fv4zzq3alalbwyl
sql/sql_bitmap.h sp1f-sql_bitmap.h-20031024204444-g4eiad7vopzqxe2trxmt3fn3xsvnomvj
sql/sql_lex.cc sp1f-sql_lex.cc-19700101030959-4pizwlu5rqkti27gcwsvxkawq6bc2kph
sql/sql_lex.h sp1f-sql_lex.h-19700101030959-sgldb2sooc7twtw5q7pgjx7qzqiaa3sn
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
------------------------------------------------------------
revno: 2707.1.27
revision-id: psergey(a)askmonty.org-20090813204452-o8whzlbio19cgkyv
parent: psergey(a)askmonty.org-20090813191053-g1xfeieoti4bqgbc
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r5
timestamp: Fri 2009-08-14 00:44:52 +0400
message:
MWL#17: Table elimination
- More function renames, added comments
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2707.1.26
revision-id: psergey(a)askmonty.org-20090813191053-g1xfeieoti4bqgbc
parent: psergey(a)askmonty.org-20090813093613-hy7tdlsgdy83xszq
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r5
timestamp: Thu 2009-08-13 23:10:53 +0400
message:
MWL#17: Table elimination
- Better comments
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2707.1.25
revision-id: psergey(a)askmonty.org-20090813093613-hy7tdlsgdy83xszq
parent: psergey(a)askmonty.org-20090813092402-jlqucf6nultxlv4b
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r5
timestamp: Thu 2009-08-13 13:36:13 +0400
message:
MWL#17: Table elimination
Fixes after post-review fixes:
- Don't search for tables in JOIN_TAB array. it's not initialized yet.
use select_lex->leaf_tables instead.
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2707.1.24
revision-id: psergey(a)askmonty.org-20090813092402-jlqucf6nultxlv4b
parent: psergey(a)askmonty.org-20090813000143-dukzk352hjywidk7
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r5
timestamp: Thu 2009-08-13 13:24:02 +0400
message:
MWL#17: Table elimination
- Post-postreview changes fix: Do set NESTED_JOIN::n_tables to number of
tables left after elimination.
modified:
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2707.1.23
revision-id: psergey(a)askmonty.org-20090813000143-dukzk352hjywidk7
parent: psergey(a)askmonty.org-20090812234302-10es7qmf0m09ahbq
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r5
timestamp: Thu 2009-08-13 04:01:43 +0400
message:
MWL#17: Table elimination
- When making inferences "field is bound" -> "key is bound", do check
that the field is part of the key
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2707.1.22
revision-id: psergey(a)askmonty.org-20090812234302-10es7qmf0m09ahbq
parent: psergey(a)askmonty.org-20090812223421-w4xyzj7azqgo83ps
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r5
timestamp: Thu 2009-08-13 03:43:02 +0400
message:
MWL#17: Table elimination
- Continue addressing review feedback: remove "unusable KEYUSEs"
extension as it is no longer needed.
modified:
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
------------------------------------------------------------
revno: 2707.1.21
revision-id: psergey(a)askmonty.org-20090812223421-w4xyzj7azqgo83ps
parent: psergey(a)askmonty.org-20090708171038-9nyc3hcg1o7h8635
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-r5
timestamp: Thu 2009-08-13 02:34:21 +0400
message:
MWL#17: Table elimination
Address review feedback:
- Change from Wave-based approach (a-la const table detection) to
building and walking functional dependency graph.
- Change from piggy-backing on ref-access code and KEYUSE structures
to using our own expression analyzer.
modified:
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
sql/sql_bitmap.h sp1f-sql_bitmap.h-20031024204444-g4eiad7vopzqxe2trxmt3fn3xsvnomvj
------------------------------------------------------------
revno: 2707.1.20
revision-id: psergey(a)askmonty.org-20090708171038-9nyc3hcg1o7h8635
parent: psergey(a)askmonty.org-20090630132018-8qwou8bqiq5z1qjg
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Wed 2009-07-08 21:10:38 +0400
message:
MWL#17: Table elimination
- When collecting Item_subselect::refers_to, put references to the correct
subselect entry.
modified:
sql/sql_lex.cc sp1f-sql_lex.cc-19700101030959-4pizwlu5rqkti27gcwsvxkawq6bc2kph
------------------------------------------------------------
revno: 2707.1.19
revision-id: psergey(a)askmonty.org-20090630132018-8qwou8bqiq5z1qjg
parent: psergey(a)askmonty.org-20090630131100-r6o8yqzse4yvny9l
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Tue 2009-06-30 17:20:18 +0400
message:
MWL#17: Table elimination
- More comments
- Renove old code
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
------------------------------------------------------------
revno: 2707.1.18
revision-id: psergey(a)askmonty.org-20090630131100-r6o8yqzse4yvny9l
parent: psergey(a)askmonty.org-20090629135115-472up9wsj0dq843i
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Tue 2009-06-30 17:11:00 +0400
message:
MWL#17: Table elimination
- Last fixes
modified:
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
------------------------------------------------------------
revno: 2707.1.17
revision-id: psergey(a)askmonty.org-20090629135115-472up9wsj0dq843i
parent: psergey(a)askmonty.org-20090625200729-u11xpwwn5ebddx09
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Mon 2009-06-29 17:51:15 +0400
message:
MWL#17: Table elimination
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
------------------------------------------------------------
revno: 2707.1.16
revision-id: psergey(a)askmonty.org-20090625200729-u11xpwwn5ebddx09
parent: psergey(a)askmonty.org-20090625100947-mg9xwnbeyyjgzl3w
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-movearound
timestamp: Fri 2009-06-26 00:07:29 +0400
message:
MWL#17: Table elimination
- Better comments, variable/function renames
modified:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
------------------------------------------------------------
revno: 2707.1.15
revision-id: psergey(a)askmonty.org-20090625100947-mg9xwnbeyyjgzl3w
parent: psergey(a)askmonty.org-20090624224414-71xqbljy8jf4z1qs
parent: psergey(a)askmonty.org-20090625100553-j1xenbz3o5nekiu2
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Thu 2009-06-25 14:09:47 +0400
message:
Automerge
added:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
modified:
.bzrignore sp1f-ignore-20001018235455-q4gxfbritt5f42nwix354ufpsvrf5ebj
libmysqld/Makefile.am sp1f-makefile.am-20010411110351-26htpk3ynkyh7pkfvnshztqrxx3few4g
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_sum.h sp1f-item_sum.h-19700101030959-ecgohlekwm355wxl5fv4zzq3alalbwyl
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
------------------------------------------------------------
revno: 2707.3.1
revision-id: psergey(a)askmonty.org-20090625100553-j1xenbz3o5nekiu2
parent: psergey(a)askmonty.org-20090624090104-c63mp3sfxcxytk0d
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-movearound
timestamp: Thu 2009-06-25 14:05:53 +0400
message:
MWL#17: Table elimination
- Moved table elimination code to sql/opt_table_elimination.cc
- Added comments
added:
sql/opt_table_elimination.cc opt_table_eliminatio-20090625095316-7ka9w3zr7n5114iv-1
modified:
.bzrignore sp1f-ignore-20001018235455-q4gxfbritt5f42nwix354ufpsvrf5ebj
libmysqld/Makefile.am sp1f-makefile.am-20010411110351-26htpk3ynkyh7pkfvnshztqrxx3few4g
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
sql/Makefile.am sp1f-makefile.am-19700101030959-xsjdiakci3nqcdd4xl4yomwdl5eo2f3q
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_sum.h sp1f-item_sum.h-19700101030959-ecgohlekwm355wxl5fv4zzq3alalbwyl
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
------------------------------------------------------------
revno: 2707.1.14
revision-id: psergey(a)askmonty.org-20090624224414-71xqbljy8jf4z1qs
parent: psergey(a)askmonty.org-20090624090104-c63mp3sfxcxytk0d
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Thu 2009-06-25 02:44:14 +0400
message:
MWL#17: Table elimination
- fix a typo bug in has_eqref_access_candidate()
- Adjust test to remove race condition
modified:
mysql-test/r/mysql-bug41486.result mysqlbug41486.result-20090323135900-fobg67a3yzg0b7e8-1
mysql-test/t/mysql-bug41486.test mysqlbug41486.test-20090323135900-fobg67a3yzg0b7e8-2
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
------------------------------------------------------------
revno: 2707.1.13
revision-id: psergey(a)askmonty.org-20090624090104-c63mp3sfxcxytk0d
parent: psergey(a)askmonty.org-20090623200613-w9dl8g41ysf51r80
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Wed 2009-06-24 13:01:04 +0400
message:
More comments
modified:
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2707.1.12
revision-id: psergey(a)askmonty.org-20090623200613-w9dl8g41ysf51r80
parent: psergey(a)askmonty.org-20090622114631-yop0q2p8ktmfnctm
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Wed 2009-06-24 00:06:13 +0400
message:
MWL#17: Table elimination
- More testcases
- Let add_ft_key() set keyuse->usable
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql-bench/test-table-elimination.sh testtableelimination-20090616194329-gai92muve732qknl-1
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2707.1.11
revision-id: psergey(a)askmonty.org-20090622114631-yop0q2p8ktmfnctm
parent: psergey(a)askmonty.org-20090617052739-37i1r8lip0m4ft9r
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Mon 2009-06-22 15:46:31 +0400
message:
MWL#17: Table elimination
- Make elimination check to be able detect cases like t.primary_key_col1=othertbl.col AND t.primary_key_col2=func(t.primary_key_col1).
These are needed to handle e.g. the case of func() being a correlated subquery that selects the latest value.
- If we've removed a condition with subquery predicate, EXPLAIN [EXTENDED] won't show the subquery anymore
modified:
sql/item.cc sp1f-item.cc-19700101030959-u7hxqopwpfly4kf5ctlyk2dvrq4l3dhn
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_subselect.cc sp1f-item_subselect.cc-20020512204640-qep43aqhsfrwkqmrobni6czc3fqj36oo
sql/item_subselect.h sp1f-item_subselect.h-20020512204640-qdg77wil56cxyhtc2bjjdrppxq3wqgh3
sql/item_sum.cc sp1f-item_sum.cc-19700101030959-4woo23bi3am2t2zvsddqbpxk7xbttdkm
sql/sql_lex.cc sp1f-sql_lex.cc-19700101030959-4pizwlu5rqkti27gcwsvxkawq6bc2kph
sql/sql_lex.h sp1f-sql_lex.h-19700101030959-sgldb2sooc7twtw5q7pgjx7qzqiaa3sn
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
------------------------------------------------------------
revno: 2707.1.10
revision-id: psergey(a)askmonty.org-20090617052739-37i1r8lip0m4ft9r
parent: psergey(a)askmonty.org-20090616204358-yjkyfxczsomrn9yn
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Wed 2009-06-17 09:27:39 +0400
message:
* Use excessive parentheses to stop compiler warning
* Fix test results to account for changes in previous cset
modified:
mysql-test/r/select.result sp1f-select.result-20010103001548-znkoalxem6wchsbxizfosjhpfmhfyxuk
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2707.1.9
revision-id: psergey(a)askmonty.org-20090616204358-yjkyfxczsomrn9yn
parent: psergey(a)askmonty.org-20090616195413-rfmi9un20za8gn8g
parent: psergey(a)askmonty.org-20090615162208-p4w8s8jo06bdz1vj
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Wed 2009-06-17 00:43:58 +0400
message:
* Merge
* Change valgrind suppression to work on valgrind 3.3.0
modified:
mysql-test/valgrind.supp sp1f-valgrind.supp-20050406142216-yg7xhezklqhgqlc3inx36vbghodhbovy
------------------------------------------------------------
revno: 2707.2.1
revision-id: psergey(a)askmonty.org-20090615162208-p4w8s8jo06bdz1vj
parent: psergey(a)askmonty.org-20090614205924-1vnfwbuo4brzyfhp
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-movearound
timestamp: Mon 2009-06-15 20:22:08 +0400
message:
Fix spurious valgrind warnings in rpl_trigger.test
modified:
mysql-test/valgrind.supp sp1f-valgrind.supp-20050406142216-yg7xhezklqhgqlc3inx36vbghodhbovy
------------------------------------------------------------
revno: 2707.1.8
revision-id: psergey(a)askmonty.org-20090616195413-rfmi9un20za8gn8g
parent: psergey(a)askmonty.org-20090614205924-1vnfwbuo4brzyfhp
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Tue 2009-06-16 23:54:13 +0400
message:
MWL#17: Table elimination
- Move eliminate_tables() to before constant table detection.
- First code for benchmark
added:
sql-bench/test-table-elimination.sh testtableelimination-20090616194329-gai92muve732qknl-1
modified:
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2707.1.7
revision-id: psergey(a)askmonty.org-20090614205924-1vnfwbuo4brzyfhp
parent: psergey(a)askmonty.org-20090614123504-jf4pcb333ojwaxfy
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Mon 2009-06-15 00:59:24 +0400
message:
MWL#17: Table elimination
- Fix print_join() to work both for EXPLAIN EXTENDED (after table elimination) and for
CREATE VIEW (after join->prepare() but without any optimization).
modified:
mysql-test/r/union.result sp1f-unions_one.result-20010725122836-ofxtwraxeohz7whhrmfdz57sl4a5prmp
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2707.1.6
revision-id: psergey(a)askmonty.org-20090614123504-jf4pcb333ojwaxfy
parent: psergey(a)askmonty.org-20090614100110-u7l54gk0b6zbtj50
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Sun 2009-06-14 16:35:04 +0400
message:
MWL#17: Table elimination
- Fix the previous cset: take into account that select_lex may be printed when
1. There is no select_lex->join at all (in that case, assume that no tables were eliminated)
2. select_lex->join exists but there was no JOIN::optimize() call yet. handle this by initializing join->eliminated really early.
modified:
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
------------------------------------------------------------
revno: 2707.1.5
revision-id: psergey(a)askmonty.org-20090614100110-u7l54gk0b6zbtj50
parent: psergey(a)askmonty.org-20090609211133-wfau2tgwo2vpgc5d
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Sun 2009-06-14 14:01:10 +0400
message:
MWL#17: Table elimination
- Do not show eliminated tables in the output of EXPLAIN EXTENDED
modified:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
------------------------------------------------------------
revno: 2707.1.4
revision-id: psergey(a)askmonty.org-20090609211133-wfau2tgwo2vpgc5d
parent: psergey(a)askmonty.org-20090608135546-ut1yrzbah4gdw6e6
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Wed 2009-06-10 01:11:33 +0400
message:
MWL#17: Table elimination
- Make elimination work with aggregate functions. The problem was that aggregate functions
reported all table bits in used_tables(), and that prevented table elimination. Fixed by
making aggregate functions return more correct value from used_tables().
modified:
mysql-test/r/ps_11bugs.result sp1f-ps_11bugs.result-20041012140047-4pktjlfeq27q6bxqfdsbcszr5nybv6zz
mysql-test/r/subselect.result sp1f-subselect.result-20020512204640-zgegcsgavnfd7t7eyrf7ibuqomsw7uzo
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
sql/item.h sp1f-item.h-19700101030959-rrkb43htudd62batmoteashkebcwykpa
sql/item_sum.cc sp1f-item_sum.cc-19700101030959-4woo23bi3am2t2zvsddqbpxk7xbttdkm
sql/item_sum.h sp1f-item_sum.h-19700101030959-ecgohlekwm355wxl5fv4zzq3alalbwyl
------------------------------------------------------------
revno: 2707.1.3
revision-id: psergey(a)askmonty.org-20090608135546-ut1yrzbah4gdw6e6
parent: psergey(a)askmonty.org-20090607182938-ycajee5ozg33b7c8
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim-fix
timestamp: Mon 2009-06-08 17:55:46 +0400
message:
Fix valgrind failure: provide an implementation of strmov_overlapp() that really can
handle overlapping.
added:
strings/strmov_overlapp.c strmov_overlapp.c-20090608135132-403c5p4dlnexqwxi-1
modified:
include/m_string.h sp1f-m_string.h-19700101030959-rraattbvw5ffkokv4sixxf3s7brqqaga
libmysql/Makefile.shared sp1f-makefile.shared-20000818182429-m3kdhxi23vorlqjct2y2hl3yw357jtxt
strings/Makefile.am sp1f-makefile.am-19700101030959-jfitkanzc3r4h2otoyaaprgqn7muf4ux
------------------------------------------------------------
revno: 2707.1.2
revision-id: psergey(a)askmonty.org-20090607182938-ycajee5ozg33b7c8
parent: psergey(a)askmonty.org-20090603182330-ll3gc91iowhtgb23
parent: psergey(a)askmonty.org-20090607182403-6sfpvdr7nkkekcy9
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1
timestamp: Sun 2009-06-07 22:29:38 +0400
message:
Merge MWL#17: Table elimination
modified:
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2705.2.2
revision-id: psergey(a)askmonty.org-20090607182403-6sfpvdr7nkkekcy9
parent: psergey(a)askmonty.org-20090603131045-c8jqhwlanli7eimv
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Sun 2009-06-07 22:24:03 +0400
message:
MWL#17: Table Elimination
- Fix trivial valgrind warning
modified:
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
------------------------------------------------------------
revno: 2707.1.1
revision-id: psergey(a)askmonty.org-20090603182330-ll3gc91iowhtgb23
parent: knielsen(a)knielsen-hq.org-20090602110359-n4q9gof38buucrny
parent: psergey(a)askmonty.org-20090603131045-c8jqhwlanli7eimv
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1
timestamp: Wed 2009-06-03 22:23:30 +0400
message:
Merge MWL#17 with maria/5.1
added:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
modified:
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
------------------------------------------------------------
revno: 2705.2.1
revision-id: psergey(a)askmonty.org-20090603131045-c8jqhwlanli7eimv
parent: knielsen(a)knielsen-hq.org-20090522175325-xpwm83ilnhqoqjz0
committer: Sergey Petrunia <psergey(a)askmonty.org>
branch nick: maria-5.1-table-elim
timestamp: Wed 2009-06-03 17:10:45 +0400
message:
MWL#17: Table elimination
- First code. Elimination works for simple cases, passes the testsuite.
- Known issues:
= No elimination is done for aggregate functions.
= EXPLAIN EXTENDED shows eliminated tables (I think it better not)
= No benchmark yet
= The code needs some polishing.
added:
mysql-test/r/table_elim.result table_elim.result-20090603125022-nge13y0ohk1g2tt2-1
mysql-test/t/table_elim.test table_elim.test-20090603125018-ka3vcfrm07bsldz8-1
modified:
sql/sql_select.cc sp1f-sql_select.cc-19700101030959-egb7whpkh76zzvikycs5nsnuviu4fdlb
sql/sql_select.h sp1f-sql_select.h-19700101030959-oqegfxr76xlgmrzd6qlevonoibfnwzoz
sql/table.h sp1f-table.h-19700101030959-dv72bajftxj5fbdjuajquappanuv2ija
------------------------------------------------------------
revno: 2719.1.5
revision-id: psergey(a)askmonty.org-20090902084018-lv3qet4nhooc4cnu
parent: psergey(a)askmonty.org-20090901115954-nge2brzh3akkmtlz
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1
timestamp: Wed 2009-09-02 12:40:18 +0400
message:
More comments
modified:
sql/opt_range.h sp1f-opt_range.h-19700101030959-c2qbh5kplyvzfgawblxt4md4ubdpxfdy
------------------------------------------------------------
revno: 2719.1.4
revision-id: psergey(a)askmonty.org-20090901115954-nge2brzh3akkmtlz
parent: knielsen(a)knielsen-hq.org-20090831112339-td6t7ljy4w2oamvt
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: maria-5.1-fixwindows
timestamp: Tue 2009-09-01 15:59:54 +0400
message:
Trivial fixes for windows compile failures
- Add strmov_overlapp.c where it's needed
- Add libevent where it is required
- Fix typo in unittest/mysys/waiting_threads-t.c
- fix xtradb C language source so that they have variable declarations before
any operators, as it is (or was?) required in C.
modified:
libmysql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-3bbprkzqdl3gopcnlt3evmaikau67bcq
sql/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-esoeu5kpdtwjvehkghwy6fzbleniq2wy
storage/xtradb/btr/btr0cur.c btr0cur.c-20081201061010-zymrrwrczns2vrex-45
storage/xtradb/buf/buf0buddy.c buf0buddy.c-20081201061010-zymrrwrczns2vrex-48
storage/xtradb/buf/buf0flu.c buf0flu.c-20081201061010-zymrrwrczns2vrex-50
storage/xtradb/fil/fil0fil.c fil0fil.c-20081201061010-zymrrwrczns2vrex-63
storage/xtradb/handler/i_s.cc i_s.cc-20081201061010-zymrrwrczns2vrex-73
storage/xtradb/srv/srv0srv.c srv0srv.c-20081201061010-zymrrwrczns2vrex-347
strings/CMakeLists.txt sp1f-cmakelists.txt-20060831175237-zpsnblto443qz4bb5okg23rsacehr4d2
unittest/mysys/waiting_threads-t.c waiting_threadst.c-20080623170213-r8baqa2porlpxzq1-5
------------------------------------------------------------
revno: 2719.1.3
revision-id: knielsen(a)knielsen-hq.org-20090831112339-td6t7ljy4w2oamvt
parent: knielsen(a)knielsen-hq.org-20090829194804-rfq9dbai99do12ub
parent: knielsen(a)knielsen-hq.org-20090831110744-ru07dzndci7cf92k
committer: knielsen(a)knielsen-hq.org
branch nick: work
timestamp: Mon 2009-08-31 13:23:39 +0200
message:
Merge Paul's maria-pbxt-rc2 branch into MariaDB.
Includes disabling PBMS (per Paul's recommendation) and test file fixes.
Signed-off-by: Kristian Nielsen <knielsen(a)knielsen-hq.org>
removed:
storage/pbxt/src/streaming_xt.cc streaming_xt.cc-20090326121724-x683v32twzr3fi0y-57
storage/pbxt/src/streaming_xt.h streaming_xt.h-20090326121724-x683v32twzr3fi0y-58
added:
mysql-test/suite/pbxt/t/lowercase_table_grant-master.opt lowercase_table_gran-20090828130852-3duj73io0g345hxj-1
mysql-test/suite/pbxt/t/lowercase_table_qcache-master.opt lowercase_table_qcac-20090828130852-3duj73io0g345hxj-2
mysql-test/suite/pbxt/t/lowercase_view-master.opt lowercase_viewmaster-20090828130852-3duj73io0g345hxj-3
mysql-test/suite/pbxt/t/udf-master.opt udfmaster.opt-20090828130852-3duj73io0g345hxj-4
storage/pbxt/src/pbms_enabled.cc pbms_enabled.cc-20090818074502-tybcb62hp1kdrk3l-1
storage/pbxt/src/pbms_enabled.h pbms_enabled.h-20090818074502-tybcb62hp1kdrk3l-2
modified:
mysql-test/suite/pbxt/r/alter_table.result alter_table.result-20090402100035-4ilk9i91sh65vjcb-5
mysql-test/suite/pbxt/r/analyze.result analyze.result-20090402100035-4ilk9i91sh65vjcb-7
mysql-test/suite/pbxt/r/auto_increment.result auto_increment.resul-20090402100035-4ilk9i91sh65vjcb-9
mysql-test/suite/pbxt/r/delete.result delete.result-20090402100035-4ilk9i91sh65vjcb-31
mysql-test/suite/pbxt/r/distinct.result distinct.result-20090402100035-4ilk9i91sh65vjcb-34
mysql-test/suite/pbxt/r/func_group.result func_group.result-20090402100035-4ilk9i91sh65vjcb-50
mysql-test/suite/pbxt/r/func_math.result func_math.result-20090402100035-4ilk9i91sh65vjcb-55
mysql-test/suite/pbxt/r/func_str.result func_str.result-20090402100035-4ilk9i91sh65vjcb-61
mysql-test/suite/pbxt/r/grant.result grant.result-20090402100035-4ilk9i91sh65vjcb-65
mysql-test/suite/pbxt/r/group_min_max.result group_min_max.result-20090402100035-4ilk9i91sh65vjcb-69
mysql-test/suite/pbxt/r/join.result join.result-20090402100035-4ilk9i91sh65vjcb-79
mysql-test/suite/pbxt/r/join_nested.result join_nested.result-20090402100035-4ilk9i91sh65vjcb-81
mysql-test/suite/pbxt/r/key.result key.result-20090402100035-4ilk9i91sh65vjcb-83
mysql-test/suite/pbxt/r/key_cache.result key_cache.result-20090402100035-4ilk9i91sh65vjcb-84
mysql-test/suite/pbxt/r/key_diff.result key_diff.result-20090402100035-4ilk9i91sh65vjcb-85
mysql-test/suite/pbxt/r/lowercase_view.result lowercase_view.resul-20090402100035-4ilk9i91sh65vjcb-96
mysql-test/suite/pbxt/r/mysqlshow.result mysqlshow.result-20090402100035-4ilk9i91sh65vjcb-101
mysql-test/suite/pbxt/r/null.result null.result-20090402100035-4ilk9i91sh65vjcb-104
mysql-test/suite/pbxt/r/null_key.result null_key.result-20090402100035-4ilk9i91sh65vjcb-105
mysql-test/suite/pbxt/r/partition_pruning.result partition_pruning.re-20090402100035-4ilk9i91sh65vjcb-117
mysql-test/suite/pbxt/r/pbxt_bugs.result pbxt_bugs.result-20090402100035-4ilk9i91sh65vjcb-120
mysql-test/suite/pbxt/r/pbxt_ref_int.result pbxt_ref_int.result-20090402100035-4ilk9i91sh65vjcb-123
mysql-test/suite/pbxt/r/preload.result preload.result-20090402100035-4ilk9i91sh65vjcb-127
mysql-test/suite/pbxt/r/ps_1general.result ps_1general.result-20090402100035-4ilk9i91sh65vjcb-130
mysql-test/suite/pbxt/r/range.result range.result-20090402100035-4ilk9i91sh65vjcb-132
mysql-test/suite/pbxt/r/schema.result schema.result-20090402100035-4ilk9i91sh65vjcb-138
mysql-test/suite/pbxt/r/select.result select.result-20090402100035-4ilk9i91sh65vjcb-139
mysql-test/suite/pbxt/r/select_safe.result select_safe.result-20090402100035-4ilk9i91sh65vjcb-141
mysql-test/suite/pbxt/r/subselect.result subselect.result-20090402100035-4ilk9i91sh65vjcb-146
mysql-test/suite/pbxt/r/type_enum.result type_enum.result-20090402100035-4ilk9i91sh65vjcb-155
mysql-test/suite/pbxt/r/type_ranges.result type_ranges.result-20090402100035-4ilk9i91sh65vjcb-159
mysql-test/suite/pbxt/r/type_timestamp.result type_timestamp.resul-20090402100035-4ilk9i91sh65vjcb-162
mysql-test/suite/pbxt/r/union.result union.result-20090402100035-4ilk9i91sh65vjcb-166
mysql-test/suite/pbxt/r/view_grant.result view_grant.result-20090402100035-4ilk9i91sh65vjcb-169
mysql-test/suite/pbxt/t/auto_increment.test auto_increment.test-20090402100035-4ilk9i91sh65vjcb-176
mysql-test/suite/pbxt/t/delete.test delete.test-20090402100035-4ilk9i91sh65vjcb-198
mysql-test/suite/pbxt/t/join_nested.test join_nested.test-20090402100035-4ilk9i91sh65vjcb-248
mysql-test/suite/pbxt/t/null.test null.test-20090402100035-4ilk9i91sh65vjcb-271
mysql-test/suite/pbxt/t/pbxt_bugs.test pbxt_bugs.test-20090402100035-4ilk9i91sh65vjcb-287
mysql-test/suite/pbxt/t/rename.test rename.test-20090402100035-4ilk9i91sh65vjcb-301
mysql-test/suite/pbxt/t/schema.test schema.test-20090402100035-4ilk9i91sh65vjcb-305
mysql-test/suite/pbxt/t/type_enum.test type_enum.test-20090402100035-4ilk9i91sh65vjcb-322
mysql-test/suite/pbxt/t/union.test union.test-20090402100035-4ilk9i91sh65vjcb-333
storage/pbxt/ChangeLog changelog-20090326121724-x683v32twzr3fi0y-3
storage/pbxt/src/Makefile.am makefile.am-20090326121724-x683v32twzr3fi0y-13
storage/pbxt/src/cache_xt.cc cache_xt.cc-20090326121724-x683v32twzr3fi0y-16
storage/pbxt/src/cache_xt.h cache_xt.h-20090326121724-x683v32twzr3fi0y-17
storage/pbxt/src/ccutils_xt.cc ccutils_xt.cc-20090326121724-x683v32twzr3fi0y-18
storage/pbxt/src/database_xt.cc database_xt.cc-20090326121724-x683v32twzr3fi0y-20
storage/pbxt/src/datadic_xt.cc datadic_xt.cc-20090326121724-x683v32twzr3fi0y-22
storage/pbxt/src/datadic_xt.h datadic_xt.h-20090326121724-x683v32twzr3fi0y-23
storage/pbxt/src/datalog_xt.cc datalog_xt.cc-20090326121724-x683v32twzr3fi0y-24
storage/pbxt/src/datalog_xt.h datalog_xt.h-20090326121724-x683v32twzr3fi0y-25
storage/pbxt/src/discover_xt.cc discover_xt.cc-20090326121724-x683v32twzr3fi0y-26
storage/pbxt/src/filesys_xt.cc filesys_xt.cc-20090326121724-x683v32twzr3fi0y-28
storage/pbxt/src/filesys_xt.h filesys_xt.h-20090326121724-x683v32twzr3fi0y-29
storage/pbxt/src/ha_pbxt.cc ha_pbxt.cc-20090326121724-x683v32twzr3fi0y-30
storage/pbxt/src/ha_pbxt.h ha_pbxt.h-20090326121724-x683v32twzr3fi0y-31
storage/pbxt/src/ha_xtsys.cc ha_xtsys.cc-20090326121724-x683v32twzr3fi0y-32
storage/pbxt/src/ha_xtsys.h ha_xtsys.h-20090326121724-x683v32twzr3fi0y-33
storage/pbxt/src/hashtab_xt.cc hashtab_xt.cc-20090326121724-x683v32twzr3fi0y-34
storage/pbxt/src/heap_xt.cc heap_xt.cc-20090326121724-x683v32twzr3fi0y-36
storage/pbxt/src/heap_xt.h heap_xt.h-20090326121724-x683v32twzr3fi0y-37
storage/pbxt/src/index_xt.cc index_xt.cc-20090326121724-x683v32twzr3fi0y-38
storage/pbxt/src/index_xt.h index_xt.h-20090326121724-x683v32twzr3fi0y-39
storage/pbxt/src/lock_xt.cc lock_xt.cc-20090326121724-x683v32twzr3fi0y-42
storage/pbxt/src/lock_xt.h lock_xt.h-20090326121724-x683v32twzr3fi0y-43
storage/pbxt/src/locklist_xt.cc locklist_xt.cc-20090326121724-x683v32twzr3fi0y-44
storage/pbxt/src/locklist_xt.h locklist_xt.h-20090326121724-x683v32twzr3fi0y-45
storage/pbxt/src/memory_xt.cc memory_xt.cc-20090326121724-x683v32twzr3fi0y-46
storage/pbxt/src/memory_xt.h memory_xt.h-20090326121724-x683v32twzr3fi0y-47
storage/pbxt/src/myxt_xt.cc myxt_xt.cc-20090326121724-x683v32twzr3fi0y-48
storage/pbxt/src/myxt_xt.h myxt_xt.h-20090326121724-x683v32twzr3fi0y-49
storage/pbxt/src/pbms.h pbms.h-20090326121724-x683v32twzr3fi0y-50
storage/pbxt/src/pthread_xt.cc pthread_xt.cc-20090326121724-x683v32twzr3fi0y-51
storage/pbxt/src/restart_xt.cc restart_xt.cc-20090326121724-x683v32twzr3fi0y-53
storage/pbxt/src/restart_xt.h restart_xt.h-20090326121724-x683v32twzr3fi0y-54
storage/pbxt/src/sortedlist_xt.cc sortedlist_xt.cc-20090326121724-x683v32twzr3fi0y-55
storage/pbxt/src/strutil_xt.cc strutil_xt.cc-20090326121724-x683v32twzr3fi0y-59
storage/pbxt/src/systab_xt.cc systab_xt.cc-20090326121724-x683v32twzr3fi0y-61
storage/pbxt/src/systab_xt.h systab_xt.h-20090326121724-x683v32twzr3fi0y-62
storage/pbxt/src/tabcache_xt.cc tabcache_xt.cc-20090326121724-x683v32twzr3fi0y-63
storage/pbxt/src/tabcache_xt.h tabcache_xt.h-20090326121724-x683v32twzr3fi0y-64
storage/pbxt/src/table_xt.cc table_xt.cc-20090326121724-x683v32twzr3fi0y-65
storage/pbxt/src/table_xt.h table_xt.h-20090326121724-x683v32twzr3fi0y-66
storage/pbxt/src/thread_xt.cc thread_xt.cc-20090326121724-x683v32twzr3fi0y-67
storage/pbxt/src/thread_xt.h thread_xt.h-20090326121724-x683v32twzr3fi0y-68
storage/pbxt/src/trace_xt.cc trace_xt.cc-20090326121724-x683v32twzr3fi0y-69
storage/pbxt/src/trace_xt.h trace_xt.h-20090326121724-x683v32twzr3fi0y-70
storage/pbxt/src/util_xt.cc util_xt.cc-20090326121724-x683v32twzr3fi0y-71
storage/pbxt/src/xaction_xt.cc xaction_xt.cc-20090326121724-x683v32twzr3fi0y-74
storage/pbxt/src/xaction_xt.h xaction_xt.h-20090326121724-x683v32twzr3fi0y-75
storage/pbxt/src/xactlog_xt.cc xactlog_xt.cc-20090326121724-x683v32twzr3fi0y-76
storage/pbxt/src/xactlog_xt.h xactlog_xt.h-20090326121724-x683v32twzr3fi0y-77
storage/pbxt/src/xt_config.h xt_config.h-20090326121724-x683v32twzr3fi0y-78
storage/pbxt/src/xt_defs.h xt_defs.h-20090326121724-x683v32twzr3fi0y-79
------------------------------------------------------------
revno: 2719.2.4
revision-id: knielsen(a)knielsen-hq.org-20090831110744-ru07dzndci7cf92k
parent: paul.mccullagh(a)primebase.org-20090818074653-8mbinxoo0ylqqqr9
committer: knielsen(a)knielsen-hq.org
branch nick: maria-pbxt-rc2
timestamp: Mon 2009-08-31 13:07:44 +0200
message:
PBXT merge fixes.
- Disable PBMS in MariaDB (as per recommendation of Paul).
- Add missing *-master.opt files to make testsuite work on case-sensitive file systems.
- Result file updates.
added:
mysql-test/suite/pbxt/t/lowercase_table_grant-master.opt lowercase_table_gran-20090828130852-3duj73io0g345hxj-1
mysql-test/suite/pbxt/t/lowercase_table_qcache-master.opt lowercase_table_qcac-20090828130852-3duj73io0g345hxj-2
mysql-test/suite/pbxt/t/lowercase_view-master.opt lowercase_viewmaster-20090828130852-3duj73io0g345hxj-3
mysql-test/suite/pbxt/t/udf-master.opt udfmaster.opt-20090828130852-3duj73io0g345hxj-4
modified:
mysql-test/suite/pbxt/r/lowercase_view.result lowercase_view.resul-20090402100035-4ilk9i91sh65vjcb-96
mysql-test/suite/pbxt/r/ps_1general.result ps_1general.result-20090402100035-4ilk9i91sh65vjcb-130
storage/pbxt/src/Makefile.am makefile.am-20090326121724-x683v32twzr3fi0y-13
storage/pbxt/src/xt_config.h xt_config.h-20090326121724-x683v32twzr3fi0y-78
------------------------------------------------------------
revno: 2719.2.3
revision-id: paul.mccullagh(a)primebase.org-20090818074653-8mbinxoo0ylqqqr9
parent: paul.mccullagh(a)primebase.org-20090817155758-zliin5rbosn30az8
committer: Paul McCullagh <paul.mccullagh(a)primebase.org>
branch nick: trunk
timestamp: Tue 2009-08-18 09:46:53 +0200
message:
Merged changes for bug fix update 1.0.08c RC2
removed:
storage/pbxt/src/streaming_xt.cc streaming_xt.cc-20090326121724-x683v32twzr3fi0y-57
storage/pbxt/src/streaming_xt.h streaming_xt.h-20090326121724-x683v32twzr3fi0y-58
added:
storage/pbxt/src/pbms_enabled.cc pbms_enabled.cc-20090818074502-tybcb62hp1kdrk3l-1
storage/pbxt/src/pbms_enabled.h pbms_enabled.h-20090818074502-tybcb62hp1kdrk3l-2
modified:
storage/pbxt/ChangeLog changelog-20090326121724-x683v32twzr3fi0y-3
storage/pbxt/src/datadic_xt.cc datadic_xt.cc-20090326121724-x683v32twzr3fi0y-22
storage/pbxt/src/datadic_xt.h datadic_xt.h-20090326121724-x683v32twzr3fi0y-23
storage/pbxt/src/datalog_xt.cc datalog_xt.cc-20090326121724-x683v32twzr3fi0y-24
storage/pbxt/src/datalog_xt.h datalog_xt.h-20090326121724-x683v32twzr3fi0y-25
storage/pbxt/src/filesys_xt.cc filesys_xt.cc-20090326121724-x683v32twzr3fi0y-28
storage/pbxt/src/ha_pbxt.cc ha_pbxt.cc-20090326121724-x683v32twzr3fi0y-30
storage/pbxt/src/index_xt.cc index_xt.cc-20090326121724-x683v32twzr3fi0y-38
storage/pbxt/src/myxt_xt.cc myxt_xt.cc-20090326121724-x683v32twzr3fi0y-48
storage/pbxt/src/myxt_xt.h myxt_xt.h-20090326121724-x683v32twzr3fi0y-49
storage/pbxt/src/pbms.h pbms.h-20090326121724-x683v32twzr3fi0y-50
storage/pbxt/src/pthread_xt.cc pthread_xt.cc-20090326121724-x683v32twzr3fi0y-51
storage/pbxt/src/restart_xt.cc restart_xt.cc-20090326121724-x683v32twzr3fi0y-53
storage/pbxt/src/strutil_xt.cc strutil_xt.cc-20090326121724-x683v32twzr3fi0y-59
storage/pbxt/src/table_xt.cc table_xt.cc-20090326121724-x683v32twzr3fi0y-65
storage/pbxt/src/table_xt.h table_xt.h-20090326121724-x683v32twzr3fi0y-66
storage/pbxt/src/xactlog_xt.cc xactlog_xt.cc-20090326121724-x683v32twzr3fi0y-76
storage/pbxt/src/xt_config.h xt_config.h-20090326121724-x683v32twzr3fi0y-78
------------------------------------------------------------
revno: 2719.2.2
revision-id: paul.mccullagh(a)primebase.org-20090817155758-zliin5rbosn30az8
parent: paul.mccullagh(a)primebase.org-20090817111236-1pgxzp5x9l74q0ug
committer: Paul McCullagh <paul.mccullagh(a)primebase.org>
branch nick: trunk
timestamp: Mon 2009-08-17 17:57:58 +0200
message:
Updated all tests for RC2
modified:
mysql-test/suite/pbxt/r/analyze.result analyze.result-20090402100035-4ilk9i91sh65vjcb-7
mysql-test/suite/pbxt/r/auto_increment.result auto_increment.resul-20090402100035-4ilk9i91sh65vjcb-9
mysql-test/suite/pbxt/r/delete.result delete.result-20090402100035-4ilk9i91sh65vjcb-31
mysql-test/suite/pbxt/r/distinct.result distinct.result-20090402100035-4ilk9i91sh65vjcb-34
mysql-test/suite/pbxt/r/func_group.result func_group.result-20090402100035-4ilk9i91sh65vjcb-50
mysql-test/suite/pbxt/r/func_math.result func_math.result-20090402100035-4ilk9i91sh65vjcb-55
mysql-test/suite/pbxt/r/func_str.result func_str.result-20090402100035-4ilk9i91sh65vjcb-61
mysql-test/suite/pbxt/r/grant.result grant.result-20090402100035-4ilk9i91sh65vjcb-65
mysql-test/suite/pbxt/r/group_min_max.result group_min_max.result-20090402100035-4ilk9i91sh65vjcb-69
mysql-test/suite/pbxt/r/join.result join.result-20090402100035-4ilk9i91sh65vjcb-79
mysql-test/suite/pbxt/r/join_nested.result join_nested.result-20090402100035-4ilk9i91sh65vjcb-81
mysql-test/suite/pbxt/r/key.result key.result-20090402100035-4ilk9i91sh65vjcb-83
mysql-test/suite/pbxt/r/key_cache.result key_cache.result-20090402100035-4ilk9i91sh65vjcb-84
mysql-test/suite/pbxt/r/key_diff.result key_diff.result-20090402100035-4ilk9i91sh65vjcb-85
mysql-test/suite/pbxt/r/mysqlshow.result mysqlshow.result-20090402100035-4ilk9i91sh65vjcb-101
mysql-test/suite/pbxt/r/null.result null.result-20090402100035-4ilk9i91sh65vjcb-104
mysql-test/suite/pbxt/r/null_key.result null_key.result-20090402100035-4ilk9i91sh65vjcb-105
mysql-test/suite/pbxt/r/partition_pruning.result partition_pruning.re-20090402100035-4ilk9i91sh65vjcb-117
mysql-test/suite/pbxt/r/pbxt_bugs.result pbxt_bugs.result-20090402100035-4ilk9i91sh65vjcb-120
mysql-test/suite/pbxt/r/pbxt_ref_int.result pbxt_ref_int.result-20090402100035-4ilk9i91sh65vjcb-123
mysql-test/suite/pbxt/r/preload.result preload.result-20090402100035-4ilk9i91sh65vjcb-127
mysql-test/suite/pbxt/r/ps_1general.result ps_1general.result-20090402100035-4ilk9i91sh65vjcb-130
mysql-test/suite/pbxt/r/range.result range.result-20090402100035-4ilk9i91sh65vjcb-132
mysql-test/suite/pbxt/r/schema.result schema.result-20090402100035-4ilk9i91sh65vjcb-138
mysql-test/suite/pbxt/r/select.result select.result-20090402100035-4ilk9i91sh65vjcb-139
mysql-test/suite/pbxt/r/select_safe.result select_safe.result-20090402100035-4ilk9i91sh65vjcb-141
mysql-test/suite/pbxt/r/subselect.result subselect.result-20090402100035-4ilk9i91sh65vjcb-146
mysql-test/suite/pbxt/r/type_enum.result type_enum.result-20090402100035-4ilk9i91sh65vjcb-155
mysql-test/suite/pbxt/r/type_ranges.result type_ranges.result-20090402100035-4ilk9i91sh65vjcb-159
mysql-test/suite/pbxt/r/type_timestamp.result type_timestamp.resul-20090402100035-4ilk9i91sh65vjcb-162
mysql-test/suite/pbxt/r/union.result union.result-20090402100035-4ilk9i91sh65vjcb-166
mysql-test/suite/pbxt/r/view_grant.result view_grant.result-20090402100035-4ilk9i91sh65vjcb-169
mysql-test/suite/pbxt/t/auto_increment.test auto_increment.test-20090402100035-4ilk9i91sh65vjcb-176
mysql-test/suite/pbxt/t/delete.test delete.test-20090402100035-4ilk9i91sh65vjcb-198
mysql-test/suite/pbxt/t/join_nested.test join_nested.test-20090402100035-4ilk9i91sh65vjcb-248
mysql-test/suite/pbxt/t/null.test null.test-20090402100035-4ilk9i91sh65vjcb-271
mysql-test/suite/pbxt/t/pbxt_bugs.test pbxt_bugs.test-20090402100035-4ilk9i91sh65vjcb-287
mysql-test/suite/pbxt/t/rename.test rename.test-20090402100035-4ilk9i91sh65vjcb-301
mysql-test/suite/pbxt/t/schema.test schema.test-20090402100035-4ilk9i91sh65vjcb-305
mysql-test/suite/pbxt/t/type_enum.test type_enum.test-20090402100035-4ilk9i91sh65vjcb-322
mysql-test/suite/pbxt/t/union.test union.test-20090402100035-4ilk9i91sh65vjcb-333
------------------------------------------------------------
revno: 2719.2.1
revision-id: paul.mccullagh(a)primebase.org-20090817111236-1pgxzp5x9l74q0ug
parent: knielsen(a)knielsen-hq.org-20090805072137-wg97dcem1cxnzt3p
committer: Paul McCullagh <paul.mccullagh(a)primebase.org>
branch nick: trunk
timestamp: Mon 2009-08-17 13:12:36 +0200
message:
Updated PBXT to version 1.0.08 RC2
modified:
mysql-test/suite/pbxt/r/alter_table.result alter_table.result-20090402100035-4ilk9i91sh65vjcb-5
storage/pbxt/ChangeLog changelog-20090326121724-x683v32twzr3fi0y-3
storage/pbxt/src/cache_xt.cc cache_xt.cc-20090326121724-x683v32twzr3fi0y-16
storage/pbxt/src/cache_xt.h cache_xt.h-20090326121724-x683v32twzr3fi0y-17
storage/pbxt/src/ccutils_xt.cc ccutils_xt.cc-20090326121724-x683v32twzr3fi0y-18
storage/pbxt/src/database_xt.cc database_xt.cc-20090326121724-x683v32twzr3fi0y-20
storage/pbxt/src/datadic_xt.cc datadic_xt.cc-20090326121724-x683v32twzr3fi0y-22
storage/pbxt/src/datadic_xt.h datadic_xt.h-20090326121724-x683v32twzr3fi0y-23
storage/pbxt/src/datalog_xt.cc datalog_xt.cc-20090326121724-x683v32twzr3fi0y-24
storage/pbxt/src/discover_xt.cc discover_xt.cc-20090326121724-x683v32twzr3fi0y-26
storage/pbxt/src/filesys_xt.cc filesys_xt.cc-20090326121724-x683v32twzr3fi0y-28
storage/pbxt/src/filesys_xt.h filesys_xt.h-20090326121724-x683v32twzr3fi0y-29
storage/pbxt/src/ha_pbxt.cc ha_pbxt.cc-20090326121724-x683v32twzr3fi0y-30
storage/pbxt/src/ha_pbxt.h ha_pbxt.h-20090326121724-x683v32twzr3fi0y-31
storage/pbxt/src/ha_xtsys.cc ha_xtsys.cc-20090326121724-x683v32twzr3fi0y-32
storage/pbxt/src/ha_xtsys.h ha_xtsys.h-20090326121724-x683v32twzr3fi0y-33
storage/pbxt/src/hashtab_xt.cc hashtab_xt.cc-20090326121724-x683v32twzr3fi0y-34
storage/pbxt/src/heap_xt.cc heap_xt.cc-20090326121724-x683v32twzr3fi0y-36
storage/pbxt/src/heap_xt.h heap_xt.h-20090326121724-x683v32twzr3fi0y-37
storage/pbxt/src/index_xt.cc index_xt.cc-20090326121724-x683v32twzr3fi0y-38
storage/pbxt/src/index_xt.h index_xt.h-20090326121724-x683v32twzr3fi0y-39
storage/pbxt/src/lock_xt.cc lock_xt.cc-20090326121724-x683v32twzr3fi0y-42
storage/pbxt/src/lock_xt.h lock_xt.h-20090326121724-x683v32twzr3fi0y-43
storage/pbxt/src/locklist_xt.cc locklist_xt.cc-20090326121724-x683v32twzr3fi0y-44
storage/pbxt/src/locklist_xt.h locklist_xt.h-20090326121724-x683v32twzr3fi0y-45
storage/pbxt/src/memory_xt.cc memory_xt.cc-20090326121724-x683v32twzr3fi0y-46
storage/pbxt/src/memory_xt.h memory_xt.h-20090326121724-x683v32twzr3fi0y-47
storage/pbxt/src/myxt_xt.cc myxt_xt.cc-20090326121724-x683v32twzr3fi0y-48
storage/pbxt/src/myxt_xt.h myxt_xt.h-20090326121724-x683v32twzr3fi0y-49
storage/pbxt/src/pbms.h pbms.h-20090326121724-x683v32twzr3fi0y-50
storage/pbxt/src/restart_xt.cc restart_xt.cc-20090326121724-x683v32twzr3fi0y-53
storage/pbxt/src/restart_xt.h restart_xt.h-20090326121724-x683v32twzr3fi0y-54
storage/pbxt/src/sortedlist_xt.cc sortedlist_xt.cc-20090326121724-x683v32twzr3fi0y-55
storage/pbxt/src/streaming_xt.cc streaming_xt.cc-20090326121724-x683v32twzr3fi0y-57
storage/pbxt/src/strutil_xt.cc strutil_xt.cc-20090326121724-x683v32twzr3fi0y-59
storage/pbxt/src/systab_xt.cc systab_xt.cc-20090326121724-x683v32twzr3fi0y-61
storage/pbxt/src/systab_xt.h systab_xt.h-20090326121724-x683v32twzr3fi0y-62
storage/pbxt/src/tabcache_xt.cc tabcache_xt.cc-20090326121724-x683v32twzr3fi0y-63
storage/pbxt/src/tabcache_xt.h tabcache_xt.h-20090326121724-x683v32twzr3fi0y-64
storage/pbxt/src/table_xt.cc table_xt.cc-20090326121724-x683v32twzr3fi0y-65
storage/pbxt/src/table_xt.h table_xt.h-20090326121724-x683v32twzr3fi0y-66
storage/pbxt/src/thread_xt.cc thread_xt.cc-20090326121724-x683v32twzr3fi0y-67
storage/pbxt/src/thread_xt.h thread_xt.h-20090326121724-x683v32twzr3fi0y-68
storage/pbxt/src/trace_xt.cc trace_xt.cc-20090326121724-x683v32twzr3fi0y-69
storage/pbxt/src/trace_xt.h trace_xt.h-20090326121724-x683v32twzr3fi0y-70
storage/pbxt/src/util_xt.cc util_xt.cc-20090326121724-x683v32twzr3fi0y-71
storage/pbxt/src/xaction_xt.cc xaction_xt.cc-20090326121724-x683v32twzr3fi0y-74
storage/pbxt/src/xaction_xt.h xaction_xt.h-20090326121724-x683v32twzr3fi0y-75
storage/pbxt/src/xactlog_xt.cc xactlog_xt.cc-20090326121724-x683v32twzr3fi0y-76
storage/pbxt/src/xactlog_xt.h xactlog_xt.h-20090326121724-x683v32twzr3fi0y-77
storage/pbxt/src/xt_config.h xt_config.h-20090326121724-x683v32twzr3fi0y-78
storage/pbxt/src/xt_defs.h xt_defs.h-20090326121724-x683v32twzr3fi0y-79
------------------------------------------------------------
revno: 2719.1.2
revision-id: knielsen(a)knielsen-hq.org-20090829194804-rfq9dbai99do12ub
parent: knielsen(a)knielsen-hq.org-20090829190446-bm072wpuvueu2o59
committer: knielsen(a)knielsen-hq.org
branch nick: mariadb-5.1
timestamp: Sat 2009-08-29 21:48:04 +0200
message:
Add missign header file to `make dist`.
modified:
storage/xtradb/Makefile.am makefile.am-20081201061010-zymrrwrczns2vrex-4
------------------------------------------------------------
revno: 2719.1.1
revision-id: knielsen(a)knielsen-hq.org-20090829190446-bm072wpuvueu2o59
parent: knielsen(a)knielsen-hq.org-20090805072137-wg97dcem1cxnzt3p
committer: knielsen(a)knielsen-hq.org
branch nick: 5.1
timestamp: Sat 2009-08-29 21:04:46 +0200
message:
Fix `make dist` after solaris build file fixes.
Solaris build scripts under BUILD/ were changed, but Makefile.am was not updated to reflect
the new set of file names.
modified:
BUILD/Makefile.am sp1f-makefile.am-20020102192940-dza66ux2yxyklupzjz4q3km3hvye5rnj
Diff too large for email (22284 lines, the limit is 1000).
1
0
[Maria-developers] Diff for stuff from MySQL 5.1.38 not yet included in the merge
by Kristian Nielsen 15 Sep '09
by Kristian Nielsen 15 Sep '09
15 Sep '09
Hi Sergey,
Here is the diff of the commits that are not yet merged from MySQL 5.1.38
(they are missing from our merge since they were not yet pushed to Launchpad
by the MySQL build team when the merge was done by Jani and Monty).
There is a Windows build one-liner, but don't know if it will help you.
I will merge this into maria-5.1-merge as soon as you have pushed your merge
with latest lp:maria.
- Kristian.
=== modified file '.bzrignore'
--- .bzrignore 2009-02-27 11:20:53 +0000
+++ .bzrignore 2009-08-12 20:06:44 +0000
@@ -3063,3 +3063,4 @@ sql/share/slovak
sql/share/spanish
sql/share/swedish
sql/share/ukrainian
+libmysqld/examples/mysqltest.cc
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2009-08-11 15:47:33 +0000
+++ CMakeLists.txt 2009-08-14 15:18:52 +0000
@@ -137,6 +137,7 @@ ENDIF(MSVC)
IF(WIN32)
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
+ ADD_DEFINITIONS("-D_WIN32_WINNT=0x0501")
ENDIF(WIN32)
# default to x86 platform. We'll check for X64 in a bit
=== modified file 'cmd-line-utils/readline/util.c'
--- cmd-line-utils/readline/util.c 2009-06-29 13:17:01 +0000
+++ cmd-line-utils/readline/util.c 2009-08-14 15:18:52 +0000
@@ -81,8 +81,13 @@ rl_alphabetic (c)
#if defined (HANDLE_MULTIBYTE)
int
-_rl_walphabetic (wc)
- wchar_t wc;
+/*
+ Portability issue with VisualAge C++ Professional / C for AIX Compiler, Version 6:
+ "util.c", line 84.1: 1506-343 (S) Redeclaration of _rl_walphabetic differs
+ from previous declaration on line 110 of "rlmbutil.h".
+ So, put type in the function signature here.
+*/
+_rl_walphabetic (wchar_t wc)
{
int c;
=== modified file 'mysql-test/Makefile.am'
--- mysql-test/Makefile.am 2009-07-14 10:06:04 +0000
+++ mysql-test/Makefile.am 2009-08-21 11:58:33 +0000
@@ -17,7 +17,8 @@
## Process this file with automake to create Makefile.in
-testdir = $(prefix)/mysql-test
+testroot = $(prefix)
+testdir = $(testroot)/mysql-test
test_SCRIPTS = mtr \
mysql-test-run \
=== modified file 'mysql-test/lib/My/SafeProcess/Makefile.am'
--- mysql-test/lib/My/SafeProcess/Makefile.am 2008-03-13 16:07:11 +0000
+++ mysql-test/lib/My/SafeProcess/Makefile.am 2009-08-21 11:58:33 +0000
@@ -13,7 +13,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-safedir = $(prefix)/mysql-test/lib/My/SafeProcess
+testroot = $(prefix)
+safedir = $(testroot)/mysql-test/lib/My/SafeProcess
#nobase_bin_PROGRAMS = ...
safe_PROGRAMS = my_safe_process
=== modified file 'scripts/make_win_bin_dist'
--- scripts/make_win_bin_dist 2009-04-14 19:53:00 +0000
+++ scripts/make_win_bin_dist 2009-09-01 06:40:13 +0000
@@ -279,6 +279,7 @@ cp include/mysql/plugin.h $DESTDIR/inclu
# ----------------------------------------------------------------------
mkdir -p $DESTDIR/lib/opt
+mkdir -p $DESTDIR/lib/plugin
cp libmysql/$TARGET/libmysql.dll \
libmysql/$TARGET/libmysql.lib \
libmysql/$TARGET/mysqlclient.lib \
@@ -286,6 +287,10 @@ cp libmysql/$TARGET/libmysql.dll \
regex/$TARGET/regex.lib \
strings/$TARGET/strings.lib \
zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
+if [ -d storage/innodb_plugin ]; then
+ cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.dll \
+ $DESTDIR/lib/plugin/
+fi
if [ x"$TARGET" != x"release" ] ; then
cp libmysql/$TARGET/libmysql.pdb \
@@ -294,11 +299,17 @@ if [ x"$TARGET" != x"release" ] ; then
regex/$TARGET/regex.pdb \
strings/$TARGET/strings.pdb \
zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/
+ if [ -d storage/innodb_plugin ]; then
+ cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.pdb \
+ $DESTDIR/lib/plugin/
+ fi
fi
+
if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
x"$PACK_DEBUG" = x"yes" ] ; then
mkdir -p $DESTDIR/lib/debug
+ mkdir -p $DESTDIR/lib/plugin/debug
cp libmysql/debug/libmysql.dll \
libmysql/debug/libmysql.lib \
libmysql/debug/libmysql.pdb \
@@ -312,6 +323,12 @@ if [ x"$PACK_DEBUG" = x"" -a -f "libmysq
strings/debug/strings.pdb \
zlib/debug/zlib.lib \
zlib/debug/zlib.pdb $DESTDIR/lib/debug/
+ if [ -d storage/innodb_plugin ]; then
+ cp storage/innodb_plugin/debug/ha_innodb_plugin.dll \
+ storage/innodb_plugin/debug/ha_innodb_plugin.lib \
+ storage/innodb_plugin/debug/ha_innodb_plugin.pdb \
+ $DESTDIR/lib/plugin/debug/
+ fi
fi
# ----------------------------------------------------------------------
=== modified file 'storage/innodb_plugin/handler/i_s.cc'
--- storage/innodb_plugin/handler/i_s.cc 2009-06-10 08:59:49 +0000
+++ storage/innodb_plugin/handler/i_s.cc 2009-08-14 15:18:52 +0000
@@ -69,14 +69,16 @@ do { \
#define STRUCT_FLD(name, value) value
#endif
-static const ST_FIELD_INFO END_OF_ST_FIELD_INFO =
- {STRUCT_FLD(field_name, NULL),
- STRUCT_FLD(field_length, 0),
- STRUCT_FLD(field_type, MYSQL_TYPE_NULL),
- STRUCT_FLD(value, 0),
- STRUCT_FLD(field_flags, 0),
- STRUCT_FLD(old_name, ""),
- STRUCT_FLD(open_method, SKIP_OPEN_TABLE)};
+/* Don't use a static const variable here, as some C++ compilers (notably
+HPUX aCC: HP ANSI C++ B3910B A.03.65) can't handle it. */
+#define END_OF_ST_FIELD_INFO \
+ {STRUCT_FLD(field_name, NULL), \
+ STRUCT_FLD(field_length, 0), \
+ STRUCT_FLD(field_type, MYSQL_TYPE_NULL), \
+ STRUCT_FLD(value, 0), \
+ STRUCT_FLD(field_flags, 0), \
+ STRUCT_FLD(old_name, ""), \
+ STRUCT_FLD(open_method, SKIP_OPEN_TABLE)}
/*
Use the following types mapping:
=== modified file 'storage/innodb_plugin/include/btr0cur.h'
--- storage/innodb_plugin/include/btr0cur.h 2009-05-27 09:45:59 +0000
+++ storage/innodb_plugin/include/btr0cur.h 2009-08-12 20:06:44 +0000
@@ -618,7 +618,7 @@ enum btr_cur_method {
hash_node, and might be necessary to
update */
BTR_CUR_BINARY, /*!< success using the binary search */
- BTR_CUR_INSERT_TO_IBUF, /*!< performed the intended insert to
+ BTR_CUR_INSERT_TO_IBUF /*!< performed the intended insert to
the insert buffer */
};
=== modified file 'storage/innodb_plugin/include/trx0types.h'
--- storage/innodb_plugin/include/trx0types.h 2009-07-30 12:42:56 +0000
+++ storage/innodb_plugin/include/trx0types.h 2009-08-12 20:06:44 +0000
@@ -70,7 +70,7 @@ typedef struct trx_named_savept_struct t
enum trx_rb_ctx {
RB_NONE = 0, /*!< no rollback */
RB_NORMAL, /*!< normal rollback */
- RB_RECOVERY, /*!< rolling back an incomplete transaction,
+ RB_RECOVERY /*!< rolling back an incomplete transaction,
in crash recovery */
};
=== modified file 'storage/innodb_plugin/include/univ.i'
--- storage/innodb_plugin/include/univ.i 2009-07-30 12:42:56 +0000
+++ storage/innodb_plugin/include/univ.i 2009-08-14 15:18:52 +0000
@@ -408,7 +408,8 @@ it is read. */
/* Minimize cache-miss latency by moving data at addr into a cache before
it is read or written. */
# define UNIV_PREFETCH_RW(addr) __builtin_prefetch(addr, 1, 3)
-#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+/* Sun Studio includes sun_prefetch.h as of version 5.9 */
+#elif (defined(__SUNPRO_C) && __SUNPRO_C >= 0x590) || (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x590)
# include <sun_prefetch.h>
#if __SUNPRO_C >= 0x550
# undef UNIV_INTERN
=== modified file 'storage/ndb/test/run-test/Makefile.am'
--- storage/ndb/test/run-test/Makefile.am 2007-08-31 14:12:51 +0000
+++ storage/ndb/test/run-test/Makefile.am 2009-08-21 11:58:33 +0000
@@ -13,7 +13,8 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-testdir=$(prefix)/mysql-test/ndb
+testroot=$(prefix)
+testdir=$(testroot)/mysql-test/ndb
include $(top_srcdir)/storage/ndb/config/common.mk.am
include $(top_srcdir)/storage/ndb/config/type_util.mk.am
=== modified file 'support-files/mysql.spec.sh'
--- support-files/mysql.spec.sh 2009-05-27 15:14:09 +0000
+++ support-files/mysql.spec.sh 2009-08-25 11:00:23 +0000
@@ -31,6 +31,20 @@
%{?_with_yassl:%define YASSL_BUILD 1}
%{!?_with_yassl:%define YASSL_BUILD 0}
+# ----------------------------------------------------------------------
+# use "rpmbuild --with bundled_zlib" or "rpm --define '_with_bundled_zlib 1'"
+# (for RPM 3.x) to build using the bundled zlib (off by default)
+# ----------------------------------------------------------------------
+%{?_with_bundled_zlib:%define WITH_BUNDLED_ZLIB 1}
+%{!?_with_bundled_zlib:%define WITH_BUNDLED_ZLIB 0}
+
+# ----------------------------------------------------------------------
+# use "rpmbuild --without innodb_plugin" or "rpm --define '_without_innodb_plugin 1'"
+# (for RPM 3.x) to not build the innodb plugin (on by default with innodb builds)
+# ----------------------------------------------------------------------
+%{?_without_innodb_plugin:%define WITHOUT_INNODB_PLUGIN 1}
+%{!?_without_innodb_plugin:%define WITHOUT_INNODB_PLUGIN 0}
+
# use "rpmbuild --with cluster" or "rpm --define '_with_cluster 1'" (for RPM 3.x)
# to build with cluster support (off by default)
%{?_with_cluster:%define CLUSTER_BUILD 1}
@@ -292,6 +306,9 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH
--enable-thread-safe-client \
--with-readline \
--with-innodb \
+%if %{WITHOUT_INNODB_PLUGIN}
+ --without-plugin-innodb_plugin \
+%endif
%if %{CLUSTER_BUILD}
--with-ndbcluster \
%else
@@ -301,8 +318,13 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH
--with-csv-storage-engine \
--with-blackhole-storage-engine \
--with-federated-storage-engine \
+ --without-plugin-daemon_example \
+ --without-plugin-ftexample \
--with-partition \
--with-big-tables \
+%if %{WITH_BUNDLED_ZLIB}
+ --with-zlib-dir=bundled \
+%endif
--enable-shared \
"
make
@@ -426,7 +448,7 @@ install -d $RBR%{_sbindir}
# Install all binaries
-(cd $MBD && make install DESTDIR=$RBR benchdir_root=%{_datadir})
+(cd $MBD && make install DESTDIR=$RBR testroot=%{_datadir})
# Old packages put shared libs in %{_libdir}/ (not %{_libdir}/mysql), so do
# the same here.
mv $RBR/%{_libdir}/mysql/*.so* $RBR/%{_libdir}/
@@ -693,6 +715,12 @@ fi
%attr(755, root, root) %{_bindir}/resolve_stack_dump
%attr(755, root, root) %{_bindir}/resolveip
+%attr(755, root, root) %{_libdir}/mysql/plugin/ha_example.so*
+%if %{WITHOUT_INNODB_PLUGIN}
+%else
+%attr(755, root, root) %{_libdir}/mysql/plugin/ha_innodb_plugin.so*
+%endif
+
%attr(755, root, root) %{_sbindir}/mysqld
%attr(755, root, root) %{_sbindir}/mysqld-debug
%attr(755, root, root) %{_sbindir}/mysqlmanager
@@ -818,6 +846,13 @@ fi
%{_libdir}/mysql/libvio.a
%{_libdir}/mysql/libz.a
%{_libdir}/mysql/libz.la
+%{_libdir}/mysql/plugin/ha_example.a
+%{_libdir}/mysql/plugin/ha_example.la
+%if %{WITHOUT_INNODB_PLUGIN}
+%else
+%{_libdir}/mysql/plugin/ha_innodb_plugin.a
+%{_libdir}/mysql/plugin/ha_innodb_plugin.la
+%endif
%files shared
%defattr(-, root, root, 0755)
@@ -847,6 +882,19 @@ fi
# itself - note that they must be ordered by date (important when
# merging BK trees)
%changelog
+* Mon Aug 24 2009 Jonathan Perkin <jperkin(a)sun.com>
+
+- Add conditionals for bundled zlib and innodb plugin
+
+* Fri Aug 21 2009 Jonathan Perkin <jperkin(a)sun.com>
+
+- Install plugin libraries in appropriate packages.
+- Disable libdaemon_example and ftexample plugins.
+
+* Thu Aug 20 2009 Jonathan Perkin <jperkin@stripped>
+
+- Update variable used for mysql-test suite location to match source.
+
* Fri Nov 07 2008 Joerg Bruehe <joerg(a)mysql.com>
- Correct yesterday's fix, so that it also works for the last flag,
1
0
15 Sep '09
Hi Sergey,
Here is the diff of the extra stuff that Jani and Monty merged, but which is
not included in MySQL-5.1.38.
As can be seen, none of it really matters (except the version number; I'll fix
that to be 5.1.38-maria-beta1).
I suggest we just leave it in place to simplify future merges.
Still, hopefully the next time we merge, we will make sure we merge some
well-defined release of MySQL ;-)
- Kristian.
=== modified file '.bzrignore'
--- .bzrignore 2009-02-27 11:20:53 +0000
+++ .bzrignore 2009-08-12 19:45:01 +0000
@@ -3063,3 +3063,4 @@ sql/share/slovak
sql/share/spanish
sql/share/swedish
sql/share/ukrainian
+libmysqld/examples/mysqltest.cc
=== modified file 'configure.in'
--- configure.in 2009-07-13 20:43:31 +0000
+++ configure.in 2009-08-13 20:33:00 +0000
@@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM
#
# When changing major version number please also check switch statement
# in mysqlbinlog::check_master_version().
-AM_INIT_AUTOMAKE(mysql, 5.1.38)
+AM_INIT_AUTOMAKE(mysql, 5.1.39)
AM_CONFIG_HEADER([include/config.h:config.h.in])
PROTOCOL_VERSION=10
=== modified file 'man/Makefile.am'
--- man/Makefile.am 2008-08-27 14:03:39 +0000
+++ man/Makefile.am 2009-08-20 19:41:12 +0000
@@ -23,7 +23,7 @@ EXTRA_DIST = $(man1_MANS) $(man8_MANS)
# "make_win_*" are not needed in Unix binary packages,
install-data-hook:
- rm -f $(DESTDIR)$(manlibdir)/man1/make_win_*
+ rm -f $(DESTDIR)$(mandir)/man1/make_win_*
# Don't update the files from bitkeeper
%::SCCS/s.%
=== modified file 'mysql-test/collections/default.daily'
--- mysql-test/collections/default.daily 2009-02-24 11:53:34 +0000
+++ mysql-test/collections/default.daily 2009-08-12 15:10:15 +0000
@@ -1 +1 @@
-perl mysql-test-run.pl --timer --force --comment=rpl_ndb_row --suite=rpl_ndb,ndb --mysqld=--binlog-format=row --experimental=collections/default.experimental
+perl mysql-test-run.pl --timer --force --comment=rpl_ndb_row --vardir=var-rpl_ndb_row --suite=rpl_ndb,ndb --mysqld=--binlog-format=row --experimental=collections/default.experimental
=== modified file 'mysql-test/collections/default.push'
--- mysql-test/collections/default.push 2009-06-03 10:46:04 +0000
+++ mysql-test/collections/default.push 2009-08-12 15:10:15 +0000
@@ -1,5 +1,5 @@
-perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental
-perl mysql-test-run.pl --timer --force --parallel=auto --comment=ps_row --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental
-perl mysql-test-run.pl --timer --force --parallel=auto --comment=embedded --embedded --experimental=collections/default.experimental
-perl mysql-test-run.pl --timer --force --parallel=auto --comment=rpl_binlog_row --suite=rpl,binlog --mysqld=--binlog-format=row --experimental=collections/default.experimental
-perl mysql-test-run.pl --timer --force --parallel=auto --comment=funcs_1 --suite=funcs_1 --experimental=collections/default.experimental
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=embedded --vardir=var-emebbed --embedded --experimental=collections/default.experimental
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=rpl_binlog_row --vardir=var-rpl_binlog_row --suite=rpl,binlog --mysqld=--binlog-format=row --experimental=collections/default.experimental
+perl mysql-test-run.pl --timer --force --parallel=auto --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1 --experimental=collections/default.experimental
=== modified file 'mysql-test/lib/mtr_cases.pm'
--- mysql-test/lib/mtr_cases.pm 2009-07-30 12:42:56 +0000
+++ mysql-test/lib/mtr_cases.pm 2009-08-12 12:46:12 +0000
@@ -494,6 +494,7 @@ sub collect_one_suite($)
next if ($test->{'skip'} || !$test->{'innodb_test'});
# Exceptions
next if ($test->{'name'} eq 'main.innodb'); # Failed with wrong errno (fk)
+ next if ($test->{'name'} eq 'main.index_merge_innodb'); # Explain diff
# innodb_file_per_table is rw with innodb_plugin
next if ($test->{'name'} eq 'sys_vars.innodb_file_per_table_basic');
# innodb_lock_wait_timeout is rw with innodb_plugin
=== modified file 'storage/innodb_plugin/include/btr0cur.h'
--- storage/innodb_plugin/include/btr0cur.h 2009-05-27 09:45:59 +0000
+++ storage/innodb_plugin/include/btr0cur.h 2009-08-12 19:43:20 +0000
@@ -618,7 +618,7 @@ enum btr_cur_method {
hash_node, and might be necessary to
update */
BTR_CUR_BINARY, /*!< success using the binary search */
- BTR_CUR_INSERT_TO_IBUF, /*!< performed the intended insert to
+ BTR_CUR_INSERT_TO_IBUF /*!< performed the intended insert to
the insert buffer */
};
=== modified file 'storage/innodb_plugin/include/trx0types.h'
--- storage/innodb_plugin/include/trx0types.h 2009-07-30 12:42:56 +0000
+++ storage/innodb_plugin/include/trx0types.h 2009-08-12 19:43:20 +0000
@@ -70,7 +70,7 @@ typedef struct trx_named_savept_struct t
enum trx_rb_ctx {
RB_NONE = 0, /*!< no rollback */
RB_NORMAL, /*!< normal rollback */
- RB_RECOVERY, /*!< rolling back an incomplete transaction,
+ RB_RECOVERY /*!< rolling back an incomplete transaction,
in crash recovery */
};
=== modified file 'support-files/mysql.spec.sh'
--- support-files/mysql.spec.sh 2009-05-27 15:14:09 +0000
+++ support-files/mysql.spec.sh 2009-08-24 09:13:34 +0000
@@ -31,6 +31,20 @@
%{?_with_yassl:%define YASSL_BUILD 1}
%{!?_with_yassl:%define YASSL_BUILD 0}
+# ----------------------------------------------------------------------
+# use "rpmbuild --with bundled_zlib" or "rpm --define '_with_bundled_zlib 1'"
+# (for RPM 3.x) to build using the bundled zlib (off by default)
+# ----------------------------------------------------------------------
+%{?_with_bundled_zlib:%define WITH_BUNDLED_ZLIB 1}
+%{!?_with_bundled_zlib:%define WITH_BUNDLED_ZLIB 0}
+
+# ----------------------------------------------------------------------
+# use "rpmbuild --without innodb_plugin" or "rpm --define '_without_innodb_plugin 1'"
+# (for RPM 3.x) to not build the innodb plugin (on by default with innodb builds)
+# ----------------------------------------------------------------------
+%{?_without_innodb_plugin:%define WITHOUT_INNODB_PLUGIN 1}
+%{!?_without_innodb_plugin:%define WITHOUT_INNODB_PLUGIN 0}
+
# use "rpmbuild --with cluster" or "rpm --define '_with_cluster 1'" (for RPM 3.x)
# to build with cluster support (off by default)
%{?_with_cluster:%define CLUSTER_BUILD 1}
@@ -292,6 +306,9 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH
--enable-thread-safe-client \
--with-readline \
--with-innodb \
+%if %{WITHOUT_INNODB_PLUGIN}
+ --without-plugin-innodb_plugin \
+%endif
%if %{CLUSTER_BUILD}
--with-ndbcluster \
%else
@@ -301,8 +318,13 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH
--with-csv-storage-engine \
--with-blackhole-storage-engine \
--with-federated-storage-engine \
+ --without-plugin-daemon_example \
+ --without-plugin-example \
--with-partition \
--with-big-tables \
+%if %{WITH_BUNDLED_ZLIB}
+ --with-zlib-dir=bundled \
+%endif
--enable-shared \
"
make
@@ -426,7 +448,7 @@ install -d $RBR%{_sbindir}
# Install all binaries
-(cd $MBD && make install DESTDIR=$RBR benchdir_root=%{_datadir})
+(cd $MBD && make install DESTDIR=$RBR testroot=%{_datadir})
# Old packages put shared libs in %{_libdir}/ (not %{_libdir}/mysql), so do
# the same here.
mv $RBR/%{_libdir}/mysql/*.so* $RBR/%{_libdir}/
@@ -693,6 +715,8 @@ fi
%attr(755, root, root) %{_bindir}/resolve_stack_dump
%attr(755, root, root) %{_bindir}/resolveip
+%attr(755, root, root) %{_libdir}/plugin/*.so*
+
%attr(755, root, root) %{_sbindir}/mysqld
%attr(755, root, root) %{_sbindir}/mysqld-debug
%attr(755, root, root) %{_sbindir}/mysqlmanager
@@ -818,6 +842,8 @@ fi
%{_libdir}/mysql/libvio.a
%{_libdir}/mysql/libz.a
%{_libdir}/mysql/libz.la
+%{_libdir}/plugin/*.a
+%{_libdir}/plugin/*.la
%files shared
%defattr(-, root, root, 0755)
@@ -847,6 +873,19 @@ fi
# itself - note that they must be ordered by date (important when
# merging BK trees)
%changelog
+* Mon Aug 24 2009 Jonathan Perkin <jperkin(a)sun.com>
+
+- Add conditionals for bundled zlib and innodb plugin
+
+* Fri Aug 21 2009 Jonathan Perkin <jperkin(a)sun.com>
+
+- Install plugin libraries in appropriate packages.
+- Disable example plugins.
+
+* Thu Aug 20 2009 Jonathan Perkin <jperkin@stripped>
+
+- Update variable used for mysql-test suite location to match source.
+
* Fri Nov 07 2008 Joerg Bruehe <joerg(a)mysql.com>
- Correct yesterday's fix, so that it also works for the last flag,
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
-=-=(Guest - Mon, 10 Aug 2009, 11:12)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6580 2009-08-10 11:12:36.000000000 +0300
+++ /tmp/wklog.36.new.6580 2009-08-10 11:12:36.000000000 +0300
@@ -1,4 +1,3 @@
-
Context
-------
At the moment, the server has a replication slave option
@@ -67,6 +66,6 @@
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require use to parse the
-statement).
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
-=-=(Psergey - Sun, 09 Aug 2009, 23:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13425 2009-08-09 23:53:54.000000000 +0300
+++ /tmp/wklog.36.new.13425 2009-08-09 23:53:54.000000000 +0300
@@ -1 +1,72 @@
+Context
+-------
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require use to parse the
+statement).
+
-=-=(Psergey - Sun, 09 Aug 2009, 12:27)=-=-
Dependency created: 39 now depends on 36
------------------------------------------------------------
-=-=(View All Progress Notes, 11 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Execute_load_query_log_event
- Create_file_log_event
TODO. Needed to check this list requires carefully !!!
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add print_use_stmt() invocations where
needed (according to the events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 12:12)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3961 2009-09-15 12:12:26.000000000 +0300
+++ /tmp/wklog.36.new.3961 2009-09-15 12:12:26.000000000 +0300
@@ -144,6 +144,8 @@
3. Supporting rewrite-db for SBR events
---------------------------------------
+Limited to emiting USE <db_to> instead of USE <db_from>.
+
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
-=-=(Guest - Mon, 10 Aug 2009, 11:12)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6580 2009-08-10 11:12:36.000000000 +0300
+++ /tmp/wklog.36.new.6580 2009-08-10 11:12:36.000000000 +0300
@@ -1,4 +1,3 @@
-
Context
-------
At the moment, the server has a replication slave option
@@ -67,6 +66,6 @@
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require use to parse the
-statement).
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
-=-=(Psergey - Sun, 09 Aug 2009, 23:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13425 2009-08-09 23:53:54.000000000 +0300
+++ /tmp/wklog.36.new.13425 2009-08-09 23:53:54.000000000 +0300
@@ -1 +1,72 @@
+Context
+-------
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require use to parse the
+statement).
+
-=-=(Psergey - Sun, 09 Aug 2009, 12:27)=-=-
Dependency created: 39 now depends on 36
------------------------------------------------------------
-=-=(View All Progress Notes, 11 total)=-=-
http://askmonty.org/worklog/index.pl?tid=36&nolimit=1
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
Limited to emiting USE <db_to> instead of USE <db_from>.
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Execute_load_query_log_event
- Create_file_log_event
TODO. Needed to check this list requires carefully !!!
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add print_use_stmt() invocations where
needed (according to the events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
-=-=(Guest - Mon, 10 Aug 2009, 11:12)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6580 2009-08-10 11:12:36.000000000 +0300
+++ /tmp/wklog.36.new.6580 2009-08-10 11:12:36.000000000 +0300
@@ -1,4 +1,3 @@
-
Context
-------
At the moment, the server has a replication slave option
@@ -67,6 +66,6 @@
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require use to parse the
-statement).
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
-=-=(Psergey - Sun, 09 Aug 2009, 23:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13425 2009-08-09 23:53:54.000000000 +0300
+++ /tmp/wklog.36.new.13425 2009-08-09 23:53:54.000000000 +0300
@@ -1 +1,72 @@
+Context
+-------
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require use to parse the
+statement).
+
-=-=(Psergey - Sun, 09 Aug 2009, 12:27)=-=-
Dependency created: 39 now depends on 36
-=-=(Psergey - Fri, 07 Aug 2009, 14:57)=-=-
Title modified.
--- /tmp/wklog.36.old.14687 2009-08-07 14:57:49.000000000 +0300
+++ /tmp/wklog.36.new.14687 2009-08-07 14:57:49.000000000 +0300
@@ -1 +1 @@
-Add a mysqlbinlog option to change the database
+Add a mysqlbinlog option to change the used database
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Execute_load_query_log_event
- Create_file_log_event
TODO. Needed to check this list requires carefully !!!
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add print_use_stmt() invocations where
needed (according to the events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add a mysqlbinlog option to change the used database (36)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add a mysqlbinlog option to change the used database
CREATION DATE..: Fri, 07 Aug 2009, 14:57
SUPERVISOR.....: Monty
IMPLEMENTOR....:
COPIES TO......:
CATEGORY.......: Server-RawIdeaBin
TASK ID........: 36 (http://askmonty.org/worklog/?tid=36)
VERSION........: Server-9.x
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 0 (hours remain)
ORIG. ESTIMATE.: 0
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 12:08)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.3794 2009-09-15 12:08:54.000000000 +0300
+++ /tmp/wklog.36.new.3794 2009-09-15 12:08:54.000000000 +0300
@@ -1 +1,229 @@
+Content
+-------
+1. Adding rewrite-db option
+2. Supporting rewrite-db option for RBR events
+3. Supporting rewrite-db option for SBR events
+ (Limited to affecting only USE statements)
+4. Current status
+
+1. Adding rewrite-db option
+---------------------------
+
+1.1. Syntax:
+ --rewrite-db='db_from->db_to'
+
+1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
+
+1.3. In mysqlbinlog.cc:
+
+- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
+- Add Rpl_filter object to mysqlbinlog.cc
+
+ Rpl_filter* binlog_filter;
+
+- Add corresponding switch case to get_one_option():
+
+ case OPT_REWRITE_DB:
+ <extract db-from and db-to strings>
+ binlog_filter->add_db_rewrite(db_from, db_to);
+ break;
+ .
+Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
+additional changes are required:
+
+- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
+ uses sql_alloc() which is THD dependent. These are to be modified
+ as follows:
+
+ #ifdef MYSQL_CLIENT
+ extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
+ #endif
+
+ class Sql_alloc
+ { ...
+ static void *operator new(size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ static void *operator new[](size_t size) throw ()
+ {
+ #ifndef MYSQL_CLIENT
+ return sql_alloc(size);
+ #else
+ return alloc_root(&sql_list_client_mem_root, size);
+ #endif
+ }
+ ...
+ }
+
+- In rpl_filter.cc:
+
+ Rpl_filter::Rpl_filter() :
+ ...
+ {
+ #ifdef MYSQL_CLIENT
+ init_alloc_root(&sql_list_client_mem_root, ...);
+ #endif
+ ...
+ }
+
+ Rpl_filter::~Rpl_filter()
+ { ...
+ #ifdef MYSQL_CLIENT
+ free_root(&sql_list_client_mem_root, ...);
+ #endif
+ }
+
+2. Supporting rewrite-db for RBR events
+---------------------------------------
+
+In binlog, each row operation event is preceded by Table map event(s) which maps
+table id(s) to database and table names. So, it's enough to support rewriting
+database name in a Table map.
+
+2.1. Add rewrite_db() member to Table_map_log_event:
+
+ int Table_map_log_event::rewrite_db(
+ const char* new_db,
+ size_t new_db_len,
+ const Format_description_log_event* desc)
+ {
+ /* 1. In temp_buf member (possibly reallocating it) rewrite
+ event length, db length, and db parts
+ 2. Change m_dblen and m_dbnam members
+ */
+ }
+
+Comment. This function assumes that temp_buf member contains Table map
+binlog representaion (temp_buf is used for creating corresponding
+BINLOG statement).
+
+2.2. In mysqlbinlog modify corresponding switch case in the
+process_event() function:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ ...
+ case TABLE_MAP_EVENT:
+ {
+ Table_map_log_event *map= ((Table_map_log_event *)ev);
+ if (shall_skip_database(map->get_db_name()))
+ { ...
+ }
+ // WL36
+ size_t new_len= 0;
+ const char* new_db= binlog_filter->get_rewrite_db(
+ map->get_db_name(), &new_len);
+ if (new_len && map->rewrite_db(new_db, new_len,
+ glob_description_event))
+ { error("Could not rewrite database name");
+ goto err;
+ }
+ }
+ case WRITE_ROWS_EVENT:
+ case DELETE_ROWS_EVENT:
+ case UPDATE_ROWS_EVENT:
+ ...
+ }
+ ...
+ }
+
+Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
+a (db_from, db_to) pair, this function returns pointer to db_to and
+sets len = db_to length; otherwise, it returns db_from and does not
+change len value.
+
+3. Supporting rewrite-db for SBR events
+---------------------------------------
+
+USE statements can be emited by mysqlbinlog as a result of processing the
+following events (see process_event() function):
+
+- Query_log_event
+- Execute_load_query_log_event
+- Create_file_log_event
+
+TODO. Needed to check this list requires carefully !!!
+
+Conditions for emiting use-statement:
+- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
+ (e.g. it is ON for 'create database' statement)
+- event's db name differs from db_name in PRINT_EVENT_INFO
+ (PRINT_EVENT_INFO keeps db name of the last issued USE statement;
+ initially, this db name is empty).
+
+3.1. In mysqlbinlog.cc
+
+- Add the following function:
+
+ void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
+ {
+ if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
+ return;
+ /*
+ - For events listed above get db_from = event->db;
+ - If db_from is the same as pinfo->db then return;
+ - If there is rewrite-db rule db_from->db_to,
+ set db = db_to. Else set db = db_from;
+ - Print "use <db>" to mysqlbinlog output
+ - Set pinfo->db = db_from
+ (this suppresses emiting use-statements by corresponding
+ log_event's print-function)
+ */
+ }
+
+- In process_event() function add print_use_stmt() invocations where
+ needed (according to the events lis above), e.g.:
+
+ Exit_status process_event(
+ PRINT_EVENT_INFO *print_event_info,
+ Log_event *ev, ...)
+ {
+ ...
+ switch (ev_type) {
+ case QUERY_EVENT:
+ if (shall_skip_database(((Query_log_event*)ev)->db))
+ goto end;
+ if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
+ {
+ // Possibly in case of rewite-db rule for ev->db
+ // a warning should be emited here (see note below)
+ ... write_event_header_and_base64(ev, ...) ...
+ }
+ else
+ {
+ print_use_stmt((Query_log_event*)ev, print_event_info);
+ ev->print(result_file, print_event_info);
+ }
+ break;
+ ...
+ }
+ ...
+ }
+
+Note. write_event_header_and_base64() does not print use-statement. It
+produces BINLOG statement using ev->temp_buf content (i.e. the binary
+log representation of the event). We don't rewrite temp_buf here with
+db_to name (as we do it for Table map event) - this implies the
+limitation 3 mentioned above.
+Question: Is supporting of rewite_db + --base64-output really needed
+currently?
+
+4. Current status
+-----------------
+
+The outlined design (implemented for mysql-5.1.37) is tested for
+simple test-cases.
+
+TODO. 1. Check list of events which can emit use-statement.
+ 2. Supporting of rewite_db + --base64-output ?
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9711 2009-09-14 11:51:43.000000000 +0300
+++ /tmp/wklog.36.new.9711 2009-09-14 11:51:43.000000000 +0300
@@ -1 +1 @@
-Pay no attention: just check for having access
+
-=-=(Guest - Mon, 14 Sep 2009, 11:51)=-=-
Low Level Design modified.
--- /tmp/wklog.36.old.9678 2009-09-14 11:51:28.000000000 +0300
+++ /tmp/wklog.36.new.9678 2009-09-14 11:51:28.000000000 +0300
@@ -1 +1 @@
-
+Pay no attention: just check for having access
-=-=(Knielsen - Mon, 17 Aug 2009, 12:44)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.7834 2009-08-17 12:44:17.000000000 +0300
+++ /tmp/wklog.36.new.7834 2009-08-17 12:44:17.000000000 +0300
@@ -13,7 +13,9 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
-See also MySQL BUG#42941.
+See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
+merged into MariaDB at the time of writing, but planned to be merged before
+release.
What we could do
----------------
-=-=(Guest - Sun, 16 Aug 2009, 17:11)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.27162 2009-08-16 17:11:12.000000000 +0300
+++ /tmp/wklog.36.new.27162 2009-08-16 17:11:12.000000000 +0300
@@ -13,6 +13,8 @@
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
+See also MySQL BUG#42941.
+
What we could do
----------------
-=-=(Psergey - Mon, 10 Aug 2009, 15:41)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13035 2009-08-10 15:41:51.000000000 +0300
+++ /tmp/wklog.36.new.13035 2009-08-10 15:41:51.000000000 +0300
@@ -1,5 +1,7 @@
Context
-------
+(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
+overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
-=-=(Guest - Mon, 10 Aug 2009, 11:12)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.6580 2009-08-10 11:12:36.000000000 +0300
+++ /tmp/wklog.36.new.6580 2009-08-10 11:12:36.000000000 +0300
@@ -1,4 +1,3 @@
-
Context
-------
At the moment, the server has a replication slave option
@@ -67,6 +66,6 @@
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
-mysqlbinlog (adding a comment is easy and doesn't require use to parse the
-statement).
+mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
+parse the statement).
-=-=(Psergey - Sun, 09 Aug 2009, 23:53)=-=-
High-Level Specification modified.
--- /tmp/wklog.36.old.13425 2009-08-09 23:53:54.000000000 +0300
+++ /tmp/wklog.36.new.13425 2009-08-09 23:53:54.000000000 +0300
@@ -1 +1,72 @@
+Context
+-------
+At the moment, the server has a replication slave option
+
+ --replicate-rewrite-db="from->to"
+
+the option affects
+- Table_map_log_event (all RBR events)
+- Load_log_event (LOAD DATA)
+- Query_log_event (SBR-based updates, with the usual assumption that the
+ statement refers to tables in current database, so that changing the current
+ database will make the statement to work on a table in a different database).
+
+What we could do
+----------------
+
+Option1: make mysqlbinlog accept --replicate-rewrite-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
+same extent as replication slave would process --replicate-rewrite-db option.
+
+
+Option2: Add database-agnostic RBR events and --strip-db option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Right now RBR events require a databasename. It is not possible to have RBR
+event stream that won't mention which database the events are for. When I
+tried to use debugger and specify empty database name, attempt to apply the
+binlog resulted in this error:
+
+090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
+opening tables,
+
+We could do as follows:
+- Make the server interpret empty database name in RBR event (i.e. in a
+ Table_map_log_event) as "use current database". Binlog slave thread
+ probably should not allow such events as it doesn't have a natural current
+ database.
+- Add a mysqlbinlog --strip-db option that would
+ = not produce any "USE dbname" statements
+ = change databasename for all RBR events to be empty
+
+That way, mysqlbinlog output will be database-agnostic and apply to the
+current database.
+(this will have the usual limitations that we assume that all statements in
+the binlog refer to the current database).
+
+Option3: Enhance database rewrite
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If there is a need to support database change for statements that use
+dbname.tablename notation and are replicated as statements (i.e. are DDL
+statements and/or DML statements that are binlogged as statements),
+then that could be supported as follows:
+
+- Make the server's parser recognize special form of comments
+
+ /* !database-alias(oldname,newname) */
+
+ and save the mapping somewhere
+
+- Put the hooks in table open and name resolution code to use the saved
+ mapping.
+
+
+Once we've done the above, it will be easy to perform a complete,
+no-compromise or restrictions database name change in binary log.
+
+It will be possible to do the rewrites either on the slave (
+--replicate-rewrite-db will work for all kinds of statements), or in
+mysqlbinlog (adding a comment is easy and doesn't require use to parse the
+statement).
+
-=-=(Psergey - Sun, 09 Aug 2009, 12:27)=-=-
Dependency created: 39 now depends on 36
-=-=(Psergey - Fri, 07 Aug 2009, 14:57)=-=-
Title modified.
--- /tmp/wklog.36.old.14687 2009-08-07 14:57:49.000000000 +0300
+++ /tmp/wklog.36.new.14687 2009-08-07 14:57:49.000000000 +0300
@@ -1 +1 @@
-Add a mysqlbinlog option to change the database
+Add a mysqlbinlog option to change the used database
DESCRIPTION:
Sometimes there is a need to take a binary log and apply it to a database with
a different name than the original name of the database on binlog producer.
If one is using statement-based replication, he can achieve this by grepping
out "USE dbname" statements out of the output of mysqlbinlog(*). With
row-based replication this is no longer possible, as database name is encoded
within the the BINLOG '....' statement.
This task is about adding an option to mysqlbinlog that would allow to change
the names of used databases in both RBR and SBR events.
(*) this implies that all statements refer to tables in the current database,
doesn't catch updates made inside stored functions and so forth, but still
works for a practially-important subset of cases.
HIGH-LEVEL SPECIFICATION:
Context
-------
(See http://askmonty.org/wiki/index.php/Scratch/ReplicationOptions for global
overview)
At the moment, the server has a replication slave option
--replicate-rewrite-db="from->to"
the option affects
- Table_map_log_event (all RBR events)
- Load_log_event (LOAD DATA)
- Query_log_event (SBR-based updates, with the usual assumption that the
statement refers to tables in current database, so that changing the current
database will make the statement to work on a table in a different database).
See also MySQL BUG#42941. Note this bug is fixed in MySQL 5.1.37, which is not
merged into MariaDB at the time of writing, but planned to be merged before
release.
What we could do
----------------
Option1: make mysqlbinlog accept --replicate-rewrite-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Make mysqlbinlog accept --replicate-rewrite-db options and process them to the
same extent as replication slave would process --replicate-rewrite-db option.
Option2: Add database-agnostic RBR events and --strip-db option
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Right now RBR events require a databasename. It is not possible to have RBR
event stream that won't mention which database the events are for. When I
tried to use debugger and specify empty database name, attempt to apply the
binlog resulted in this error:
090809 17:38:44 [ERROR] Slave SQL: Error 'Table '.tablename' doesn't exist' on
opening tables,
We could do as follows:
- Make the server interpret empty database name in RBR event (i.e. in a
Table_map_log_event) as "use current database". Binlog slave thread
probably should not allow such events as it doesn't have a natural current
database.
- Add a mysqlbinlog --strip-db option that would
= not produce any "USE dbname" statements
= change databasename for all RBR events to be empty
That way, mysqlbinlog output will be database-agnostic and apply to the
current database.
(this will have the usual limitations that we assume that all statements in
the binlog refer to the current database).
Option3: Enhance database rewrite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If there is a need to support database change for statements that use
dbname.tablename notation and are replicated as statements (i.e. are DDL
statements and/or DML statements that are binlogged as statements),
then that could be supported as follows:
- Make the server's parser recognize special form of comments
/* !database-alias(oldname,newname) */
and save the mapping somewhere
- Put the hooks in table open and name resolution code to use the saved
mapping.
Once we've done the above, it will be easy to perform a complete,
no-compromise or restrictions database name change in binary log.
It will be possible to do the rewrites either on the slave (
--replicate-rewrite-db will work for all kinds of statements), or in
mysqlbinlog (adding a comment is easy and doesn't require mysqlbinlog to
parse the statement).
LOW-LEVEL DESIGN:
Content
-------
1. Adding rewrite-db option
2. Supporting rewrite-db option for RBR events
3. Supporting rewrite-db option for SBR events
(Limited to affecting only USE statements)
4. Current status
1. Adding rewrite-db option
---------------------------
1.1. Syntax:
--rewrite-db='db_from->db_to'
1.2. Add 'OPT_REWRITE_DB' to 'options_client' (in client_priv.h).
1.3. In mysqlbinlog.cc:
- Add { "rewrite-db", OPT_REWRITE_DB, ...} record to my_long_options:
- Add Rpl_filter object to mysqlbinlog.cc
Rpl_filter* binlog_filter;
- Add corresponding switch case to get_one_option():
case OPT_REWRITE_DB:
<extract db-from and db-to strings>
binlog_filter->add_db_rewrite(db_from, db_to);
break;
.
Note. To make Rpl_filter usable in a MYSQL_CLIENT context, few small
additional changes are required:
- In sql_list.cc/h, Sql_alloc::new(size_t) and Sql_alloc::new[](size_t)
uses sql_alloc() which is THD dependent. These are to be modified
as follows:
#ifdef MYSQL_CLIENT
extern MEM_ROOT sql_list_client_mem_root; // defined in sql_list.cc
#endif
class Sql_alloc
{ ...
static void *operator new(size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
static void *operator new[](size_t size) throw ()
{
#ifndef MYSQL_CLIENT
return sql_alloc(size);
#else
return alloc_root(&sql_list_client_mem_root, size);
#endif
}
...
}
- In rpl_filter.cc:
Rpl_filter::Rpl_filter() :
...
{
#ifdef MYSQL_CLIENT
init_alloc_root(&sql_list_client_mem_root, ...);
#endif
...
}
Rpl_filter::~Rpl_filter()
{ ...
#ifdef MYSQL_CLIENT
free_root(&sql_list_client_mem_root, ...);
#endif
}
2. Supporting rewrite-db for RBR events
---------------------------------------
In binlog, each row operation event is preceded by Table map event(s) which maps
table id(s) to database and table names. So, it's enough to support rewriting
database name in a Table map.
2.1. Add rewrite_db() member to Table_map_log_event:
int Table_map_log_event::rewrite_db(
const char* new_db,
size_t new_db_len,
const Format_description_log_event* desc)
{
/* 1. In temp_buf member (possibly reallocating it) rewrite
event length, db length, and db parts
2. Change m_dblen and m_dbnam members
*/
}
Comment. This function assumes that temp_buf member contains Table map
binlog representaion (temp_buf is used for creating corresponding
BINLOG statement).
2.2. In mysqlbinlog modify corresponding switch case in the
process_event() function:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
...
case TABLE_MAP_EVENT:
{
Table_map_log_event *map= ((Table_map_log_event *)ev);
if (shall_skip_database(map->get_db_name()))
{ ...
}
// WL36
size_t new_len= 0;
const char* new_db= binlog_filter->get_rewrite_db(
map->get_db_name(), &new_len);
if (new_len && map->rewrite_db(new_db, new_len,
glob_description_event))
{ error("Could not rewrite database name");
goto err;
}
}
case WRITE_ROWS_EVENT:
case DELETE_ROWS_EVENT:
case UPDATE_ROWS_EVENT:
...
}
...
}
Comment. Rpl_filter::get_rewrite_db(db_from, &len): if filter contains
a (db_from, db_to) pair, this function returns pointer to db_to and
sets len = db_to length; otherwise, it returns db_from and does not
change len value.
3. Supporting rewrite-db for SBR events
---------------------------------------
USE statements can be emited by mysqlbinlog as a result of processing the
following events (see process_event() function):
- Query_log_event
- Execute_load_query_log_event
- Create_file_log_event
TODO. Needed to check this list requires carefully !!!
Conditions for emiting use-statement:
- LOG_EVENT_SUPPRESS_USE_F is OFF for the event
(e.g. it is ON for 'create database' statement)
- event's db name differs from db_name in PRINT_EVENT_INFO
(PRINT_EVENT_INFO keeps db name of the last issued USE statement;
initially, this db name is empty).
3.1. In mysqlbinlog.cc
- Add the following function:
void print_use_stmt(Log_event* event, PRINT_EVENT_INFO* pinfo)
{
if (event->flags & LOG_EVENT_SUPPRESS_USE_F)
return;
/*
- For events listed above get db_from = event->db;
- If db_from is the same as pinfo->db then return;
- If there is rewrite-db rule db_from->db_to,
set db = db_to. Else set db = db_from;
- Print "use <db>" to mysqlbinlog output
- Set pinfo->db = db_from
(this suppresses emiting use-statements by corresponding
log_event's print-function)
*/
}
- In process_event() function add print_use_stmt() invocations where
needed (according to the events lis above), e.g.:
Exit_status process_event(
PRINT_EVENT_INFO *print_event_info,
Log_event *ev, ...)
{
...
switch (ev_type) {
case QUERY_EVENT:
if (shall_skip_database(((Query_log_event*)ev)->db))
goto end;
if (opt_base64_output_mode == BASE64_OUTPUT_ALWAYS)
{
// Possibly in case of rewite-db rule for ev->db
// a warning should be emited here (see note below)
... write_event_header_and_base64(ev, ...) ...
}
else
{
print_use_stmt((Query_log_event*)ev, print_event_info);
ev->print(result_file, print_event_info);
}
break;
...
}
...
}
Note. write_event_header_and_base64() does not print use-statement. It
produces BINLOG statement using ev->temp_buf content (i.e. the binary
log representation of the event). We don't rewrite temp_buf here with
db_to name (as we do it for Table map event) - this implies the
limitation 3 mentioned above.
Question: Is supporting of rewite_db + --base64-output really needed
currently?
4. Current status
-----------------
The outlined design (implemented for mysql-5.1.37) is tested for
simple test-cases.
TODO. 1. Check list of events which can emit use-statement.
2. Supporting of rewite_db + --base64-output ?
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2733)
by knielsen@knielsen-hq.org 15 Sep '09
by knielsen@knielsen-hq.org 15 Sep '09
15 Sep '09
#At lp:maria
2733 knielsen(a)knielsen-hq.org 2009-09-15
MySQL 5.1.38 after-merge fixes.
Fix some mistakes in the original merge found during review.
removed:
mysql-test/include/wait_for_status_var.inc.moved
modified:
mysql-test/include/concurrent.inc
mysql-test/include/mix1.inc
mysql-test/r/innodb_mysql.result
per-file messages:
mysql-test/include/concurrent.inc
Add missing lines mistakenly omitted in merge.
mysql-test/include/mix1.inc
Revert wrong change done during merge.
mysql-test/include/wait_for_status_var.inc.moved
Remove file which was accidentally not removed during conflict resolution in merge.
mysql-test/r/innodb_mysql.result
Revert result file change following fixing root problem in merge.
=== modified file 'mysql-test/include/concurrent.inc'
--- a/mysql-test/include/concurrent.inc 2009-09-07 20:50:10 +0000
+++ b/mysql-test/include/concurrent.inc 2009-09-15 06:08:54 +0000
@@ -666,7 +666,9 @@ disconnect thread1;
--echo ** connection thread2
connection thread2;
disconnect thread2;
+--source include/wait_until_disconnected.inc
--echo ** connection default
connection default;
drop table t1;
drop user mysqltest@localhost;
+
=== modified file 'mysql-test/include/mix1.inc'
--- a/mysql-test/include/mix1.inc 2009-09-07 20:50:10 +0000
+++ b/mysql-test/include/mix1.inc 2009-09-15 06:08:54 +0000
@@ -1509,6 +1509,7 @@ DROP TABLE t1;
--echo # SQL_SELECT::test_quick_select
--echo # (reproduced only with InnoDB tables)
--echo #
+
eval
CREATE TABLE t1 (c1 INT, c2 INT, c3 INT, KEY (c3), KEY (c2, c3))
ENGINE=$engine_type;
@@ -1538,7 +1539,7 @@ DROP TABLE t1;
eval
CREATE TABLE t1 (c1 DECIMAL(12,2), c2 DECIMAL(12,2), c3 DECIMAL(12,2),
KEY (c3), KEY (c2, c3))
- ENGINE=innodb;
+ ENGINE=$engine_type;
INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2);
SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
=== removed file 'mysql-test/include/wait_for_status_var.inc.moved'
--- a/mysql-test/include/wait_for_status_var.inc.moved 2009-09-07 20:50:10 +0000
+++ b/mysql-test/include/wait_for_status_var.inc.moved 1970-01-01 00:00:00 +0000
@@ -1,68 +0,0 @@
-# ==== Purpose ====
-#
-# Waits until a variable from SHOW STATUS has returned a specified
-# value, or until a timeout is reached.
-#
-# ==== Usage ====
-#
-# let $status_var= Threads_connected;
-# let $status_var_value= 1;
-# --source include/wait_for_status_var.inc
-#
-# Parameters:
-#
-# $status_var, $status_var_value
-# This macro will wait until the variable of SHOW STATUS
-# named $status_var gets the value $status_var_value. See
-# the example above.
-#
-# $status_type= GLOBAL|SESSION
-# To specify the type (attribute) of status variable and
-# run either SHOW GLOBAL STATUS or SHOW SESSION STATUS.
-#
-# $status_var_comparsion
-# By default, this file waits until $status_var becomes equal to
-# $status_var_value. If you want to wait until $status_var
-# becomes *unequal* to $status_var_value, set this parameter to the
-# string '!=', like this:
-# let $status_var_comparsion= !=;
-#
-# $status_timeout
-# The default timeout is 1 minute. You can change the timeout by
-# setting $status_timeout. The unit is tenths of seconds.
-#
-
-if (`SELECT STRCMP('$status_type', '') * STRCMP(UPPER('$status_type'), 'SESSION') * STRCMP(UPPER('$status_type'), 'GLOBAL')`)
-{
- --echo **** ERROR: Unknown type of variable status_type: allowed values are: SESSION or GLOBAL ****
- exit;
-}
-
-let $_status_timeout_counter= $status_timeout;
-if (!$_status_timeout_counter)
-{
- let $_status_timeout_counter= 600;
-}
-
-let $_status_var_comparsion= $status_var_comparsion;
-if (`SELECT '$_status_var_comparsion' = ''`)
-{
- let $_status_var_comparsion= =;
-}
-
-let $_show_status_value= query_get_value("SHOW $status_type STATUS LIKE '$status_var'", Value, 1);
-while (`SELECT NOT('$_show_status_value' $_status_var_comparsion '$status_var_value')`)
-{
- if (!$_status_timeout_counter)
- {
- --echo **** ERROR: failed while waiting for $status_type $status_var $_status_var_comparison $status_var_value ****
- --echo Note: the following output may have changed since the failure was detected
- --echo **** Showing STATUS, PROCESSLIST ****
- eval SHOW $status_type STATUS LIKE '$status_var';
- SHOW PROCESSLIST;
- exit;
- }
- dec $_status_timeout_counter;
- sleep 0.1;
- let $_show_status_value= query_get_value("SHOW $status_type STATUS LIKE '$status_var'", Value, 1);
-}
=== modified file 'mysql-test/r/innodb_mysql.result'
--- a/mysql-test/r/innodb_mysql.result 2009-09-09 21:06:57 +0000
+++ b/mysql-test/r/innodb_mysql.result 2009-09-15 06:08:54 +0000
@@ -1746,7 +1746,7 @@ id select_type table type possible_keys
DROP TABLE t1;
CREATE TABLE t1 (c1 DECIMAL(12,2), c2 DECIMAL(12,2), c3 DECIMAL(12,2),
KEY (c3), KEY (c2, c3))
-ENGINE=innodb;
+ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2);
SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x;
1
0
[Maria-developers] Rev 2730: MySQL 5.1 -> MariaDB 5.1 merge: windows build fixes in file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
by Sergey Petrunya 15 Sep '09
by Sergey Petrunya 15 Sep '09
15 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
------------------------------------------------------------
revno: 2730
revision-id: psergey(a)askmonty.org-20090914224548-yho0nxw78vvxd5yi
parent: knielsen(a)knielsen-hq.org-20090912073839-2jfav265c8pkm1ae
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd3
timestamp: Tue 2009-09-15 02:45:48 +0400
message:
MySQL 5.1 -> MariaDB 5.1 merge: windows build fixes
=== modified file 'CMakeLists.txt'
--- a/CMakeLists.txt 2009-09-07 20:50:10 +0000
+++ b/CMakeLists.txt 2009-09-14 22:45:48 +0000
@@ -137,6 +137,7 @@
IF(WIN32)
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
+ ADD_DEFINITIONS("-D_WIN32_WINNT=0x0501")
ENDIF(WIN32)
# default to x86 platform. We'll check for X64 in a bit
=== modified file 'sql/CMakeLists.txt'
--- a/sql/CMakeLists.txt 2009-09-07 20:50:10 +0000
+++ b/sql/CMakeLists.txt 2009-09-14 22:45:48 +0000
@@ -25,6 +25,7 @@
${CMAKE_SOURCE_DIR}/sql
${CMAKE_SOURCE_DIR}/regex
${CMAKE_SOURCE_DIR}/zlib
+ ${CMAKE_SOURCE_DIR}/extra/libevent
)
SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/sql/sql_yacc.h
@@ -93,7 +94,7 @@
SET_TARGET_PROPERTIES(mysqld PROPERTIES OUTPUT_NAME mysqld${MYSQLD_EXE_SUFFIX})
SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE)
-SET (MYSQLD_CORE_LIBS mysys zlib dbug strings yassl taocrypt vio regex sql)
+SET (MYSQLD_CORE_LIBS mysys zlib dbug strings yassl taocrypt vio regex sql libevent)
TARGET_LINK_LIBRARIES(mysqld ${MYSQLD_CORE_LIBS} ${MYSQLD_STATIC_ENGINE_LIBS})
TARGET_LINK_LIBRARIES(mysqld ws2_32.lib)
=== modified file 'storage/maria/CMakeLists.txt'
--- a/storage/maria/CMakeLists.txt 2008-06-09 09:06:06 +0000
+++ b/storage/maria/CMakeLists.txt 2009-09-14 22:45:48 +0000
@@ -12,8 +12,10 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
+
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
@@ -46,10 +48,9 @@
ha_maria.h maria_def.h ma_recovery_util.c
)
+MYSQL_STORAGE_ENGINE(MARIA)
IF(NOT SOURCE_SUBLIBS)
- ADD_LIBRARY(maria ${MARIA_SOURCES})
-
ADD_EXECUTABLE(maria_ftdump maria_ftdump.c)
TARGET_LINK_LIBRARIES(maria_ftdump maria myisam mysys dbug strings zlib wsock32)
=== modified file 'storage/maria/ma_rt_index.c'
--- a/storage/maria/ma_rt_index.c 2009-02-19 09:01:25 +0000
+++ b/storage/maria/ma_rt_index.c 2009-09-14 22:45:48 +0000
@@ -1134,12 +1134,12 @@
uint nod_flag;
ulong i;
MARIA_KEY tmp_key;
+ uchar *page_buf;
+ MARIA_PAGE page;
tmp_key.keyinfo= key->keyinfo;
tmp_key.data_length= key->data_length;
tmp_key.ref_length= key->ref_length;
tmp_key.flag= 0; /* Safety */
- uchar *page_buf;
- MARIA_PAGE page;
if (ReinsertList.n_pages)
{
=== modified file 'unittest/mysys/waiting_threads-t.c'
--- a/unittest/mysys/waiting_threads-t.c 2009-03-20 11:41:30 +0000
+++ b/unittest/mysys/waiting_threads-t.c 2009-09-14 22:45:48 +0000
@@ -263,6 +263,7 @@
kill_strategy=X; \
do_one_test();
#else
+ #define test_kill_strategy(X) \
diag("kill strategy: " #X); \
DBUG_PRINT("info", ("kill strategy: " #X)); \
kill_strategy=X; \
2
1
[Maria-developers] Rev 2731: Fix for in file:///Users/hakan/work/monty_program/maria-debug/
by Hakan Kuecuekyilmaz 15 Sep '09
by Hakan Kuecuekyilmaz 15 Sep '09
15 Sep '09
At file:///Users/hakan/work/monty_program/maria-debug/
------------------------------------------------------------
revno: 2731
revision-id: hakan(a)askmonty.org-20090915051302-6g4g1l3l4jommasz
parent: knielsen(a)knielsen-hq.org-20090907131358-6bq1e3qfcgi30hu8
committer: Hakan Kuecuekyilmaz <hakan(a)askmonty.org>
branch nick: maria-debug
timestamp: Tue 2009-09-15 07:13:02 +0200
message:
Fix for
mysqlslap: setting --engine does not get replicated
http://bugs.mysql.com/bug.php?id=46967
and
mysqlslap: specifying --engine and --create does not
work with --engine=<storage_engine>:<option>
https://bugs.launchpad.net/maria/+bug/429773
Problems were that an --engine=<storage_engine> was translated
to a "set storage_engine = <storage_engine>", wich is _not_
replicated. A --engine=<storage_engine>:<option> was not always
properly parsed and in some cases crashed.
Fixed by eliminating "set storage_engine = ..." and adding
proper DDL generation. Initialized an unitialized buffer to
prevent crashes and fixed to use proper pointer for in
case of --engine=<storage_engine>:<option> being the last
element in list of --engines.
Also cleaned up code for better readability.
Q: Should MySQL's replication actually replicate a
"set storage_engine = ..." command or not?
A: No it should not. It is documented here:
http://dev.mysql.com/doc/refman/5.1/en/replication-features-variables.html
...
"The storage_engine system variable is not replicated, which is a
good thing for replication between different storage engines." ...
Before the patch, mysqlslap was behaving this way:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| Before patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | Not OK |
| 1.2 | eng1,eng2 | OK | Not OK |
| 1.3 | eng1,eng2,eng3 | OK | Not OK |
| 1.4 | memory:option | OK | Not OK |
| 1.5 | memory:option,eng1 | OK | Not OK |
| 1.6 | eng1,memory:option | Not OK | Not OK |
| 1.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 1.8 | eng1,memory:option,eng2 | OK | Not OK |
| 1.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | Not OK |
| 2.2 | eng1,eng2 | OK | Not OK |
| 2.3 | eng1,eng2,eng3 | OK | Not OK |
| 2.4 | memory:option | Not OK | Not OK |
| 2.5 | memory:option,eng1 | Not OK | Not OK |
| 2.6 | eng1,memory:option | Not OK | Not OK |
| 2.7 | memory:option,eng1,eng2 | Crash | Not OK |
| 2.8 | eng1,memory:option,eng2 | Not OK | Not OK |
| 2.9 | eng1,eng2,memory:option | Not OK | Not OK |
+-----+-------------------------+--------+-------------+
After my final patch, mysqlslap now runs like this:
+-------------------------------+--------+-------------+
| | single | replication |
+-------------------------------+--------+-------------+
| After third patch |
+-------------------------------+--------+-------------+
| --engine[1] |
+-----+-------------------------+--------+-------------+
| 1.1 | eng1 | OK | OK |
| 1.2 | eng1,eng2 | OK | OK |
| 1.3 | eng1,eng2,eng3 | OK | OK |
| 1.4 | memory:option | OK | OK |
| 1.5 | memory:option,eng1 | OK | OK |
| 1.6 | eng1,memory:option | OK | OK |
| 1.7 | memory:option,eng1,eng2 | OK | OK |
| 1.8 | eng1,memory:option,eng2 | OK | OK |
| 1.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
+-------------------------------+--------+-------------+
| --create --engine[2] |
+-----+-------------------------+--------+-------------+
| 2.1 | eng1 | OK | OK |
| 2.2 | eng1,eng2 | OK | OK |
| 2.3 | eng1,eng2,eng3 | OK | OK |
| 2.4 | memory:option | OK | OK |
| 2.5 | memory:option,eng1 | OK | OK |
| 2.6 | eng1,memory:option | OK | OK |
| 2.7 | memory:option,eng1,eng2 | OK | OK |
| 2.8 | eng1,memory:option,eng2 | OK | OK |
| 2.9 | eng1,eng2,memory:option | OK | OK |
+-----+-------------------------+--------+-------------+
=== modified file 'client/mysqlslap.c'
--- a/client/mysqlslap.c 2009-04-25 10:05:32 +0000
+++ b/client/mysqlslap.c 2009-09-15 05:13:02 +0000
@@ -423,6 +423,10 @@
stats *sptr;
conclusions conclusion;
unsigned long long client_limit;
+ DYNAMIC_STRING table_string;
+ statement *ddl_with_engine;
+
+ init_dynamic_string(&table_string, "", 1024, 1024);
head_sptr= (stats *)my_malloc(sizeof(stats) * iterations,
MYF(MY_ZEROFILL|MY_FAE|MY_WME));
@@ -448,8 +452,39 @@
/* First we create */
if (create_statements)
- create_schema(mysql, create_schema_string, create_statements, eptr);
-
+ {
+ /*
+ In case of user supplied DDL and engine, we add the engine
+ type to the DDL here.
+ */
+ if (create_string && eptr)
+ {
+ dynstr_append(&table_string, create_statements->string);
+ dynstr_append(&table_string, " Engine = ");
+ dynstr_append(&table_string, eptr->string);
+
+ if (eptr->option)
+ {
+ dynstr_append(&table_string, " ");
+ dynstr_append(&table_string, eptr->option);
+ }
+
+ ddl_with_engine= (statement *) my_malloc(sizeof(statement),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ ddl_with_engine->string= (char *) my_malloc(table_string.length + 1,
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ ddl_with_engine->length= table_string.length + 1;
+ ddl_with_engine->type= create_statements->type;
+ strmov(ddl_with_engine->string, table_string.str);
+ ddl_with_engine->next= create_statements->next;
+
+ dynstr_free(&table_string);
+
+ create_schema(mysql, create_schema_string, ddl_with_engine, eptr);
+ }
+ else
+ create_schema(mysql, create_schema_string, create_statements, eptr);
+ }
/*
If we generated GUID we need to build a list of them from creation that
we can later use.
@@ -773,7 +808,7 @@
static statement *
build_table_string(void)
{
- char buf[HUGE_STRING_LENGTH];
+ char buf[HUGE_STRING_LENGTH]= "";
unsigned int col_count;
statement *ptr;
DYNAMIC_STRING table_string;
@@ -900,7 +935,7 @@
static statement *
build_update_string(void)
{
- char buf[HUGE_STRING_LENGTH];
+ char buf[HUGE_STRING_LENGTH]= "";
unsigned int col_count;
statement *ptr;
DYNAMIC_STRING update_string;
@@ -958,6 +993,7 @@
ptr->type= UPDATE_TYPE_REQUIRES_PREFIX ;
else
ptr->type= UPDATE_TYPE;
+
strmov(ptr->string, update_string.str);
dynstr_free(&update_string);
DBUG_RETURN(ptr);
@@ -973,8 +1009,8 @@
static statement *
build_insert_string(void)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH]= "";
+ unsigned int col_count;
statement *ptr;
DYNAMIC_STRING insert_string;
DBUG_ENTER("build_insert_string");
@@ -1064,8 +1100,8 @@
static statement *
build_select_string(my_bool key)
{
- char buf[HUGE_STRING_LENGTH];
- unsigned int col_count;
+ char buf[HUGE_STRING_LENGTH]= "";
+ unsigned int col_count;
statement *ptr;
static DYNAMIC_STRING query_string;
DBUG_ENTER("build_select_string");
@@ -1117,6 +1153,7 @@
ptr->type= SELECT_TYPE_REQUIRES_PREFIX;
else
ptr->type= SELECT_TYPE;
+
strmov(ptr->string, query_string.str);
dynstr_free(&query_string);
DBUG_RETURN(ptr);
@@ -1175,8 +1212,6 @@
exit(1);
}
-
-
if (auto_generate_sql && num_of_query && auto_actual_queries)
{
fprintf(stderr,
@@ -1217,6 +1252,7 @@
num_int_cols= atoi(str->string);
if (str->option)
num_int_cols_index= atoi(str->option);
+
option_cleanup(str);
}
@@ -1229,6 +1265,7 @@
num_char_cols_index= atoi(str->option);
else
num_char_cols_index= 0;
+
option_cleanup(str);
}
@@ -1463,6 +1500,7 @@
if (tty_password)
opt_password= get_tty_password(NullS);
+
DBUG_RETURN(0);
}
@@ -1477,6 +1515,7 @@
if (verbose >= 3)
printf("%.*s;\n", len, query);
+
return mysql_real_query(mysql, query, len);
}
@@ -1556,7 +1595,7 @@
create_schema(MYSQL *mysql, const char *db, statement *stmt,
option_string *engine_stmt)
{
- char query[HUGE_STRING_LENGTH];
+ char query[HUGE_STRING_LENGTH]= "";
statement *ptr;
statement *after_create;
int len;
@@ -1592,18 +1631,6 @@
}
}
- if (engine_stmt)
- {
- len= snprintf(query, HUGE_STRING_LENGTH, "set storage_engine=`%s`",
- engine_stmt->string);
- if (run_query(mysql, query, len))
- {
- fprintf(stderr,"%s: Cannot set default engine: %s\n", my_progname,
- mysql_error(mysql));
- exit(1);
- }
- }
-
count= 0;
after_create= stmt;
@@ -1615,10 +1642,23 @@
if (engine_stmt && engine_stmt->option && ptr->type == CREATE_TABLE_TYPE)
{
- char buffer[HUGE_STRING_LENGTH];
-
- snprintf(buffer, HUGE_STRING_LENGTH, "%s %s", ptr->string,
- engine_stmt->option);
+ char buffer[HUGE_STRING_LENGTH]= "";
+
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s %s",
+ ptr->string, engine_stmt->string, engine_stmt->option);
+ if (run_query(mysql, buffer, strlen(buffer)))
+ {
+ fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
+ my_progname, (uint)ptr->length, ptr->string, mysql_error(mysql));
+ exit(1);
+ }
+ }
+ else if (engine_stmt && engine_stmt->string && ptr->type == CREATE_TABLE_TYPE)
+ {
+ char buffer[HUGE_STRING_LENGTH]= "";
+
+ snprintf(buffer, HUGE_STRING_LENGTH, "%s Engine = %s",
+ ptr->string, engine_stmt->string);
if (run_query(mysql, buffer, strlen(buffer)))
{
fprintf(stderr,"%s: Cannot run query %.*s ERROR : %s\n",
@@ -1650,8 +1690,9 @@
static int
drop_schema(MYSQL *mysql, const char *db)
{
- char query[HUGE_STRING_LENGTH];
+ char query[HUGE_STRING_LENGTH]= "";
int len;
+
DBUG_ENTER("drop_schema");
len= snprintf(query, HUGE_STRING_LENGTH, "DROP SCHEMA IF EXISTS `%s`", db);
@@ -1842,7 +1883,7 @@
int length;
unsigned int key_val;
char *key;
- char buffer[HUGE_STRING_LENGTH];
+ char buffer[HUGE_STRING_LENGTH]= "";
/*
This should only happen if some sort of new engine was
@@ -1940,17 +1981,22 @@
uint count= 0; /* We know that there is always one */
for (tmp= *sptr= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME));
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME));
(retstr= strchr(ptr, delm));
tmp->next= (option_string *)my_malloc(sizeof(option_string),
- MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
+ MYF(MY_ZEROFILL|MY_FAE|MY_WME)),
tmp= tmp->next)
{
- char buffer[HUGE_STRING_LENGTH];
+ char buffer[HUGE_STRING_LENGTH]= "";
char *buffer_ptr;
count++;
strncpy(buffer, ptr, (size_t)(retstr - ptr));
+ /*
+ Handle --engine=memory:max_row=200 cases, or more general speaking
+ --engine=<storage_engine>:<options>. --engine=<storage_engine:option
+ will be translated to Engine = storage_engine option
+ */
if ((buffer_ptr= strchr(buffer, ':')))
{
char *option_ptr;
@@ -1971,13 +2017,15 @@
tmp->length= (size_t)(retstr - ptr);
}
+ /* Skip delimiter delm */
ptr+= retstr - ptr + 1;
if (isspace(*ptr))
ptr++;
+
count++;
}
- if (ptr != origin+length)
+ if (ptr != origin + length)
{
char *origin_ptr;
@@ -1986,7 +2034,7 @@
char *option_ptr;
tmp->length= (size_t)(origin_ptr - ptr);
- tmp->string= my_strndup(origin, tmp->length, MYF(MY_FAE));
+ tmp->string= my_strndup(ptr, tmp->length, MYF(MY_FAE));
option_ptr= (char *)ptr + 1 + tmp->length;
@@ -2036,7 +2084,7 @@
if (ptr != script+length)
{
tmp->string= my_strndup(ptr, (uint)((script + length) - ptr),
- MYF(MY_FAE));
+ MYF(MY_FAE));
tmp->length= (size_t)((script + length) - ptr);
count++;
}
@@ -2092,8 +2140,9 @@
void
print_conclusions_csv(conclusions *con)
{
- char buffer[HUGE_STRING_LENGTH];
+ char buffer[HUGE_STRING_LENGTH]= "";
const char *ptr= auto_generate_sql_type ? auto_generate_sql_type : "query";
+
snprintf(buffer, HUGE_STRING_LENGTH,
"%s,%s,%ld.%03ld,%ld.%03ld,%ld.%03ld,%d,%llu\n",
con->engine ? con->engine : "", /* Storage engine we ran against */
1
0
[Maria-developers] Rev 2732: Make MariaDB work on windows: in file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
by Sergey Petrunya 15 Sep '09
by Sergey Petrunya 15 Sep '09
15 Sep '09
At file:///home/psergey/bzr-new/mysql-5.1-maria-contd3/
------------------------------------------------------------
revno: 2732
revision-id: psergey(a)askmonty.org-20090915010415-ntacv5ln6fqyb202
parent: psergey(a)askmonty.org-20090914225219-dlevkjuu61j32vge
committer: Sergey Petrunya <psergey(a)askmonty.org>
branch nick: mysql-5.1-maria-contd3
timestamp: Tue 2009-09-15 05:04:15 +0400
message:
Make MariaDB work on windows:
- fix xtradb compile failures on windows (why do we have to do it again?)
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc 2009-09-07 20:50:10 +0000
+++ b/sql/mysqld.cc 2009-09-15 01:04:15 +0000
@@ -663,7 +663,8 @@
uint report_port= MYSQL_PORT;
ulong master_retry_count=0;
char *master_user, *master_password, *master_host, *master_info_file;
-char *relay_log_info_file, *report_user, *report_password, *report_host;
+char *relay_log_info_file;
+char *report_user, *report_password, *report_host;
char *opt_relay_logname = 0, *opt_relaylog_index_name=0;
my_bool master_ssl;
char *master_ssl_key, *master_ssl_cert;
=== modified file 'sql/slave.h'
--- a/sql/slave.h 2009-09-07 20:50:10 +0000
+++ b/sql/slave.h 2009-09-15 01:04:15 +0000
@@ -101,7 +101,8 @@
extern char slave_skip_error_names[];
extern bool use_slave_mask;
extern char *slave_load_tmpdir;
-extern char *master_info_file, *relay_log_info_file;
+extern char *master_info_file;
+extern MYSQL_PLUGIN_IMPORT char *relay_log_info_file;
extern char *opt_relay_logname, *opt_relaylog_index_name;
extern my_bool opt_skip_slave_start, opt_reckless_slave;
extern my_bool opt_log_slave_updates;
@@ -205,7 +206,7 @@
/* the master variables are defaults read from my.cnf or command line */
extern uint master_port, master_connect_retry, report_port;
extern char * master_user, *master_password, *master_host;
-extern char *master_info_file, *relay_log_info_file, *report_user;
+extern char *master_info_file, *report_user;
extern char *report_host, *report_password;
extern my_bool master_ssl;
=== modified file 'storage/innobase/CMakeLists.txt'
--- a/storage/innobase/CMakeLists.txt 2009-06-10 08:59:49 +0000
+++ b/storage/innobase/CMakeLists.txt 2009-09-15 01:04:15 +0000
@@ -63,5 +63,5 @@
usr/usr0sess.c
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c ut/ut0list.c ut/ut0wqueue.c)
-MYSQL_STORAGE_ENGINE(INNOBASE)
+ ## psergey: MYSQL_STORAGE_ENGINE(INNOBASE)
=== modified file 'storage/xtradb/CMakeLists.txt'
--- a/storage/xtradb/CMakeLists.txt 2009-08-03 20:09:53 +0000
+++ b/storage/xtradb/CMakeLists.txt 2009-09-15 01:04:15 +0000
@@ -15,7 +15,8 @@
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
-ADD_DEFINITIONS(-D_WIN32 -D_LIB)
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
+ADD_DEFINITIONS(-D_WIN32 -D_LIB -DMYSQL_SERVER)
# Bug 19424 - InnoDB: Possibly a memory overrun of the buffer being freed (64-bit Visual C)
# Removing Win64 compiler optimizations for all innodb/mem/* files.
@@ -66,32 +67,5 @@
usr/usr0sess.c
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c ut/ut0list.c ut/ut0wqueue.c)
-IF(NOT SOURCE_SUBLIBS)
- ADD_LIBRARY(innobase ${INNOBASE_SOURCES})
- ADD_DEPENDENCIES(innobase GenError)
- SET_TARGET_PROPERTIES(innobase PROPERTIES COMPILE_FLAGS "-DMYSQL_SERVER")
-
- IF(INNODB_DYNAMIC_PLUGIN)
- # The dynamic plugin requires CMake 2.6.0 or later. Otherwise, the /DELAYLOAD property
- # will not be set
- CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
- ADD_LIBRARY(ha_innodb SHARED ${INNOBASE_SOURCES} ha_innodb.def handler/win_delay_loader.cc)
- ADD_DEPENDENCIES(ha_innodb GenError mysqld)
- # If build type is not specified as Release, default to Debug
- # This is a workaround to a problem in CMake 2.6, which does not
- # set the path of mysqld.lib correctly
- IF(CMAKE_BUILD_TYPE MATCHES Release)
- SET(CMAKE_BUILD_TYPE "Release")
- ELSE(CMAKE_BUILD_TYPE MATCHES Release)
- SET(CMAKE_BUILD_TYPE "Debug")
- ENDIF(CMAKE_BUILD_TYPE MATCHES Release)
- TARGET_LINK_LIBRARIES(ha_innodb strings zlib)
- TARGET_LINK_LIBRARIES(ha_innodb ${CMAKE_SOURCE_DIR}/sql/${CMAKE_BUILD_TYPE}/mysqld.lib)
- SET_TARGET_PROPERTIES(ha_innodb PROPERTIES OUTPUT_NAME ha_innodb)
- SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/MAP /MAPINFO:EXPORTS")
- SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/ENTRY:\"_DllMainCRTStartup@12\"")
- SET_TARGET_PROPERTIES(ha_innodb PROPERTIES COMPILE_FLAGS "-DMYSQL_DYNAMIC_PLUGIN")
- SET_TARGET_PROPERTIES(ha_innodb PROPERTIES LINK_FLAGS "/DELAYLOAD:mysqld.exe")
- ENDIF(INNODB_DYNAMIC_PLUGIN)
-
-ENDIF(NOT SOURCE_SUBLIBS)
+MYSQL_STORAGE_ENGINE(INNOBASE)
+
=== modified file 'storage/xtradb/btr/btr0cur.c'
--- a/storage/xtradb/btr/btr0cur.c 2009-06-25 01:43:25 +0000
+++ b/storage/xtradb/btr/btr0cur.c 2009-09-15 01:04:15 +0000
@@ -3267,6 +3267,7 @@
}
while (rec != supremum) {
+ rec_t* next_rec;
/* count recs */
if (stats_method == SRV_STATS_METHOD_IGNORE_NULLS) {
n_recs++;
@@ -3281,7 +3282,7 @@
}
}
- rec_t* next_rec = page_rec_get_next(rec);
+ next_rec = page_rec_get_next(rec);
if (next_rec == supremum) {
break;
}
=== modified file 'storage/xtradb/buf/buf0buddy.c'
--- a/storage/xtradb/buf/buf0buddy.c 2009-06-25 01:43:25 +0000
+++ b/storage/xtradb/buf/buf0buddy.c 2009-09-15 01:04:15 +0000
@@ -461,11 +461,11 @@
actually is a properly initialized buf_page_t object. */
if (size >= PAGE_ZIP_MIN_SIZE) {
+ mutex_t* mutex;
if (!have_page_hash_mutex)
mutex_exit(&zip_free_mutex);
/* This is a compressed page. */
- mutex_t* mutex;
if (!have_page_hash_mutex) {
mutex_enter(&LRU_list_mutex);
=== modified file 'storage/xtradb/buf/buf0flu.c'
--- a/storage/xtradb/buf/buf0flu.c 2009-08-09 07:04:58 +0000
+++ b/storage/xtradb/buf/buf0flu.c 2009-09-15 01:04:15 +0000
@@ -1216,6 +1216,7 @@
ulint n_replaceable;
ulint distance = 0;
ibool have_LRU_mutex = FALSE;
+ mutex_t* block_mutex;
if(UT_LIST_GET_LEN(buf_pool->unzip_LRU))
have_LRU_mutex = TRUE;
@@ -1239,7 +1240,7 @@
continue;
}
- mutex_t* block_mutex = buf_page_get_mutex(bpage);
+ block_mutex = buf_page_get_mutex(bpage);
retry_lock:
mutex_enter(block_mutex);
=== modified file 'storage/xtradb/fil/fil0fil.c'
--- a/storage/xtradb/fil/fil0fil.c 2009-06-25 01:43:25 +0000
+++ b/storage/xtradb/fil/fil0fil.c 2009-09-15 01:04:15 +0000
@@ -3039,6 +3039,13 @@
ulint i;
int len;
ib_uint64_t current_lsn;
+ ulint size_low, size_high, size;
+ ib_int64_t size_bytes;
+ dict_table_t* table;
+ dict_index_t* index;
+ fil_system_t* system;
+ fil_node_t* node = NULL;
+ fil_space_t* space;
current_lsn = log_get_lsn();
@@ -3060,15 +3067,11 @@
success = os_file_write(filepath, file, page, 0, 0, UNIV_PAGE_SIZE);
/* get file size */
- ulint size_low, size_high, size;
- ib_int64_t size_bytes;
os_file_get_size(file, &size_low, &size_high);
size_bytes = (((ib_int64_t)size_high) << 32)
+ (ib_int64_t)size_low;
/* get cruster index information */
- dict_table_t* table;
- dict_index_t* index;
table = dict_table_get_low(name);
index = dict_table_get_first_index(table);
ut_a(index->page==3);
@@ -3076,9 +3079,9 @@
/* read metadata from .exp file */
n_index = 0;
- bzero(old_id, sizeof(old_id));
- bzero(new_id, sizeof(new_id));
- bzero(root_page, sizeof(root_page));
+ memset(old_id, 0, sizeof(old_id));
+ memset(new_id, 0, sizeof(new_id));
+ memset(root_page, 0, sizeof(root_page));
info_file_path = fil_make_ibd_name(name, FALSE);
len = strlen(info_file_path);
@@ -3128,9 +3131,9 @@
mem_heap_t* heap = NULL;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
ulint* offsets = offsets_;
+ ib_int64_t offset;
size = (ulint) (size_bytes / UNIV_PAGE_SIZE);
/* over write space id of all pages */
- ib_int64_t offset;
rec_offs_init(offsets_);
@@ -3284,10 +3287,8 @@
}
mem_free(info_file_path);
- fil_system_t* system = fil_system;
+ system = fil_system;
mutex_enter(&(system->mutex));
- fil_node_t* node = NULL;
- fil_space_t* space;
space = fil_space_get_by_id(id);
if (space)
node = UT_LIST_GET_FIRST(space->chain);
=== modified file 'storage/xtradb/handler/handler0vars.h'
--- a/storage/xtradb/handler/handler0vars.h 2009-03-26 06:11:11 +0000
+++ b/storage/xtradb/handler/handler0vars.h 2009-09-15 01:04:15 +0000
@@ -25,26 +25,29 @@
This is a list of externals that can not be resolved by delay loading.
They have to be resolved indirectly via their addresses in the .map file.
All of them are external variables. */
-extern CHARSET_INFO* wdl_my_charset_bin;
-extern CHARSET_INFO* wdl_my_charset_latin1;
-extern CHARSET_INFO* wdl_my_charset_filename;
-extern CHARSET_INFO** wdl_system_charset_info;
-extern CHARSET_INFO** wdl_default_charset_info;
-extern CHARSET_INFO** wdl_all_charsets;
-extern system_variables* wdl_global_system_variables;
-extern char* wdl_mysql_real_data_home;
-extern char** wdl_mysql_data_home;
-extern char** wdl_tx_isolation_names;
-extern char** wdl_binlog_format_names;
-extern char* wdl_reg_ext;
-extern pthread_mutex_t* wdl_LOCK_thread_count;
-extern key_map* wdl_key_map_full;
-extern MY_TMPDIR* wdl_mysql_tmpdir_list;
-extern bool* wdl_mysqld_embedded;
-extern uint* wdl_lower_case_table_names;
-extern ulong* wdl_specialflag;
-extern int* wdl_my_umask;
-
+extern MYSQL_PLUGIN_IMPORT CHARSET_INFO my_charset_bin;
+extern MYSQL_PLUGIN_IMPORT CHARSET_INFO my_charset_latin1;
+extern MYSQL_PLUGIN_IMPORT CHARSET_INFO my_charset_filename;
+extern MYSQL_PLUGIN_IMPORT CHARSET_INFO* system_charset_info;
+extern MYSQL_PLUGIN_IMPORT CHARSET_INFO* default_charset_info;
+//extern MYSQL_PLUGIN_IMPORT CHARSET_INFO** all_charsets;
+extern MYSQL_PLUGIN_IMPORT system_variables global_system_variables;
+//extern MYSQL_PLUGIN_IMPORT char* mysql_real_data_home;
+extern MYSQL_PLUGIN_IMPORT char* mysql_data_home;
+//extern MYSQL_PLUGIN_IMPORT char** tx_isolation_names;
+//extern MYSQL_PLUGIN_IMPORT char** binlog_format_names;
+//extern MYSQL_PLUGIN_IMPORT char reg_ext;
+extern MYSQL_PLUGIN_IMPORT pthread_mutex_t LOCK_thread_count;
+extern MYSQL_PLUGIN_IMPORT key_map key_map_full;
+extern MYSQL_PLUGIN_IMPORT MY_TMPDIR mysql_tmpdir_list;
+extern MYSQL_PLUGIN_IMPORT bool mysqld_embedded;
+extern MYSQL_PLUGIN_IMPORT uint lower_case_table_names;
+extern MYSQL_PLUGIN_IMPORT ulong specialflag;
+extern MYSQL_PLUGIN_IMPORT int my_umask;
+
+extern MYSQL_PLUGIN_IMPORT char *relay_log_info_file;
+
+/*
#define my_charset_bin (*wdl_my_charset_bin)
#define my_charset_latin1 (*wdl_my_charset_latin1)
#define my_charset_filename (*wdl_my_charset_filename)
@@ -61,8 +64,9 @@
#define key_map_full (*wdl_key_map_full)
#define mysql_tmpdir_list (*wdl_mysql_tmpdir_list)
#define mysqld_embedded (*wdl_mysqld_embedded)
-#define lower_case_table_names (*wdl_lower_case_table_names)
-#define specialflag (*wdl_specialflag)
-#define my_umask (*wdl_my_umask)
+*/
+//#define lower_case_table_names (*wdl_lower_case_table_names)
+//#define specialflag (*wdl_specialflag)
+//#define my_umask (*wdl_my_umask)
#endif
=== modified file 'storage/xtradb/handler/i_s.cc'
--- a/storage/xtradb/handler/i_s.cc 2009-06-25 01:43:25 +0000
+++ b/storage/xtradb/handler/i_s.cc 2009-09-15 01:04:15 +0000
@@ -795,7 +795,7 @@
index = dict_index_get_if_in_cache_low(index_id);
if(index)
{
- if((p = strchr(index->table_name, '/')))
+ if((p = (char*) strchr(index->table_name, '/')))
{
strncpy(db_name_raw, index->table_name, p-index->table_name);
db_name_raw[p-index->table_name] = 0;
@@ -2861,7 +2861,7 @@
} else {
rec_per_key = n_rows;
}
- snprintf(buff, 256, (i == index->n_uniq)?"%llu":"%llu, ",
+ ut_snprintf(buff, 256, (i == index->n_uniq)?"%llu":"%llu, ",
rec_per_key);
strncat(row_per_keys, buff, 256 - strlen(row_per_keys));
}
=== modified file 'storage/xtradb/srv/srv0srv.c'
--- a/storage/xtradb/srv/srv0srv.c 2009-09-08 16:04:58 +0000
+++ b/storage/xtradb/srv/srv0srv.c 2009-09-15 01:04:15 +0000
@@ -2693,12 +2693,10 @@
/* defence line (max_checkpoint_age * 1/2) */
ib_uint64_t lsn = log_sys->lsn;
-
- mutex_exit(&(log_sys->mutex));
-
ib_uint64_t level, bpl;
buf_page_t* bpage;
+ mutex_exit(&(log_sys->mutex));
mutex_enter(&flush_list_mutex);
level = 0;
1
0
[Maria-developers] Progress (by Guest): Add Sphinx storage engine to MariaDB (42)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add Sphinx storage engine to MariaDB
CREATION DATE..: Mon, 10 Aug 2009, 23:57
SUPERVISOR.....: Monty
IMPLEMENTOR....: Bothorsen
COPIES TO......:
CATEGORY.......: Maria-BackLog
TASK ID........: 42 (http://askmonty.org/worklog/?tid=42)
VERSION........: Maria-2.0
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 16 (hours remain)
ORIG. ESTIMATE.: 16
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 02:25)=-=-
no
Reported zero hours worked. Estimate unchanged.
-=-=(Guest - Tue, 15 Sep 2009, 02:24)=-=-
Version updated.
--- /tmp/wklog.42.old.13241 2009-09-15 02:24:07.000000000 +0300
+++ /tmp/wklog.42.new.13241 2009-09-15 02:24:07.000000000 +0300
@@ -1 +1 @@
-Connector/.NET-5.1
+Maria-2.0
DESCRIPTION:
Add the Sphinx storage engine to the MariaDB tree
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Progress (by Guest): Add Sphinx storage engine to MariaDB (42)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add Sphinx storage engine to MariaDB
CREATION DATE..: Mon, 10 Aug 2009, 23:57
SUPERVISOR.....: Monty
IMPLEMENTOR....: Bothorsen
COPIES TO......:
CATEGORY.......: Maria-BackLog
TASK ID........: 42 (http://askmonty.org/worklog/?tid=42)
VERSION........: Maria-2.0
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 16 (hours remain)
ORIG. ESTIMATE.: 16
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 02:25)=-=-
no
Reported zero hours worked. Estimate unchanged.
-=-=(Guest - Tue, 15 Sep 2009, 02:24)=-=-
Version updated.
--- /tmp/wklog.42.old.13241 2009-09-15 02:24:07.000000000 +0300
+++ /tmp/wklog.42.new.13241 2009-09-15 02:24:07.000000000 +0300
@@ -1 +1 @@
-Connector/.NET-5.1
+Maria-2.0
DESCRIPTION:
Add the Sphinx storage engine to the MariaDB tree
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add Sphinx storage engine to MariaDB (42)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add Sphinx storage engine to MariaDB
CREATION DATE..: Mon, 10 Aug 2009, 23:57
SUPERVISOR.....: Monty
IMPLEMENTOR....: Bothorsen
COPIES TO......:
CATEGORY.......: Maria-BackLog
TASK ID........: 42 (http://askmonty.org/worklog/?tid=42)
VERSION........: Maria-2.0
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 16 (hours remain)
ORIG. ESTIMATE.: 16
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 02:24)=-=-
Version updated.
--- /tmp/wklog.42.old.13241 2009-09-15 02:24:07.000000000 +0300
+++ /tmp/wklog.42.new.13241 2009-09-15 02:24:07.000000000 +0300
@@ -1 +1 @@
-Connector/.NET-5.1
+Maria-2.0
DESCRIPTION:
Add the Sphinx storage engine to the MariaDB tree
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add Sphinx storage engine to MariaDB (42)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add Sphinx storage engine to MariaDB
CREATION DATE..: Mon, 10 Aug 2009, 23:57
SUPERVISOR.....: Monty
IMPLEMENTOR....: Bothorsen
COPIES TO......:
CATEGORY.......: Maria-BackLog
TASK ID........: 42 (http://askmonty.org/worklog/?tid=42)
VERSION........: Maria-2.0
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 16 (hours remain)
ORIG. ESTIMATE.: 16
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 02:24)=-=-
Version updated.
--- /tmp/wklog.42.old.13241 2009-09-15 02:24:07.000000000 +0300
+++ /tmp/wklog.42.new.13241 2009-09-15 02:24:07.000000000 +0300
@@ -1 +1 @@
-Connector/.NET-5.1
+Maria-2.0
DESCRIPTION:
Add the Sphinx storage engine to the MariaDB tree
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add Sphinx storage engine to MariaDB (42)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add Sphinx storage engine to MariaDB
CREATION DATE..: Mon, 10 Aug 2009, 23:57
SUPERVISOR.....: Monty
IMPLEMENTOR....: Bothorsen
COPIES TO......:
CATEGORY.......: Maria-BackLog
TASK ID........: 42 (http://askmonty.org/worklog/?tid=42)
VERSION........: Maria-2.0
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 16 (hours remain)
ORIG. ESTIMATE.: 16
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 02:24)=-=-
Version updated.
--- /tmp/wklog.42.old.13241 2009-09-15 02:24:07.000000000 +0300
+++ /tmp/wklog.42.new.13241 2009-09-15 02:24:07.000000000 +0300
@@ -1 +1 @@
-Connector/.NET-5.1
+Maria-2.0
DESCRIPTION:
Add the Sphinx storage engine to the MariaDB tree
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0
[Maria-developers] Updated (by Guest): Add Sphinx storage engine to MariaDB (42)
by worklog-noreply@askmonty.org 15 Sep '09
by worklog-noreply@askmonty.org 15 Sep '09
15 Sep '09
-----------------------------------------------------------------------
WORKLOG TASK
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
TASK...........: Add Sphinx storage engine to MariaDB
CREATION DATE..: Mon, 10 Aug 2009, 23:57
SUPERVISOR.....: Monty
IMPLEMENTOR....: Bothorsen
COPIES TO......:
CATEGORY.......: Maria-BackLog
TASK ID........: 42 (http://askmonty.org/worklog/?tid=42)
VERSION........: Maria-2.0
STATUS.........: Un-Assigned
PRIORITY.......: 60
WORKED HOURS...: 0
ESTIMATE.......: 16 (hours remain)
ORIG. ESTIMATE.: 16
PROGRESS NOTES:
-=-=(Guest - Tue, 15 Sep 2009, 02:24)=-=-
Version updated.
--- /tmp/wklog.42.old.13241 2009-09-15 02:24:07.000000000 +0300
+++ /tmp/wklog.42.new.13241 2009-09-15 02:24:07.000000000 +0300
@@ -1 +1 @@
-Connector/.NET-5.1
+Maria-2.0
DESCRIPTION:
Add the Sphinx storage engine to the MariaDB tree
ESTIMATED WORK TIME
ESTIMATED COMPLETION DATE
-----------------------------------------------------------------------
WorkLog (v3.5.9)
1
0